void t17_merge(){ INIT_LOCAL(); onion_dict *a=onion_dict_from_json("{\"hello\":\"world\"}"); onion_dict *b=onion_dict_from_json("{\"bye\":\"_world_\", \"sub\": { \"hello\": \"world!\" } }"); onion_dict_merge(a,b); FAIL_IF_NOT_EQUAL_STR(onion_dict_get(a,"bye"), "_world_"); FAIL_IF_NOT_EQUAL_STR(onion_dict_rget(a,"sub","hello",NULL), "world!"); onion_dict_free(b); FAIL_IF_NOT_EQUAL_STR(onion_dict_rget(a,"sub","hello",NULL), "world!"); onion_dict_free(a); END_LOCAL(); }
void t13_dict_rget(){ INIT_LOCAL(); onion_dict *A=onion_dict_new(); onion_dict *B=onion_dict_new(); onion_dict *C=onion_dict_new(); onion_dict *D=onion_dict_new(); int i; for (i=0;i<16;i++){ char tmp[9]; sprintf(tmp,"%08X",rand()); onion_dict_add(A, tmp, tmp, OD_DUP_ALL); sprintf(tmp,"%08X",rand()); onion_dict_add(B, tmp, tmp, OD_DUP_ALL); sprintf(tmp,"%08X",rand()); onion_dict_add(C, tmp, tmp, OD_DUP_ALL); sprintf(tmp,"%08X",rand()); onion_dict_add(D, tmp, tmp, OD_DUP_ALL); } onion_dict_add(A, "B", B, OD_DICT|OD_FREE_VALUE); onion_dict_add(A, "C", C, OD_DICT|OD_FREE_VALUE); onion_dict_add(A, "D", D, OD_DICT|OD_FREE_VALUE); onion_dict_add(B, "C", C, OD_DICT); onion_dict_add(C, "a", "hello", 0); FAIL_IF_NOT_EQUAL(onion_dict_rget(A, "B", NULL), NULL); FAIL_IF_NOT_EQUAL(onion_dict_rget(A, "C", NULL), NULL); FAIL_IF_NOT_EQUAL(onion_dict_rget(A, "B", "C", NULL), NULL); FAIL_IF_NOT_EQUAL(onion_dict_rget_dict(A, "B", NULL), B); FAIL_IF_NOT_EQUAL(onion_dict_rget_dict(A, "C", NULL), C); FAIL_IF_NOT_EQUAL(onion_dict_rget_dict(A, "B", "C", NULL), C); FAIL_IF_NOT_EQUAL_STR(onion_dict_rget(A, "B", "C", "a", NULL), "hello"); FAIL_IF_NOT_EQUAL(onion_dict_rget_dict(A, "B", "C", "a", NULL), NULL); // This should remove all the others, as they hang from it. onion_dict_free(A); END_LOCAL(); }