98 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			V
		
	
	
module arrays
 | 
						|
 | 
						|
import rand
 | 
						|
 | 
						|
fn test_min() {
 | 
						|
	a := [8, 2, 6, 4]
 | 
						|
	assert min<int>(a)==2
 | 
						|
	assert min<int>(a[2..])==4
 | 
						|
	
 | 
						|
	b := [f32(5.1), 3.1, 1.1, 9.1]
 | 
						|
	assert min<f32>(b) == f32(1.1)
 | 
						|
	assert min<f32>(b[..2]) == f32(3.1)
 | 
						|
	
 | 
						|
	c := [byte(4), 9, 3, 1]
 | 
						|
	assert min<byte>(c) == byte(1)
 | 
						|
	assert min<byte>(c[..3]) == byte(3)
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
fn test_max() {
 | 
						|
	a := [8, 2, 6, 4]
 | 
						|
	assert max<int>(a)==8
 | 
						|
	assert max<int>(a[1..])==6
 | 
						|
	
 | 
						|
	b := [f32(5.1), 3.1, 1.1, 9.1]
 | 
						|
	assert max<f32>(b) == f32(9.1)
 | 
						|
	assert max<f32>(b[..3]) == f32(5.1)
 | 
						|
	
 | 
						|
	c := [byte(4), 9, 3, 1]
 | 
						|
	assert max<byte>(c) == byte(9)
 | 
						|
	assert max<byte>(c[2..]) == byte(3)
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
fn test_idx_min() {
 | 
						|
	a := [8, 2, 6, 4]
 | 
						|
	assert idx_min<int>(a)==1
 | 
						|
	
 | 
						|
	b := [f32(5.1), 3.1, 1.1, 9.1]
 | 
						|
	assert idx_min<f32>(b) == 2
 | 
						|
	
 | 
						|
	c := [byte(4), 9, 3, 1]
 | 
						|
	assert idx_min<byte>(c) == 3
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
fn test_idx_max() {
 | 
						|
	a := [8, 2, 6, 4]
 | 
						|
	assert idx_max<int>(a)==0
 | 
						|
	
 | 
						|
	b := [f32(5.1), 3.1, 1.1, 9.1]
 | 
						|
	assert idx_max<f32>(b) == 3
 | 
						|
	
 | 
						|
	c := [byte(4), 9, 3, 1]
 | 
						|
	assert idx_max<byte>(c) == 1
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
fn test_shuffle() {
 | 
						|
	rand.seed([u32(1),2]) // set seed to produce same results in order
 | 
						|
 | 
						|
	a := [1,2,3,4,5,6,7,8,9,10]
 | 
						|
	mut b := a.clone()
 | 
						|
	mut c := a.clone()
 | 
						|
	shuffle<int>(mut b, 0)
 | 
						|
	shuffle<int>(mut c, 0)
 | 
						|
	assert b == [6, 4, 5, 1, 9, 2, 10, 3, 8, 7]
 | 
						|
	assert c == [1, 6, 5, 8, 7, 2, 10, 9, 3, 4]
 | 
						|
 | 
						|
	// test shuffling a slice
 | 
						|
	mut d := a.clone()
 | 
						|
	shuffle<int>(mut d[..5], 0)
 | 
						|
	assert d == [5, 2, 1, 3, 4, 6, 7, 8, 9, 10]
 | 
						|
	assert d[5..] == a[5..]
 | 
						|
 | 
						|
	// test shuffling n items
 | 
						|
	mut e := a.clone()
 | 
						|
	shuffle<int>(mut e, 5)
 | 
						|
	assert e[..5] == [10, 3, 1, 8, 4]
 | 
						|
	assert e[5..] == [6, 7, 5, 9, 2]
 | 
						|
 | 
						|
	// test shuffling empty array
 | 
						|
	mut f := a[..0]
 | 
						|
	shuffle<int>(mut f,0)
 | 
						|
	assert f == []int{}
 | 
						|
}
 | 
						|
 | 
						|
fn test_merge() {
 | 
						|
	a := [1,3,5,5,7]
 | 
						|
	b := [2,4,4,5,6,8]
 | 
						|
	c := []int{}
 | 
						|
	d := []int{}
 | 
						|
	assert merge<int>(a,b) == [1,2,3,4,4,5,5,5,6,7,8]
 | 
						|
	assert merge<int>(c,d) == []
 | 
						|
	assert merge<int>(a,c) == a
 | 
						|
	assert merge<int>(d,b) == b
 | 
						|
}
 |