| 
									
										
										
										
											2025-07-06 13:01:28 +09:00
										 |  |  | #include <Hawk.hpp>
 | 
					
						
							|  |  |  | #include <stdio.h>
 | 
					
						
							|  |  |  | #include "tap.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define OK_X(test) OK(test, #test)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static void test1() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	HAWK::HawkStd hawk; | 
					
						
							|  |  |  | 	HAWK::Hawk::Run* rtx; | 
					
						
							|  |  |  | 	int n; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	n = hawk.open(); | 
					
						
							|  |  |  | 	OK_X(n == 0); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	HAWK::HawkStd::SourceString in("BEGIN{}"); | 
					
						
							|  |  |  | 	rtx = hawk.parse(in, HAWK::Hawk::Source::NONE); | 
					
						
							|  |  |  | 	OK_X(rtx != HAWK_NULL); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	HAWK::Hawk::Value v(rtx); | 
					
						
							|  |  |  | 	HAWK::Hawk::Value vi(rtx); | 
					
						
							| 
									
										
										
										
											2025-07-06 16:29:52 +09:00
										 |  |  | 	HAWK::Hawk::Value vx(rtx); | 
					
						
							|  |  |  | 	hawk_int_t vvx; | 
					
						
							| 
									
										
										
										
											2025-07-06 13:01:28 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	vi.setInt(1010); | 
					
						
							|  |  |  | 	OK_X(vi.getType() == HAWK_VAL_INT); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	v.setMbs("hello", 5); | 
					
						
							|  |  |  | 	OK_X(v.getType() == HAWK_VAL_MBS); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	v.setArrayedVal(4, vi); | 
					
						
							|  |  |  | 	OK_X(v.getType() == HAWK_VAL_ARR); | 
					
						
							|  |  |  | 	OK_X(v.getArrayedSize() == 5); | 
					
						
							|  |  |  | 	OK_X(v.getArrayedLength() == 1); | 
					
						
							| 
									
										
										
										
											2025-07-06 16:29:52 +09:00
										 |  |  | 	// no way to know the capacity as it's internally set
 | 
					
						
							|  |  |  | 	OK_X(v.getArrayed(4, &vx) == 0); | 
					
						
							|  |  |  | 	OK_X(vx.getType() == HAWK_VAL_INT && vx.getInt(&vvx) == 0); | 
					
						
							|  |  |  | 	OK_X(vvx == 1010); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	OK_X(v.scaleArrayed(10) == 0); | 
					
						
							|  |  |  | 	OK_X(v.getType() == HAWK_VAL_ARR); | 
					
						
							|  |  |  | 	OK_X(v.getArrayedSize() == 5); | 
					
						
							|  |  |  | 	OK_X(v.getArrayedLength() == 1); | 
					
						
							|  |  |  | 	OK_X(v.getArrayedCapa() == 10); // capacity must be known after it's set explicitly set
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	HAWK::Hawk::Value x(rtx); | 
					
						
							|  |  |  | 	OK_X(x.scaleArrayed(3) == 0); | 
					
						
							|  |  |  | 	OK_X(x.getArrayedSize() == 0); | 
					
						
							|  |  |  | 	OK_X(x.getArrayedLength() == 0); | 
					
						
							|  |  |  | 	OK_X(x.getArrayedCapa() == 3); | 
					
						
							| 
									
										
										
										
											2025-07-06 13:01:28 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// i must not call hawk.close() to ensure that v is destroyed first.
 | 
					
						
							|  |  |  | 	//hawk.close();
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int main() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	no_plan (); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	test1(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return exit_status(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 |