11package  avltree
22
33import  (
4- 	"fmt" 
54	"testing" 
65
76	"github.com/antlabs/gstl/cmp" 
87	"github.com/antlabs/gstl/vec" 
9- 	"github.com/stretchr/testify/assert" 
108)
119
1210// 从小到大, 插入 
@@ -19,8 +17,12 @@ func Test_SetAndGet(t *testing.T) {
1917
2018	for  i  :=  0 ; i  <  max ; i ++  {
2119		v , ok  :=  b .GetWithBool (i )
22- 		assert .True (t , ok )
23- 		assert .Equal (t , v , i )
20+ 		if  ! ok  {
21+ 			t .Errorf ("expected true, got false for index %d" , i )
22+ 		}
23+ 		if  v  !=  i  {
24+ 			t .Errorf ("expected %d, got %d for index %d" , i , v , i )
25+ 		}
2426	}
2527}
2628
@@ -34,8 +36,12 @@ func Test_SetAndGet2(t *testing.T) {
3436
3537	for  i  :=  max ; i  >=  0 ; i --  {
3638		v , ok  :=  b .GetWithBool (i )
37- 		assert .True (t , ok )
38- 		assert .Equal (t , v , i )
39+ 		if  ! ok  {
40+ 			t .Errorf ("expected true, got false for index %d" , i )
41+ 		}
42+ 		if  v  !=  i  {
43+ 			t .Errorf ("expected %d, got %d for index %d" , i , v , i )
44+ 		}
3945	}
4046}
4147
@@ -58,15 +64,23 @@ func Test_AVLTree_Delete1(t *testing.T) {
5864		// max/2-max应该能找到 
5965		for  i  :=  max  /  2 ; i  <  max ; i ++  {
6066			v , ok  :=  b .GetWithBool (i )
61- 			assert .True (t , ok , fmt .Sprintf ("index:%d" , i ))
62- 			assert .Equal (t , v , i , fmt .Sprintf ("index:%d" , i ))
67+ 			if  ! ok  {
68+ 				t .Errorf ("expected true, got false for index %d" , i )
69+ 			}
70+ 			if  v  !=  i  {
71+ 				t .Errorf ("expected %d, got %d for index %d" , i , v , i )
72+ 			}
6373		}
6474
6575		// 0-max/2应该找不到 
6676		for  i  :=  0 ; i  <  max / 2 ; i ++  {
6777			v , ok  :=  b .GetWithBool (i )
68- 			assert .False (t , ok , fmt .Sprintf ("index:%d" , i ))
69- 			assert .Equal (t , v , 0 , fmt .Sprintf ("index:%d" , i ))
78+ 			if  ok  {
79+ 				t .Errorf ("expected false, got true for index %d" , i )
80+ 			}
81+ 			if  v  !=  0  {
82+ 				t .Errorf ("expected 0, got %d for index %d" , v , i )
83+ 			}
7084		}
7185	}
7286}
@@ -97,7 +111,9 @@ func Test_AvlTree_TopMax(t *testing.T) {
97111
98112			b .Draw ()
99113
100- 			assert .Equal (t , b .Len (), count10 )
114+ 			if  b .Len () !=  count10  {
115+ 				t .Errorf ("expected length %d, got %d" , count10 , b .Len ())
116+ 			}
101117			return  b 
102118		}(),
103119		// btree里面元素 等于 TopMax 需要返回的值 
@@ -107,7 +123,9 @@ func Test_AvlTree_TopMax(t *testing.T) {
107123			for  i  :=  0 ; i  <  count100 ; i ++  {
108124				b .Set (int (i ), i )
109125			}
110- 			assert .Equal (t , b .Len (), count100 )
126+ 			if  b .Len () !=  count100  {
127+ 				t .Errorf ("expected length %d, got %d" , count100 , b .Len ())
128+ 			}
111129			return  b 
112130		}(),
113131		// btree里面元素 大于 TopMax 需要返回的值 
@@ -117,7 +135,9 @@ func Test_AvlTree_TopMax(t *testing.T) {
117135			for  i  :=  0 ; i  <  count1000 ; i ++  {
118136				b .Set (int (i ), i )
119137			}
120- 			assert .Equal (t , b .Len (), count1000 )
138+ 			if  b .Len () !=  count1000  {
139+ 				t .Errorf ("expected length %d, got %d" , count1000 , b .Len ())
140+ 			}
121141			return  b 
122142		}(),
123143	} {
@@ -128,10 +148,13 @@ func Test_AvlTree_TopMax(t *testing.T) {
128148			return  true 
129149		})
130150		length  :=  cmp .Min (count [i ], len (need [i ]))
131- 		assert .Equal (t , key , need [i ][:length ])
132- 		assert .Equal (t , val , need [i ][:length ])
151+ 		if  ! equalSlices (key , need [i ][:length ]) {
152+ 			t .Errorf ("expected keys %v, got %v" , need [i ][:length ], key )
153+ 		}
154+ 		if  ! equalSlices (val , need [i ][:length ]) {
155+ 			t .Errorf ("expected values %v, got %v" , need [i ][:length ], val )
156+ 		}
133157	}
134- 
135158}
136159
137160// 测试TopMin, 它返回最小的几个值 
@@ -155,7 +178,9 @@ func Test_AvlTree_TopMin(t *testing.T) {
155178				b .Set (i , i )
156179			}
157180
158- 			assert .Equal (t , b .Len (), count10 )
181+ 			if  b .Len () !=  count10  {
182+ 				t .Errorf ("expected length %d, got %d" , count10 , b .Len ())
183+ 			}
159184			return  b 
160185		}(),
161186		// btree里面元素 等于 TopMin 需要返回的值 
@@ -165,7 +190,9 @@ func Test_AvlTree_TopMin(t *testing.T) {
165190			for  i  :=  0 ; i  <  count100 ; i ++  {
166191				b .Set (i , i )
167192			}
168- 			assert .Equal (t , b .Len (), count100 )
193+ 			if  b .Len () !=  count100  {
194+ 				t .Errorf ("expected length %d, got %d" , count100 , b .Len ())
195+ 			}
169196			return  b 
170197		}(),
171198		// btree里面元素 大于 TopMin 需要返回的值 
@@ -175,7 +202,9 @@ func Test_AvlTree_TopMin(t *testing.T) {
175202			for  i  :=  0 ; i  <  count1000 ; i ++  {
176203				b .Set (i , i )
177204			}
178- 			assert .Equal (t , b .Len (), count1000 )
205+ 			if  b .Len () !=  count1000  {
206+ 				t .Errorf ("expected length %d, got %d" , count1000 , b .Len ())
207+ 			}
179208			return  b 
180209		}(),
181210	} {
@@ -185,10 +214,13 @@ func Test_AvlTree_TopMin(t *testing.T) {
185214			val  =  append (val , v )
186215			return  true 
187216		})
188- 		assert .Equal (t , key , need [:needCount [i ]])
189- 		assert .Equal (t , val , need [:needCount [i ]])
217+ 		if  ! equalSlices (key , need [:needCount [i ]]) {
218+ 			t .Errorf ("expected keys %v, got %v" , need [:needCount [i ]], key )
219+ 		}
220+ 		if  ! equalSlices (val , need [:needCount [i ]]) {
221+ 			t .Errorf ("expected values %v, got %v" , need [:needCount [i ]], val )
222+ 		}
190223	}
191- 
192224}
193225
194226func  Test_RanePrev (t  * testing.T ) {
@@ -215,6 +247,23 @@ func Test_RanePrev(t *testing.T) {
215247		return  true 
216248	})
217249
218- 	assert .Equal (t , gotKey , dataRev )
219- 	assert .Equal (t , gotVal , dataRev )
250+ 	if  ! equalSlices (gotKey , dataRev ) {
251+ 		t .Errorf ("expected keys %v, got %v" , dataRev , gotKey )
252+ 	}
253+ 	if  ! equalSlices (gotVal , dataRev ) {
254+ 		t .Errorf ("expected values %v, got %v" , dataRev , gotVal )
255+ 	}
256+ }
257+ 
258+ // 辅助函数,用于比较两个切片是否相等 
259+ func  equalSlices (a , b  []int ) bool  {
260+ 	if  len (a ) !=  len (b ) {
261+ 		return  false 
262+ 	}
263+ 	for  i  :=  range  a  {
264+ 		if  a [i ] !=  b [i ] {
265+ 			return  false 
266+ 		}
267+ 	}
268+ 	return  true 
220269}
0 commit comments