OSDN Git Service

(LibGoblin)
authorKoine Yuusuke(koinec) <koinec@users.osdn.me>
Mon, 7 Oct 2019 11:58:59 +0000 (20:58 +0900)
committerKoine Yuusuke(koinec) <koinec@users.osdn.me>
Mon, 7 Oct 2019 11:58:59 +0000 (20:58 +0900)
  * Tested: ObjectInfo_InsetObjectInfo() - INSETMODE_CHKNAME tested.

libgoblin/drd64_libgoblin_objinfo.c
libgoblin/test_libgoblin_objinfo.c

index 2b07af2..831c26a 100644 (file)
@@ -454,7 +454,7 @@ LibGoblin_ObjectInfo *
        if( NO_OBJ == p_parent->grplink.i_child_topid ) {
                p_parent->grplink.i_child_topid = p_objinfo->i_id;
                p_objinfo->grplink.i_parent_id  = p_parent->i_id;
-               goto    goto_ObjectInfo_InsetObject_post;
+               goto    goto_ObjectInfo_InsetObject_nameset;
        }
 
        assert( NO_OBJ != p_parent->grplink.i_child_topid );
@@ -487,7 +487,7 @@ LibGoblin_ObjectInfo *
 
        // Check & Slaving ObjectInfo **************************************
        if( OBJINFO_INSETMODE_ADOPT != ( OBJINFO_INSETMODE_ADOPT & b_mode ))
-               { goto  goto_ObjectInfo_InsetObject_post; }
+               { goto  goto_ObjectInfo_InsetObject_nameset; }
 
        p_objnow        = ((NO_OBJ != p_objinfo->grplink.i_next_id )
                                                        ? OBJINFO( p_pginfo, p_objinfo->grplink.i_next_id ) : NULL );
@@ -503,6 +503,11 @@ LibGoblin_ObjectInfo *
                p_objnow        = p_objnext;
        }
 
+goto_ObjectInfo_InsetObject_nameset:
+       if(( NULL != pstr_name ) && ( NULL == p_objinfo->pstr_name ))   {
+               p_objinfo->dw_hash              = dw_hash;
+               p_objinfo->pstr_name    = pstr_name;
+       }
 
 goto_ObjectInfo_InsetObject_post:
        return p_objinfo;
index d5668e7..d90a429 100644 (file)
@@ -759,174 +759,178 @@ void Test_ObjectInfo_InsetDelete_test00_006(
 {
        LibGoblin_ObjectInfo    *p_objinfo;
 
-       // ID10: 00000000h - f0000000h
-       //   ID02: 10000000h - 20000000h
-       //     ID01: 10000000h - 10100000h
-       //   ID03: 30000000h - 40000000h
-       //   ID04: 50000000h - 60000000h
-       //   ID11: 65000000h - b5000000h
-       //     ID09: 70000000h - 80000000h
-       //       ID05: 70000000h - 70001000h
-       //     ID08: 90000000h - a0000000h
-       //       ID07: 90100000h - 90200000h
-       //         ID06: 90101000h - 90102000h
-
-
-       // Alloc ---
+       // ID05: 00000000h - f0000000h                  NULL
+       //   ID02: 10000000h - 20000000h                "function02"
+       //     ID01: 10000000h - 10100000h              "function01"
+       //   ID03: 30000000h - 40000000h                "function03"
+       //     ID07: 30000000h - 40000000h              "function03"
+       //       ID08: 30000000h - 40000000h    "function07"
+       //   ID04: 50000000h - 60000000h                NULL
+       //     ID09: 50000000h - 60000000h              "function09"
+       //   ID06: 70000000h - 70001000h                "function01"
+
+
+       // ------------------------------------------------------------------
        //     ID01: 10000000h - 10100000h
        p_objinfo       = ObjectInfo_InsetObject(
-                                                       p_pginfo, 0x10000000, 0x00100000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET,
-                                                       OBJINFO_TYPE_NONE, NULL );
+                                       p_pginfo, 0x10000000, 0x00100000, NULL,
+                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET | OBJINFO_INSETMODE_CHKNAME,
+                                       OBJINFO_TYPE_NONE, "function01" );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 1, 0, NO_OBJ, NO_OBJ, NO_OBJ );
+       CU_ASSERT( 0x00 == strncmp( p_objinfo->pstr_name, "function01", 256) );
 
        //   ID02: 10000000h - 20000000h
        p_objinfo       = ObjectInfo_InsetObject(
-                                                       p_pginfo, 0x10000000, 0x10000000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET,
-                                                       OBJINFO_TYPE_NONE, NULL );
+                                       p_pginfo, 0x10000000, 0x10000000, NULL,
+                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET | OBJINFO_INSETMODE_CHKNAME,
+                                       OBJINFO_TYPE_NONE, "function02" );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 2, 0, 1, NO_OBJ, NO_OBJ );
+       CU_ASSERT( 0x00 == strncmp( p_objinfo->pstr_name, "function02", 256) );
 
        //   ID03: 30000000h - 40000000h
        p_objinfo       = ObjectInfo_InsetObject(
-                                                       p_pginfo, 0x30000000, 0x10000000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET,
-                                                       OBJINFO_TYPE_NONE, NULL );
+                                       p_pginfo, 0x30000000, 0x10000000, NULL,
+                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET,
+                                       OBJINFO_TYPE_NONE, "function03" );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 3, 0, NO_OBJ, 2, NO_OBJ );
+       CU_ASSERT( 0x00 == strncmp( p_objinfo->pstr_name, "function03", 256) );
 
        //   ID04: 50000000h - 60000000h
        p_objinfo       = ObjectInfo_InsetObject(
-                                                       p_pginfo, 0x50000000, 0x10000000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET,
-                                                       OBJINFO_TYPE_NONE, NULL );
+                                       p_pginfo, 0x50000000, 0x10000000, NULL,
+                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET | OBJINFO_INSETMODE_CHKNAME,
+                                       OBJINFO_TYPE_NONE, NULL );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 4, 0, NO_OBJ, 3, NO_OBJ );
 
