57 lines
		
	
	
		
			893 B
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			893 B
		
	
	
	
		
			V
		
	
	
struct A{
 | 
						|
mut: 
 | 
						|
	val int 
 | 
						|
	nums []int 
 | 
						|
} 
 | 
						|
 | 
						|
struct B{
 | 
						|
mut: 
 | 
						|
	a A 
 | 
						|
} 
 | 
						|
 | 
						|
struct C {
 | 
						|
mut: 
 | 
						|
	b B 
 | 
						|
	nums []int 
 | 
						|
	aarr []A 
 | 
						|
	num int 
 | 
						|
} 
 | 
						|
 | 
						|
struct User {
 | 
						|
	name string
 | 
						|
	age int 
 | 
						|
} 
 | 
						|
 
 | 
						|
fn test_struct_levels() { 
 | 
						|
	mut c := C{} 
 | 
						|
	assert c.nums.len == 0 
 | 
						|
	c.nums << 3 
 | 
						|
	assert c.nums.len == 1 
 | 
						|
	assert c.nums[0] == 3 
 | 
						|
	c.nums[0] = 4 
 | 
						|
	assert c.nums[0] == 4 
 | 
						|
	c.b.a.val = 34 
 | 
						|
	assert c.b.a.val == 34 
 | 
						|
	c.b.a.nums = [0;0] 
 | 
						|
	c.b.a.nums << 0 
 | 
						|
	c.b.a.nums << 2 
 | 
						|
	assert c.b.a.nums.len == 2 
 | 
						|
	assert c.b.a.nums[0] == 0 
 | 
						|
	assert c.b.a.nums[1] == 2 
 | 
						|
	c.b.a.nums [0] = 7 
 | 
						|
	assert c.b.a.nums[0] == 7 
 | 
						|
	c.aarr << A{val:8} 
 | 
						|
	assert c.aarr.len == 1 
 | 
						|
	assert c.aarr[0].val == 8 
 | 
						|
	c.num = 20 
 | 
						|
	assert c.num == 20 
 | 
						|
	c.aarr[0].val  = 10 
 | 
						|
	assert c.aarr[0].val == 10 
 | 
						|
} 
 | 
						|
 | 
						|
fn test_struct_str() {
 | 
						|
	u := User{'Bob', 30} 
 | 
						|
	println(u)  // make sure the struct is printable 
 | 
						|
	// assert u.str() == '{name:"Bob", age:30}'  // TODO 
 | 
						|
} 
 |