Esempio n. 1
0
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();
}
Esempio n. 2
0
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();
}