65 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #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);
 | |
| 	HAWK::Hawk::Value vx(rtx);
 | |
| 	hawk_int_t vvx;
 | |
| 
 | |
| 	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);
 | |
| 	// 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);
 | |
| 
 | |
| 	// i must not call hawk.close() to ensure that v is destroyed first.
 | |
| 	//hawk.close();
 | |
| }
 | |
| 
 | |
| int main()
 | |
| {
 | |
| 	no_plan ();
 | |
| 
 | |
| 	test1();
 | |
| 
 | |
| 	return exit_status();
 | |
| }
 | |
| 
 |