From e4bab694671bec8653eb06f787e79d4548cc3bf6 Mon Sep 17 00:00:00 2001 From: "Koine Yuusuke(koinec)" Date: Mon, 7 Oct 2019 20:58:59 +0900 Subject: [PATCH] (LibGoblin) * Tested: ObjectInfo_InsetObjectInfo() - INSETMODE_CHKNAME tested. --- libgoblin/drd64_libgoblin_objinfo.c | 9 +- libgoblin/test_libgoblin_objinfo.c | 210 ++++++++++++++++++------------------ 2 files changed, 114 insertions(+), 105 deletions(-) diff --git a/libgoblin/drd64_libgoblin_objinfo.c b/libgoblin/drd64_libgoblin_objinfo.c index 2b07af2..831c26a 100644 --- a/libgoblin/drd64_libgoblin_objinfo.c +++ b/libgoblin/drd64_libgoblin_objinfo.c @@ -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; diff --git a/libgoblin/test_libgoblin_objinfo.c b/libgoblin/test_libgoblin_objinfo.c index d5668e7..d90a429 100644 --- a/libgoblin/test_libgoblin_objinfo.c +++ b/libgoblin/test_libgoblin_objinfo.c @@ -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 ); -- 2.11.0