-       //       ID05: 70000000h - 70001000h
+       // ID05: 00000000h - f0000000h
        p_objinfo       = ObjectInfo_InsetObject(
-                                                       p_pginfo, 0x70000000, 0x00001000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET,
-                                                       OBJINFO_TYPE_NONE, NULL );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 5, 0, NO_OBJ, 4, NO_OBJ );
+                                       p_pginfo, 0x00000000, 0xf0000000, NULL,
+                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET,
+                                       OBJINFO_TYPE_NONE, NULL );
+       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 5, 0, 2, NO_OBJ, NO_OBJ );
 
-       //         ID06: 90101000h - 90102000h
-       p_objinfo       = ObjectInfo_InsetObject(
-                                                       p_pginfo, 0x90101000, 0x00001000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET,
-                                                       OBJINFO_TYPE_NONE, NULL );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 6, 0, NO_OBJ, 5, NO_OBJ );
 
-       //       ID07: 90100000h - 90200000h
+       // ------------------------------------------------------------------
+       //   ID06: 70000000h - 70001000h
        p_objinfo       = ObjectInfo_InsetObject(
-                                                       p_pginfo, 0x90100000, 0x00100000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET,
-                                                       OBJINFO_TYPE_NONE, NULL );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 7, 0, 6, 5, NO_OBJ );
+                                       p_pginfo, 0x70000000, 0x00001000, NULL,
+                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET | OBJINFO_INSETMODE_CHKNAME,
+                                       OBJINFO_TYPE_NONE, "function01" );
+       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 6, 5, NO_OBJ, 4, NO_OBJ );
+       CU_ASSERT( 0x00 == strncmp( p_objinfo->pstr_name, "function01", 256) );
 
-       //     ID08: 90000000h - a0000000h
+       //   ID07: 30000000h - 40000000h
        p_objinfo       = ObjectInfo_InsetObject(
-                                                       p_pginfo, 0x90000000, 0x10000000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET,
-                                                       OBJINFO_TYPE_NONE, NULL );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 8, 0, 7, 5, NO_OBJ );
+                                       p_pginfo, 0x30000000, 0x10000000, NULL,
+                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET,
+                                       OBJINFO_TYPE_NONE, "function03" );
+       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 7, 3, NO_OBJ, NO_OBJ, NO_OBJ );
+       CU_ASSERT( 0x00 == strncmp( p_objinfo->pstr_name, "function03", 256) );
 
-       //     ID09: 70000000h - 80000000h
+       //   ID08: 30000000h - 40000000h
        p_objinfo       = ObjectInfo_InsetObject(
-                                                       p_pginfo, 0x70000000, 0x10000000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET,
-                                                       OBJINFO_TYPE_NONE, NULL );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 9, 0, 5, 4, 8 );
+                                       p_pginfo, 0x30000000, 0x10000000, NULL,
+                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET | OBJINFO_INSETMODE_CHKNAME,
+                                       OBJINFO_TYPE_NONE, "function07" );
+       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 8, 7, NO_OBJ, NO_OBJ, NO_OBJ );
+       CU_ASSERT( 0x00 == strncmp( p_objinfo->pstr_name, "function07", 256) );
 
