@@ -2,6 +2,7 @@ package gone
22
33import (
44 "errors"
5+ "fmt"
56 "go.uber.org/mock/gomock"
67 "reflect"
78 "testing"
@@ -593,3 +594,43 @@ func Test_core_Install(t *testing.T) {
593594 })
594595 }
595596}
597+
598+ func Test_core_GetGonerByPattern (t * testing.T ) {
599+ type X struct {
600+ Flag
601+ Id int
602+ }
603+
604+ t .Run ("success" , func (t * testing.T ) {
605+ NewApp ().
606+ Load (& X {Id : 1 }, Name ("x1" )).
607+ Load (& X {Id : 2 }, Name ("x2" )).
608+ Load (& X {Id : 3 }, Name ("x311" )).
609+ Load (& X {Id : 4 }, Name ("y3" )).
610+ Run (func (k Keeper ) {
611+ goners := k .GetGonerByPattern (reflect .TypeOf (& X {}), "x*" )
612+ if ! reflect .DeepEqual (goners , []any {& X {Id : 1 }, & X {Id : 2 }, & X {Id : 3 }}) {
613+ t .Errorf ("GetGonerByPattern error" )
614+ }
615+ })
616+ })
617+
618+ t .Run ("panic" , func (t * testing.T ) {
619+ provider := WrapFunctionProvider (func (tagConf string , param struct {}) (* X , error ) {
620+ return nil , errors .New ("error" )
621+ })
622+
623+ err := SafeExecute (func () error {
624+ NewApp ().
625+ Load (provider , Name ("x110" )).
626+ Run (func (k Keeper ) {
627+ goners := k .GetGonerByPattern (reflect .TypeOf (& X {}), "x*" )
628+ fmt .Printf ("%#v" , goners )
629+ })
630+ return nil
631+ })
632+ if err == nil {
633+ t .Errorf ("should be error" )
634+ }
635+ })
636+ }
0 commit comments