@@ -465,7 +465,7 @@ func TestSubjectTreeMatchRandomDoublePWC(t *testing.T) {
465
465
seen ++
466
466
})
467
467
// Now check via walk to make sure we are right.
468
- st .Iter (func (subject []byte , v * int ) bool {
468
+ st .IterOrdered (func (subject []byte , v * int ) bool {
469
469
tokens := strings .Split (string (subject ), "." )
470
470
require_Equal (t , len (tokens ), 3 )
471
471
if tokens [1 ] == "2" {
@@ -479,7 +479,7 @@ func TestSubjectTreeMatchRandomDoublePWC(t *testing.T) {
479
479
st .Match (b ("*.*.222" ), func (_ []byte , _ * int ) {
480
480
seen ++
481
481
})
482
- st .Iter (func (subject []byte , v * int ) bool {
482
+ st .IterOrdered (func (subject []byte , v * int ) bool {
483
483
tokens := strings .Split (string (subject ), "." )
484
484
require_Equal (t , len (tokens ), 3 )
485
485
if tokens [2 ] == "222" {
@@ -490,7 +490,7 @@ func TestSubjectTreeMatchRandomDoublePWC(t *testing.T) {
490
490
require_Equal (t , seen , verified )
491
491
}
492
492
493
- func TestSubjectTreeIter (t * testing.T ) {
493
+ func TestSubjectTreeIterOrdered (t * testing.T ) {
494
494
st := NewSubjectTree [int ]()
495
495
st .Insert (b ("foo.bar.A" ), 1 )
496
496
st .Insert (b ("foo.bar.B" ), 2 )
@@ -531,12 +531,53 @@ func TestSubjectTreeIter(t *testing.T) {
531
531
return true
532
532
}
533
533
// Kick in the iter.
534
- st .Iter (walk )
534
+ st .IterOrdered (walk )
535
535
require_Equal (t , received , len (checkOrder ))
536
536
537
537
// Make sure we can terminate properly.
538
538
received = 0
539
- st .Iter (func (subject []byte , v * int ) bool {
539
+ st .IterOrdered (func (subject []byte , v * int ) bool {
540
+ received ++
541
+ return received != 4
542
+ })
543
+ require_Equal (t , received , 4 )
544
+ }
545
+
546
+ func TestSubjectTreeIterFast (t * testing.T ) {
547
+ st := NewSubjectTree [int ]()
548
+ st .Insert (b ("foo.bar.A" ), 1 )
549
+ st .Insert (b ("foo.bar.B" ), 2 )
550
+ st .Insert (b ("foo.bar.C" ), 3 )
551
+ st .Insert (b ("foo.baz.A" ), 11 )
552
+ st .Insert (b ("foo.baz.B" ), 22 )
553
+ st .Insert (b ("foo.baz.C" ), 33 )
554
+ st .Insert (b ("foo.bar" ), 42 )
555
+
556
+ checkValMap := map [string ]int {
557
+ "foo.bar.A" : 1 ,
558
+ "foo.bar.B" : 2 ,
559
+ "foo.bar.C" : 3 ,
560
+ "foo.baz.A" : 11 ,
561
+ "foo.baz.B" : 22 ,
562
+ "foo.baz.C" : 33 ,
563
+ "foo.bar" : 42 ,
564
+ }
565
+ var received int
566
+ walk := func (subject []byte , v * int ) bool {
567
+ received ++
568
+ require_True (t , v != nil )
569
+ if expected := checkValMap [string (subject )]; expected != * v {
570
+ t .Fatalf ("Expected %q to have value of %d, but got %d" , subject , expected , * v )
571
+ }
572
+ return true
573
+ }
574
+ // Kick in the iter.
575
+ st .IterFast (walk )
576
+ require_Equal (t , received , len (checkValMap ))
577
+
578
+ // Make sure we can terminate properly.
579
+ received = 0
580
+ st .IterFast (func (subject []byte , v * int ) bool {
540
581
received ++
541
582
return received != 4
542
583
})
@@ -710,7 +751,7 @@ func TestSubjectTreeIterPerf(t *testing.T) {
710
751
711
752
start := time .Now ()
712
753
count := 0
713
- st .Iter (func (_ []byte , _ * int ) bool {
754
+ st .IterOrdered (func (_ []byte , _ * int ) bool {
714
755
count ++
715
756
return true
716
757
})
0 commit comments