-       // ID10: 00000000h - f0000000h
+       //   ID09: 50000000h - 60000000h
        p_objinfo       = ObjectInfo_InsetObject(
-                                                       p_pginfo, 0x00000000, 0xf0000000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET,
-                                                       OBJINFO_TYPE_NONE, NULL );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 10, 0, 2, NO_OBJ, NO_OBJ );
+                                       p_pginfo, 0x50000000, 0x10000000, NULL,
+                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET | OBJINFO_INSETMODE_CHKNAME,
+                                       OBJINFO_TYPE_NONE, "function09" );
+       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 9, 4, NO_OBJ, NO_OBJ, NO_OBJ );
+       CU_ASSERT( 0x00 == strncmp( p_objinfo->pstr_name, "function09", 256) );
 
-       //   ID11: 65000000h - b5000000h
+
+       // ------------------------------------------------------------------
+       //   IDxx=03: 30000000h - 40000000h
        p_objinfo       = ObjectInfo_InsetObject(
-                                                       p_pginfo, 0x65000000, 0x50000000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET,
-                                                       OBJINFO_TYPE_NONE, NULL );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 11, 10, 9, 4, NO_OBJ );
+                                       p_pginfo, 0x30000000, 0x10000000, NULL,
+                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET | OBJINFO_INSETMODE_CHKNAME,
+                                       OBJINFO_TYPE_NONE, "function03" );
+       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 3, 5, 7, 2, 4 );
+       CU_ASSERT( 0x00 == strncmp( p_objinfo->pstr_name, "function03", 256) );
 
+       //   IDxx=09: 50000000h - 60000000h
+       p_objinfo       = ObjectInfo_InsetObject(
+                                       p_pginfo, 0x50000000, 0x10000000, NULL,
+                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET | OBJINFO_INSETMODE_CHKNAME,
+                                       OBJINFO_TYPE_NONE, "function09" );
+       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 9, 4, NO_OBJ, NO_OBJ, NO_OBJ );
+       CU_ASSERT( 0x00 == strncmp( p_objinfo->pstr_name, "function09", 256) );
 
        // Check ---
        p_objinfo       = OBJINFO( p_pginfo, 1 );
        CU_ASSERT( p_objinfo->addrlink.i_prev_id == 2 );
        CU_ASSERT( p_objinfo->addrlink.i_next_id == 3 );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 1, 2, NO_OBJ, NO_OBJ, NO_OBJ );
+       CU_ASSERT( 0x00 == strncmp( p_objinfo->pstr_name, "function01", 256) );
 
        p_objinfo       = OBJINFO( p_pginfo, 2 );
-       CU_ASSERT( p_objinfo->addrlink.i_prev_id == 10 );
+       CU_ASSERT( p_objinfo->addrlink.i_prev_id == 5 );
        CU_ASSERT( p_objinfo->addrlink.i_next_id == 1 );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 2, 10, 1, NO_OBJ, 3 );
+       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 2, 5, 1, NO_OBJ, 3 );
+       CU_ASSERT( 0x00 == strncmp( p_objinfo->pstr_name, "function02", 256) );
 
        p_objinfo       = OBJINFO( p_pginfo, 3 );
        CU_ASSERT( p_objinfo->addrlink.i_prev_id == 1 );
-       CU_ASSERT( p_objinfo->addrlink.i_next_id == 4 );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 3, 10, NO_OBJ, 2, 4 );
+       CU_ASSERT( p_objinfo->addrlink.i_next_id == 7 );
+       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 3, 5, 7, 2, 4 );
+       CU_ASSERT( 0x00 == strncmp( p_objinfo->pstr_name, "function03", 256) );
 
        p_objinfo       = OBJINFO( p_pginfo, 4 );
-       CU_ASSERT( p_objinfo->addrlink.i_prev_id == 3 );
-       CU_ASSERT( p_objinfo->addrlink.i_next_id == 11 );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 4, 10, NO_OBJ, 3, 11 );
+       CU_ASSERT( p_objinfo->addrlink.i_prev_id == 8 );
+       CU_ASSERT( p_objinfo->addrlink.i_next_id == 9);
+       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 4, 5, 9, 3, 6 );
+       CU_ASSERT( NULL == p_objinfo->pstr_name );
 
        p_objinfo       = OBJINFO( p_pginfo, 5 );
-       CU_ASSERT( p_objinfo->addrlink.i_prev_id == 9 );
-       CU_ASSERT( p_objinfo->addrlink.i_next_id == 8 );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 5, 9, NO_OBJ, NO_OBJ, NO_OBJ );
+       CU_ASSERT( p_objinfo->addrlink.i_prev_id == 0 );
+       CU_ASSERT( p_objinfo->addrlink.i_next_id == 2 );
+       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 5, 0, 2, NO_OBJ, NO_OBJ );
+       CU_ASSERT( NULL == p_objinfo->pstr_name );
 
        p_objinfo       = OBJINFO( p_pginfo, 6 );
-       CU_ASSERT( p_objinfo->addrlink.i_prev_id == 7 );
+       CU_ASSERT( p_objinfo->addrlink.i_prev_id == 9 );
        CU_ASSERT( p_objinfo->addrlink.i_next_id == NO_OBJ );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 6, 7, NO_OBJ, NO_OBJ, NO_OBJ );
+       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 6, 5, NO_OBJ, 4, NO_OBJ );
+       CU_ASSERT( 0x00 == strncmp( p_objinfo->pstr_name, "function01", 256) );
 
        p_objinfo       = OBJINFO( p_pginfo, 7 );
-       CU_ASSERT( p_objinfo->addrlink.i_prev_id == 8 );
-       CU_ASSERT( p_objinfo->addrlink.i_next_id == 6 );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 7, 8, 6, NO_OBJ, NO_OBJ );
+       CU_ASSERT( p_objinfo->addrlink.i_prev_id == 3 );
+       CU_ASSERT( p_objinfo->addrlink.i_next_id == 8 );
+       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 7, 3, 8, NO_OBJ, NO_OBJ );
+       CU_ASSERT( 0x00 == strncmp( p_objinfo->pstr_name, "function03", 256) );
 
        p_objinfo       = OBJINFO( p_pginfo, 8 );
-       CU_ASSERT( p_objinfo->addrlink.i_prev_id == 5 );
-       CU_ASSERT( p_objinfo->addrlink.i_next_id == 7 );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 8, 11, 7, 9, NO_OBJ );
+       CU_ASSERT( p_objinfo->addrlink.i_prev_id == 7 );
+       CU_ASSERT( p_objinfo->addrlink.i_next_id == 4 );
+       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 8, 7, NO_OBJ, NO_OBJ, NO_OBJ );
+       CU_ASSERT( 0x00 == strncmp( p_objinfo->pstr_name, "function07", 256) );
 
        p_objinfo       = OBJINFO( p_pginfo, 9 );
-       CU_ASSERT( p_objinfo->addrlink.i_prev_id == 11 );
-       CU_ASSERT( p_objinfo->addrlink.i_next_id == 5 );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 9, 11, 5, NO_OBJ, 8 );
-
-       p_objinfo       = OBJINFO( p_pginfo, 10 );
-       CU_ASSERT( p_objinfo->addrlink.i_prev_id == 0 );
-       CU_ASSERT( p_objinfo->addrlink.i_next_id == 2 );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 10, 0, 2, NO_OBJ, NO_OBJ );
-
-       p_objinfo       = OBJINFO( p_pginfo, 11 );
        CU_ASSERT( p_objinfo->addrlink.i_prev_id == 4 );
-       CU_ASSERT( p_objinfo->addrlink.i_next_id == 9 );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 11, 10, 9, 4, NO_OBJ );
-
+       CU_ASSERT( p_objinfo->addrlink.i_next_id == 6 );
+       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 9, 4, NO_OBJ, NO_OBJ, NO_OBJ );
+       CU_ASSERT( 0x00 == strncmp( p_objinfo->pstr_name, "function09", 256) );
 
        // Delete --- 
-       p_objinfo       = OBJINFO( p_pginfo, 11 );
-       ObjectInfo_DeleteObjectInfo( p_pginfo, p_objinfo );
-       p_objinfo       = OBJINFO( p_pginfo, 4 );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 4, 10, NO_OBJ, 3, NO_OBJ );
-
        p_objinfo       = OBJINFO( p_pginfo, 3 );
        ObjectInfo_DeleteObjectInfo( p_pginfo, p_objinfo );
-       p_objinfo       = OBJINFO( p_pginfo, 2 );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 2, 10, 1, NO_OBJ, 4 );
 
        p_objinfo       = OBJINFO( p_pginfo, 2 );
        ObjectInfo_DeleteObjectInfo( p_pginfo, p_objinfo );
-       p_objinfo       = OBJINFO( p_pginfo, 4 );
-       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 4, 10, NO_OBJ, NO_OBJ, NO_OBJ );
 
-       p_objinfo       = OBJINFO( p_pginfo, 10 );
+       p_objinfo       = OBJINFO( p_pginfo, 6 );
        ObjectInfo_DeleteObjectInfo( p_pginfo, p_objinfo );
 
+       p_objinfo       = OBJINFO( p_pginfo, 4 );
+       Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 4, 5, 9, NO_OBJ, NO_OBJ );
+
+       p_objinfo       = OBJINFO( p_pginfo, 5 );
+       ObjectInfo_DeleteObjectInfo( p_pginfo, p_objinfo );
 
        // Delete MasterObject ---
        p_objinfo       = OBJINFO( p_pginfo, 0 );