@@ -226,10 +226,11 @@ func Test(t *testing.T) {
226
226
t .Fatalf ("Eval Serial: %d, selector: %q, got: %v, expect: %v" , i , selector , val , value )
227
227
}
228
228
}
229
- tagExpr .Range (func (path string , es ExprSelector , eval func () interface {}) error {
229
+ tagExpr .Range (func (eh * ExprHandler ) error {
230
+ es := eh .ExprSelector ()
230
231
t .Logf ("Range selector: %s, field: %q exprName: %q" , es , es .Field (), es .Name ())
231
232
value := c .tests [es .String ()]
232
- val := eval ()
233
+ val := eh . Eval ()
233
234
if ! reflect .DeepEqual (val , value ) {
234
235
t .Fatalf ("Range NO: %d, selector: %q, got: %v, expect: %v" , i , es , val , value )
235
236
}
@@ -542,10 +543,11 @@ func TestOperator(t *testing.T) {
542
543
t .Fatalf ("Eval NO: %d, selector: %q, got: %v, expect: %v" , i , selector , val , value )
543
544
}
544
545
}
545
- tagExpr .Range (func (path string , es ExprSelector , eval func () interface {}) error {
546
+ tagExpr .Range (func (eh * ExprHandler ) error {
547
+ es := eh .ExprSelector ()
546
548
t .Logf ("Range selector: %s, field: %q exprName: %q" , es , es .Field (), es .Name ())
547
549
value := c .tests [es .String ()]
548
- val := eval ()
550
+ val := eh . Eval ()
549
551
if ! reflect .DeepEqual (val , value ) {
550
552
t .Fatalf ("Range NO: %d, selector: %q, got: %v, expect: %v" , i , es , val , value )
551
553
}
@@ -575,9 +577,10 @@ func TestStruct(t *testing.T) {
575
577
assert .Equal (t , "xxx" , expr .EvalString ("B.C3" ))
576
578
assert .Equal (t , "xxx" , expr .EvalString ("B.C" ))
577
579
assert .Equal (t , "xxx" , expr .EvalString ("B.C.D.X" ))
578
- expr .Range (func (path string , es ExprSelector , eval func () interface {}) error {
579
- t .Logf ("Range selector: %s, field: %q exprName: %q" , path , es .Field (), es .Name ())
580
- if eval ().(string ) != "xxx" {
580
+ expr .Range (func (eh * ExprHandler ) error {
581
+ es := eh .ExprSelector ()
582
+ t .Logf ("Range selector: %s, field: %q exprName: %q" , es , es .Field (), es .Name ())
583
+ if eh .Eval ().(string ) != "xxx" {
581
584
t .FailNow ()
582
585
}
583
586
return nil
@@ -669,8 +672,9 @@ func TestStruct3(t *testing.T) {
669
672
if expr .EvalString ("XBlock.BlockType" ) != "BlockType" {
670
673
t .Fatal (expr .EvalString ("XBlock.BlockType" ))
671
674
}
672
- err := expr .Range (func (path string , es ExprSelector , eval func () interface {}) error {
673
- t .Logf ("Range selector: %s, field: %q exprName: %q, eval: %v" , path , es .Field (), es .Name (), eval ())
675
+ err := expr .Range (func (eh * ExprHandler ) error {
676
+ es := eh .ExprSelector ()
677
+ t .Logf ("Range selector: %s, field: %q exprName: %q, eval: %v" , eh .Path (), es .Field (), es .Name (), eh .Eval ())
674
678
return nil
675
679
})
676
680
assert .NoError (t , err )
@@ -685,10 +689,10 @@ func TestNilField(t *testing.T) {
685
689
}
686
690
vm := New ("tagexpr" )
687
691
te := vm .MustRun (P {})
688
- te .Range (func (path string , es ExprSelector , eval func () interface {} ) error {
689
- r := eval ()
692
+ te .Range (func (eh * ExprHandler ) error {
693
+ r := eh . Eval ()
690
694
if r != nil {
691
- t .Fatal (path , r )
695
+ t .Fatal (eh . Path () , r )
692
696
}
693
697
return nil
694
698
})
@@ -701,10 +705,10 @@ func TestNilField(t *testing.T) {
701
705
Nil1 : new (int ),
702
706
Nil2 : new (int ),
703
707
}
704
- vm .MustRun (g ).Range (func (path string , es ExprSelector , eval func () interface {} ) error {
705
- r , ok := eval ().(bool )
708
+ vm .MustRun (g ).Range (func (eh * ExprHandler ) error {
709
+ r , ok := eh . Eval ().(bool )
706
710
if ! ok || ! r {
707
- t .Fatal (path , r )
711
+ t .Fatal (eh . Path () , r )
708
712
}
709
713
return nil
710
714
})
@@ -733,12 +737,12 @@ func TestNilField(t *testing.T) {
733
737
SI : []interface {}{& M {X : "nn" }},
734
738
}
735
739
var cnt int
736
- vm .MustRun (n ).Range (func (path string , es ExprSelector , eval func () interface {} ) error {
737
- r , ok := eval ().(bool )
740
+ vm .MustRun (n ).Range (func (eh * ExprHandler ) error {
741
+ r , ok := eh . Eval ().(bool )
738
742
if ! ok || ! r {
739
- t .Fatal (path , r )
743
+ t .Fatal (eh . Path () , r )
740
744
}
741
- t .Log ("path:" , path , "es:" , es , "val:" , r )
745
+ t .Log ("path:" , eh . Path () , "es:" , eh . ExprSelector () , "val:" , r )
742
746
cnt ++
743
747
return nil
744
748
})
@@ -781,11 +785,11 @@ func TestDeepNested(t *testing.T) {
781
785
expectValue := [... ]interface {}{"I:address" , nil , "A:address" , nil , "X:address" }
782
786
var i int
783
787
vm := New ("tagexpr" )
784
- vm .MustRun (data ).Range (func (path string , es ExprSelector , eval func () interface {} ) error {
785
- assert .Equal (t , expectKey [i ], path )
786
- assert .Equal (t , expectValue [i ], eval ())
788
+ vm .MustRun (data ).Range (func (eh * ExprHandler ) error {
789
+ assert .Equal (t , expectKey [i ], eh . Path () )
790
+ assert .Equal (t , expectValue [i ], eh . Eval ())
787
791
i ++
788
- t .Log (path , es , eval ())
792
+ t .Log (eh . Path (), eh . ExprSelector (), eh . Eval ())
789
793
return nil
790
794
})
791
795
assert .Equal (t , 5 , i )
@@ -809,16 +813,16 @@ func TestIssue3(t *testing.T) {
809
813
},
810
814
}
811
815
vm := New ("vd" )
812
- err := vm .MustRun (a ).Range (func (path string , es ExprSelector , eval func () interface {} ) error {
813
- switch path {
816
+ err := vm .MustRun (a ).Range (func (eh * ExprHandler ) error {
817
+ switch eh . Path () {
814
818
case "F1.Index" :
815
- assert .Equal (t , float64 (1 ), eval (), path )
819
+ assert .Equal (t , float64 (1 ), eh . Eval (), eh . Path () )
816
820
case "F2.Index" :
817
- assert .Equal (t , nil , eval (), path )
821
+ assert .Equal (t , nil , eh . Eval (), eh . Path () )
818
822
case "F1.P" :
819
- assert .Equal (t , true , eval (), path )
823
+ assert .Equal (t , true , eh . Eval (), eh . Path () )
820
824
case "F2.P" :
821
- assert .Equal (t , false , eval (), path )
825
+ assert .Equal (t , false , eh . Eval (), eh . Path () )
822
826
}
823
827
return nil
824
828
})
0 commit comments