43 lines
		
	
	
		
			1000 B
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1000 B
		
	
	
	
		
			V
		
	
	
module main
 | 
						|
import forkedtest
 | 
						|
 | 
						|
struct SimpleEmptyStruct{
 | 
						|
}
 | 
						|
 | 
						|
struct NonEmptyStruct{
 | 
						|
  x int
 | 
						|
  y int
 | 
						|
  z int
 | 
						|
}
 | 
						|
 | 
						|
fn check_simple_empty_struct(){  
 | 
						|
  s := SimpleEmptyStruct{}
 | 
						|
  addr_s := &s
 | 
						|
  str_addr_s := ptr_str( addr_s )
 | 
						|
  assert !isnil(addr_s)
 | 
						|
  assert str_addr_s.len > 3
 | 
						|
  println(str_addr_s)
 | 
						|
}
 | 
						|
 | 
						|
fn check_non_empty_struct(){  
 | 
						|
  a := NonEmptyStruct{1,2,3}
 | 
						|
  b := NonEmptyStruct{4,5,6}
 | 
						|
  assert sizeof(NonEmptyStruct) > 0
 | 
						|
  assert sizeof(SimpleEmptyStruct) < sizeof(NonEmptyStruct)
 | 
						|
  assert a.x == 1
 | 
						|
  assert a.y == 2
 | 
						|
  assert a.z == 3
 | 
						|
  assert b.x + b.y + b.z == 15
 | 
						|
  assert ptr_str(&a) != ptr_str(&b)
 | 
						|
  println('sizeof SimpleEmptyStruct:' + i64_str( sizeof(SimpleEmptyStruct) , 10 ))
 | 
						|
  println('sizeof NonEmptyStruct:' + i64_str( sizeof(NonEmptyStruct) , 10 ))
 | 
						|
}
 | 
						|
 | 
						|
fn main(){
 | 
						|
	mut fails := 0
 | 
						|
	fails += forkedtest.normal_run(check_simple_empty_struct, "check_simple_empty_struct")
 | 
						|
	fails += forkedtest.normal_run(check_non_empty_struct,    "check_non_empty_struct")
 | 
						|
	assert fails == 0
 | 
						|
	sys_exit(0)
 | 
						|
}
 |