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() { | ||||
| 	ret := arrays.sum<Point>([Point{ x: 1, y: 1 }, Point{ | ||||
| 	ret1 := arrays.sum<Point>([Point{ x: 1, y: 1 }, Point{ | ||||
| 		x: 2 | ||||
| 		y: 2 | ||||
| 	}]) or { Point{} } | ||||
| 	println(ret) | ||||
| 	assert ret == Point{3, 3} | ||||
| 	println(ret1) | ||||
| 	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() { | ||||
| 	mut a := [7, 8] | ||||
| 	r := f_array(a) | ||||
| 	assert r == 7 | ||||
| 	// []int
 | ||||
| 	mut a1 := [7, 8] | ||||
| 	r1 := f_array(a1) | ||||
| 	assert r1 == 7 | ||||
| 
 | ||||
| 	g_array(mut a) | ||||
| 	assert a[0] == 8 | ||||
| 	g_array(mut a1) | ||||
| 	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() { | ||||
| 	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() { | ||||
| 	mut set := Set<int>{} | ||||
| 	// int
 | ||||
| 	mut set1 := Set<int>{} | ||||
| 
 | ||||
| 	mut added := set.add(4) | ||||
| 	mut added := set1.add(4) | ||||
| 	println(added) | ||||
| 	assert added | ||||
| 
 | ||||
| 	added = set.add(3) | ||||
| 	added = set1.add(3) | ||||
| 	println(added) | ||||
| 	assert added | ||||
| 
 | ||||
| 	added = set.add(3) | ||||
| 	added = set1.add(3) | ||||
| 	println(added) | ||||
| 	assert !added | ||||
| 
 | ||||
| 	println(set) | ||||
| 	mut removed := set.remove(4) | ||||
| 	println(set1) | ||||
| 	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) | ||||
| 	assert removed | ||||
| } | ||||
|  |  | |||
|  | @ -7,7 +7,19 @@ fn (s Abc<T>) get_value() T { | |||
| } | ||||
| 
 | ||||
| fn test_generics_method_on_receiver_types() { | ||||
| 	s := Abc<string>{'hello'} | ||||
| 	println(s.get_value()) | ||||
| 	assert s.get_value() == 'hello' | ||||
| 	s1 := Abc<string>{'hello'} | ||||
| 	println(s1.get_value()) | ||||
| 	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() { | ||||
| 	mut g := Gen<string>{'Gen', 0, 10} | ||||
| 	println(g) | ||||
| 	assert '$g' == 'Gen<G> 0, Gen, 10.' | ||||
| 	mut g1 := Gen<string>{'aaa', 0, 10} | ||||
| 	println(g1) | ||||
| 	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() { | ||||
| 	mut bar := Bar<string>{} | ||||
| 	bar.add('bar') | ||||
| 	println(bar) | ||||
| 	mut bar1 := Bar<string>{} | ||||
| 	bar1.add('bar') | ||||
| 	println(bar1) | ||||
| 
 | ||||
| 	result := '$bar' | ||||
| 	assert result.contains('Bar<string>{') | ||||
| 	assert result.contains('foos: [Foo<string>{') | ||||
| 	assert result.contains("foo: 'bar'") | ||||
| 	result1 := '$bar1' | ||||
| 	assert result1.contains('Bar<string>{') | ||||
| 	assert result1.contains('foos: [Foo<string>{') | ||||
| 	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