@@ -130,6 +130,32 @@ func TestOTAddLargeNumbersMultiDimension(t *testing.T) {
130130 assert .Len (t , result , int (numItems ))
131131}
132132
133+ func TestOTAddReturnsOverwritten (t * testing.T ) {
134+ tree := newOrderedTree (2 )
135+
136+ starts := []uint64 {0 , 4 , 2 , 1 , 3 }
137+
138+ entries := make (Entries , 0 , len (starts ))
139+ for _ , start := range starts {
140+ entries = append (entries , constructMockEntry (start , int64 (start ), int64 (start )))
141+ }
142+
143+ overwritten := tree .Add (entries ... )
144+
145+ assert .Equal (t , Entries {nil , nil , nil , nil , nil }, overwritten )
146+
147+ oldEntry := entries [2 ]
148+ newEntry := constructMockEntry (10 , oldEntry .ValueAtDimension (1 ),
149+ oldEntry .ValueAtDimension (2 ))
150+ overwritten = tree .Add (newEntry )
151+
152+ assert .Equal (t , Entries {oldEntry }, overwritten )
153+
154+ result := tree .Query (constructMockInterval (dimension {0 , 5 }, dimension {0 , 5 }))
155+ assert .Len (t , result , 5 )
156+ assert .Equal (t , uint64 (5 ), tree .Len ())
157+ }
158+
133159func BenchmarkOTAddItemsMultiDimensions (b * testing.B ) {
134160 numItems := b .N
135161 entries := make (Entries , 0 , numItems )
@@ -256,6 +282,29 @@ func TestOTDeleteEmptyTreeMultiDimensions(t *testing.T) {
256282 assert .Equal (t , uint64 (0 ), tree .Len ())
257283}
258284
285+ func TestOTDeleteReturnsDeleted (t * testing.T ) {
286+ tree := newOrderedTree (2 )
287+
288+ entries := NewEntries ()
289+ starts := []uint64 {0 , 4 , 2 , 1 , 3 }
290+ for _ , start := range starts {
291+ entries = append (entries , constructMockEntry (start , int64 (start ), int64 (start )))
292+ }
293+
294+ tree .Add (entries ... )
295+
296+ deleted := tree .Delete (entries [2 ], constructMockEntry (10 , 10 , 10 ))
297+
298+ assert .Equal (t , Entries {entries [2 ], nil }, deleted )
299+
300+ result := tree .Query (constructMockInterval (dimension {0 , 11 }, dimension {0 , 11 }))
301+
302+ assert .Len (t , result , 4 )
303+ assert .Equal (t , uint64 (4 ), tree .Len ())
304+
305+ assert .NotContains (t , result , entries [2 ])
306+ }
307+
259308func BenchmarkOTDeleteItemsMultiDimensions (b * testing.B ) {
260309 numItems := uint64 (1000 )
261310 entries := make (Entries , 0 , numItems )
0 commit comments