| 
									
										
										
										
											2025-02-11 17:43:46 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include <hawk-json.h>
 | 
					
						
							| 
									
										
										
										
											2025-06-08 21:51:11 +09:00
										 |  |  | #include <hawk-str.h>
 | 
					
						
							| 
									
										
										
										
											2025-02-11 17:43:46 +09:00
										 |  |  | #include <stdio.h>
 | 
					
						
							|  |  |  | #include "tap.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-08 21:51:11 +09:00
										 |  |  | #define OK_X(test) OK(test, #test)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-02-11 17:43:46 +09:00
										 |  |  | static int on_json_element (hawk_json_t* json, hawk_json_inst_t inst, const hawk_oocs_t* str) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2025-06-08 21:51:11 +09:00
										 |  |  | 	static int phase = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (phase == 0) OK_X(inst == HAWK_JSON_INST_START_DIC); | 
					
						
							|  |  |  | 	if (phase == 1) | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		OK_X(inst == HAWK_JSON_INST_KEY); | 
					
						
							|  |  |  | 		OK_X(hawk_comp_oochars_bcstr(str->ptr, str->len, "hello", 0) == 0); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if (phase == 2) | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		OK_X(inst == HAWK_JSON_INST_STRING); | 
					
						
							|  |  |  | 		OK_X(hawk_comp_oochars_bcstr(str->ptr, str->len, "world", 0) == 0); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if (phase == 3) | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		OK_X(inst == HAWK_JSON_INST_KEY); | 
					
						
							|  |  |  | 		OK_X(hawk_comp_oochars_bcstr(str->ptr, str->len, "key1", 0) == 0); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if (phase == 4) | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		OK_X(inst == HAWK_JSON_INST_NUMBER); | 
					
						
							|  |  |  | 		OK_X(hawk_comp_oochars_bcstr(str->ptr, str->len, "12345", 0) == 0); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if (phase == 5) OK_X(inst == HAWK_JSON_INST_END_DIC); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	phase++; | 
					
						
							| 
									
										
										
										
											2025-02-11 17:43:46 +09:00
										 |  |  | 	return 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int main () | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	hawk_json_t* json; | 
					
						
							|  |  |  | 	hawk_json_prim_t prim; | 
					
						
							| 
									
										
										
										
											2025-06-08 21:51:11 +09:00
										 |  |  | 	hawk_oow_t xlen; | 
					
						
							|  |  |  | 	int n; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-02-11 17:43:46 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	no_plan(); | 
					
						
							|  |  |  | 	prim.instcb = on_json_element; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	json = hawk_json_openstd(0, &prim, HAWK_NULL); | 
					
						
							|  |  |  | 	OK (json != HAWK_NULL, "instantiation must be successful"); | 
					
						
							| 
									
										
										
										
											2025-06-03 21:53:33 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-08 21:51:11 +09:00
										 |  |  | 	n = hawk_json_feed(json, HAWK_T("{\"hello\": \"world\", \"key1\": 12345}"), 33, &xlen); | 
					
						
							|  |  |  | 	OK_X(n == 0); | 
					
						
							|  |  |  | 	OK_X(xlen == 33); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-02-11 17:43:46 +09:00
										 |  |  | 	hawk_json_close(json);	 | 
					
						
							|  |  |  | 	return exit_status(); | 
					
						
							|  |  |  | } |