@@ -1335,6 +1335,66 @@ static void test_get_subset_info(void)
13351335 rc_client_destroy (g_client );
13361336}
13371337
1338+ static void rc_client_external_destroy_subset_list (rc_client_subset_list_info_t * list )
1339+ {
1340+ g_external_event = "destroyed" ;
1341+ free (list );
1342+ }
1343+
1344+ static rc_client_subset_list_info_t * rc_client_external_create_subset_list_v6 ()
1345+ {
1346+ rc_client_subset_list_info_t * list ;
1347+
1348+ list = (rc_client_subset_list_info_t * )calloc (1 , sizeof (* list ) + sizeof (rc_client_subset_t * ) * 2 );
1349+ if (list ) {
1350+ const rc_client_subset_t * * subset ;
1351+ rc_client_subset_t * mutable_subset ;
1352+ list -> public_ .num_subsets = 2 ;
1353+ list -> public_ .subsets = subset = (const rc_client_subset_t * * )((uint8_t * )list + sizeof (* list ));
1354+ * subset ++ = rc_client_external_get_subset_info_v3 (1111 );
1355+ * subset = rc_client_external_get_subset_info_v3 (2345 );
1356+ mutable_subset = (rc_client_subset_t * )* subset ;
1357+ mutable_subset -> title = "Bonus" ;
1358+ mutable_subset -> num_achievements = 1 ;
1359+ mutable_subset -> num_leaderboards = 0 ;
1360+
1361+ list -> destroy_func = rc_client_external_destroy_subset_list ;
1362+ }
1363+
1364+ return list ;
1365+ }
1366+
1367+ static void test_create_subset_list (void )
1368+ {
1369+ rc_client_subset_list_t * list ;
1370+
1371+ g_client = mock_client_with_external ();
1372+ g_client -> state .external_client -> create_subset_list = rc_client_external_create_subset_list_v6 ;
1373+
1374+ list = rc_client_create_subset_list (g_client );
1375+ ASSERT_PTR_NOT_NULL (list );
1376+ ASSERT_NUM_EQUALS (list -> num_subsets , 2 );
1377+ ASSERT_PTR_NOT_NULL (list -> subsets );
1378+ ASSERT_NUM_EQUALS (list -> subsets [0 ]-> id , 1111 );
1379+ ASSERT_STR_EQUALS (list -> subsets [0 ]-> title , "Subset Title" );
1380+ ASSERT_STR_EQUALS (list -> subsets [0 ]-> badge_name , "BDG001" );
1381+ ASSERT_NUM_EQUALS (list -> subsets [0 ]-> num_achievements , 2 );
1382+ ASSERT_NUM_EQUALS (list -> subsets [0 ]-> num_leaderboards , 1 );
1383+ ASSERT_STR_EQUALS (list -> subsets [0 ]-> badge_url , "/Badge/BDG001.png" );
1384+ ASSERT_NUM_EQUALS (list -> subsets [1 ]-> id , 2345 );
1385+ ASSERT_STR_EQUALS (list -> subsets [1 ]-> title , "Bonus" );
1386+ ASSERT_STR_EQUALS (list -> subsets [1 ]-> badge_name , "BDG001" );
1387+ ASSERT_NUM_EQUALS (list -> subsets [1 ]-> num_achievements , 1 );
1388+ ASSERT_NUM_EQUALS (list -> subsets [1 ]-> num_leaderboards , 0 );
1389+ ASSERT_STR_EQUALS (list -> subsets [1 ]-> badge_url , "/Badge/BDG001.png" );
1390+
1391+ rc_client_destroy_subset_list (list );
1392+
1393+ ASSERT_STR_EQUALS (g_external_event , "destroyed" );
1394+
1395+ rc_client_destroy (g_client );
1396+ }
1397+
13381398static void test_unload_game (void )
13391399{
13401400 g_client = mock_client_with_external ();
@@ -2068,6 +2128,7 @@ void test_client_external(void) {
20682128 TEST (test_v3_subset_field_offsets );
20692129 TEST (test_get_subset_info_v1 );
20702130 TEST (test_get_subset_info );
2131+ TEST (test_create_subset_list );
20712132
20722133 /* achievements */
20732134 TEST (test_v1_achievement_field_offsets );
0 commit comments