tests: supplement tests for different types of generic parameters (#12432)
							parent
							
								
									a4c57ba56e
								
							
						
					
					
						commit
						6f55439930
					
				|  | @ -14,10 +14,14 @@ fn (p1 Point) + (p2 Point) Point { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_generic_arrays_sum() { | fn test_generic_arrays_sum() { | ||||||
| 	ret := arrays.sum<Point>([Point{ x: 1, y: 1 }, Point{ | 	ret1 := arrays.sum<Point>([Point{ x: 1, y: 1 }, Point{ | ||||||
| 		x: 2 | 		x: 2 | ||||||
| 		y: 2 | 		y: 2 | ||||||
| 	}]) or { Point{} } | 	}]) or { Point{} } | ||||||
| 	println(ret) | 	println(ret1) | ||||||
| 	assert ret == Point{3, 3} | 	assert ret1 == Point{3, 3} | ||||||
|  | 
 | ||||||
|  | 	ret2 := arrays.sum<int>([1, 2, 3, 4]) or { 0 } | ||||||
|  | 	println(ret2) | ||||||
|  | 	assert ret2 == 10 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -7,10 +7,35 @@ fn g_array<T>(mut a []T) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_array() { | fn test_array() { | ||||||
| 	mut a := [7, 8] | 	// []int
 | ||||||
| 	r := f_array(a) | 	mut a1 := [7, 8] | ||||||
| 	assert r == 7 | 	r1 := f_array(a1) | ||||||
|  | 	assert r1 == 7 | ||||||
| 
 | 
 | ||||||
| 	g_array(mut a) | 	g_array(mut a1) | ||||||
| 	assert a[0] == 8 | 	assert a1[0] == 8 | ||||||
|  | 
 | ||||||
|  | 	// []f64
 | ||||||
|  | 	mut a2 := [1.1, 2.2] | ||||||
|  | 	r2 := f_array(a2) | ||||||
|  | 	assert r2 == 1.1 | ||||||
|  | 
 | ||||||
|  | 	g_array(mut a2) | ||||||
|  | 	assert a2[0] == 2.2 | ||||||
|  | 
 | ||||||
|  | 	// []string
 | ||||||
|  | 	mut a3 := ['aa', 'bb'] | ||||||
|  | 	r3 := f_array(a3) | ||||||
|  | 	assert r3 == 'aa' | ||||||
|  | 
 | ||||||
|  | 	g_array(mut a3) | ||||||
|  | 	assert a3[0] == 'bb' | ||||||
|  | 
 | ||||||
|  | 	// []bool
 | ||||||
|  | 	mut a4 := [true, false] | ||||||
|  | 	r4 := f_array(a4) | ||||||
|  | 	assert r4 == true | ||||||
|  | 
 | ||||||
|  | 	g_array(mut a4) | ||||||
|  | 	assert a4[0] == false | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -6,4 +6,6 @@ fn g<T>(arr []T) { | ||||||
| 
 | 
 | ||||||
| fn test_generic_array_append() { | fn test_generic_array_append() { | ||||||
| 	g([1, 2, 3]) | 	g([1, 2, 3]) | ||||||
|  | 	g([1.1, 2.2, 3.3]) | ||||||
|  | 	g(['aa', 'bb', 'cc']) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -27,22 +27,63 @@ fn (mut s Set<T>) remove<T>(value T) bool { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_generics_array_delete() { | fn test_generics_array_delete() { | ||||||
| 	mut set := Set<int>{} | 	// int
 | ||||||
|  | 	mut set1 := Set<int>{} | ||||||
| 
 | 
 | ||||||
| 	mut added := set.add(4) | 	mut added := set1.add(4) | ||||||
| 	println(added) | 	println(added) | ||||||
| 	assert added | 	assert added | ||||||
| 
 | 
 | ||||||
| 	added = set.add(3) | 	added = set1.add(3) | ||||||
| 	println(added) | 	println(added) | ||||||
| 	assert added | 	assert added | ||||||
| 
 | 
 | ||||||
| 	added = set.add(3) | 	added = set1.add(3) | ||||||
| 	println(added) | 	println(added) | ||||||
| 	assert !added | 	assert !added | ||||||
| 
 | 
 | ||||||
| 	println(set) | 	println(set1) | ||||||
| 	mut removed := set.remove(4) | 	mut removed := set1.remove(4) | ||||||
|  | 	println(removed) | ||||||
|  | 	assert removed | ||||||
|  | 
 | ||||||
|  | 	// f64
 | ||||||
|  | 	mut set2 := Set<f64>{} | ||||||
|  | 
 | ||||||
|  | 	added = set2.add(4.4) | ||||||
|  | 	println(added) | ||||||
|  | 	assert added | ||||||
|  | 
 | ||||||
|  | 	added = set2.add(3.3) | ||||||
|  | 	println(added) | ||||||
|  | 	assert added | ||||||
|  | 
 | ||||||
|  | 	added = set2.add(3.3) | ||||||
|  | 	println(added) | ||||||
|  | 	assert !added | ||||||
|  | 
 | ||||||
|  | 	println(set2) | ||||||
|  | 	removed = set2.remove(4.4) | ||||||
|  | 	println(removed) | ||||||
|  | 	assert removed | ||||||
|  | 
 | ||||||
|  | 	// string
 | ||||||
|  | 	mut set3 := Set<string>{} | ||||||
|  | 
 | ||||||
|  | 	added = set3.add('aaa') | ||||||
|  | 	println(added) | ||||||
|  | 	assert added | ||||||
|  | 
 | ||||||
|  | 	added = set3.add('bbb') | ||||||
|  | 	println(added) | ||||||
|  | 	assert added | ||||||
|  | 
 | ||||||
|  | 	added = set3.add('bbb') | ||||||
|  | 	println(added) | ||||||
|  | 	assert !added | ||||||
|  | 
 | ||||||
|  | 	println(set3) | ||||||
|  | 	removed = set3.remove('aaa') | ||||||
| 	println(removed) | 	println(removed) | ||||||
| 	assert removed | 	assert removed | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -7,7 +7,19 @@ fn (s Abc<T>) get_value() T { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_generics_method_on_receiver_types() { | fn test_generics_method_on_receiver_types() { | ||||||
| 	s := Abc<string>{'hello'} | 	s1 := Abc<string>{'hello'} | ||||||
| 	println(s.get_value()) | 	println(s1.get_value()) | ||||||
| 	assert s.get_value() == 'hello' | 	assert s1.get_value() == 'hello' | ||||||
|  | 
 | ||||||
|  | 	s2 := Abc<int>{22} | ||||||
|  | 	println(s2.get_value()) | ||||||
|  | 	assert s2.get_value() == 22 | ||||||
|  | 
 | ||||||
|  | 	s3 := Abc<f64>{1.1} | ||||||
|  | 	println(s3.get_value()) | ||||||
|  | 	assert s3.get_value() == 1.1 | ||||||
|  | 
 | ||||||
|  | 	s4 := Abc<bool>{true} | ||||||
|  | 	println(s4.get_value()) | ||||||
|  | 	assert s4.get_value() == true | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -9,7 +9,19 @@ fn (g Gen<G>) str() string { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_generics_method_str_overload() { | fn test_generics_method_str_overload() { | ||||||
| 	mut g := Gen<string>{'Gen', 0, 10} | 	mut g1 := Gen<string>{'aaa', 0, 10} | ||||||
| 	println(g) | 	println(g1) | ||||||
| 	assert '$g' == 'Gen<G> 0, Gen, 10.' | 	assert '$g1' == 'Gen<G> 0, aaa, 10.' | ||||||
|  | 
 | ||||||
|  | 	mut g2 := Gen<int>{22, 0, 10} | ||||||
|  | 	println(g2) | ||||||
|  | 	assert '$g2' == 'Gen<G> 0, 22, 10.' | ||||||
|  | 
 | ||||||
|  | 	mut g3 := Gen<f64>{2.22, 0, 10} | ||||||
|  | 	println(g3) | ||||||
|  | 	assert '$g3' == 'Gen<G> 0, 2.22, 10.' | ||||||
|  | 
 | ||||||
|  | 	mut g4 := Gen<bool>{true, 0, 10} | ||||||
|  | 	println(g4) | ||||||
|  | 	assert '$g4' == 'Gen<G> 0, true, 10.' | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -14,12 +14,39 @@ fn (mut b Bar<T>) add(v T) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn test_nested_generics_struct_init() { | fn test_nested_generics_struct_init() { | ||||||
| 	mut bar := Bar<string>{} | 	mut bar1 := Bar<string>{} | ||||||
| 	bar.add('bar') | 	bar1.add('bar') | ||||||
| 	println(bar) | 	println(bar1) | ||||||
| 
 | 
 | ||||||
| 	result := '$bar' | 	result1 := '$bar1' | ||||||
| 	assert result.contains('Bar<string>{') | 	assert result1.contains('Bar<string>{') | ||||||
| 	assert result.contains('foos: [Foo<string>{') | 	assert result1.contains('foos: [Foo<string>{') | ||||||
| 	assert result.contains("foo: 'bar'") | 	assert result1.contains("foo: 'bar'") | ||||||
|  | 
 | ||||||
|  | 	mut bar2 := Bar<int>{} | ||||||
|  | 	bar2.add(22) | ||||||
|  | 	println(bar2) | ||||||
|  | 
 | ||||||
|  | 	result2 := '$bar2' | ||||||
|  | 	assert result2.contains('Bar<int>{') | ||||||
|  | 	assert result2.contains('foos: [Foo<int>{') | ||||||
|  | 	assert result2.contains('foo: 22') | ||||||
|  | 
 | ||||||
|  | 	mut bar3 := Bar<f64>{} | ||||||
|  | 	bar3.add(2.2) | ||||||
|  | 	println(bar3) | ||||||
|  | 
 | ||||||
|  | 	result3 := '$bar3' | ||||||
|  | 	assert result3.contains('Bar<f64>{') | ||||||
|  | 	assert result3.contains('foos: [Foo<f64>{') | ||||||
|  | 	assert result3.contains('foo: 2.2') | ||||||
|  | 
 | ||||||
|  | 	mut bar4 := Bar<bool>{} | ||||||
|  | 	bar4.add(true) | ||||||
|  | 	println(bar4) | ||||||
|  | 
 | ||||||
|  | 	result4 := '$bar4' | ||||||
|  | 	assert result4.contains('Bar<bool>{') | ||||||
|  | 	assert result4.contains('foos: [Foo<bool>{') | ||||||
|  | 	assert result4.contains('foo: true') | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue