Skip to content

Commit ecb5527

Browse files
committed
new: added unit test for field accept method
1 parent d71734f commit ecb5527

File tree

1 file changed

+307
-0
lines changed

1 file changed

+307
-0
lines changed

field_test.go

Lines changed: 307 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -572,3 +572,310 @@ func TestFieldAnyReflect(t *testing.T) {
572572
}
573573

574574
}
575+
576+
func TestFieldAccept(t *testing.T) {
577+
type customStruct struct {
578+
v int
579+
}
580+
581+
cases := []struct {
582+
name string
583+
original Field
584+
expected interface{}
585+
}{
586+
{
587+
name: "String",
588+
original: String("k", "42"),
589+
expected: "42",
590+
},
591+
{
592+
name: "Bool",
593+
original: Bool("k", true),
594+
expected: true,
595+
},
596+
{
597+
name: "Int",
598+
original: Int("k", 42),
599+
expected: int64(42),
600+
},
601+
{
602+
name: "Int64",
603+
original: Int64("k", 42),
604+
expected: int64(42),
605+
},
606+
{
607+
name: "Int32",
608+
original: Int32("k", 42),
609+
expected: int32(42),
610+
},
611+
{
612+
name: "Int16",
613+
original: Int16("k", 42),
614+
expected: int16(42),
615+
},
616+
{
617+
name: "Int8",
618+
original: Int8("k", 42),
619+
expected: int8(42),
620+
},
621+
{
622+
name: "Uint",
623+
original: Uint("k", 42),
624+
expected: uint64(42),
625+
},
626+
{
627+
name: "Uint64",
628+
original: Uint64("k", 42),
629+
expected: uint64(42),
630+
},
631+
{
632+
name: "Uint32",
633+
original: Uint32("k", 42),
634+
expected: uint32(42),
635+
},
636+
{
637+
name: "Uint16",
638+
original: Uint16("k", 42),
639+
expected: uint16(42),
640+
},
641+
{
642+
name: "Uint8",
643+
original: Uint8("k", 42),
644+
expected: uint8(42),
645+
},
646+
{
647+
name: "Float64",
648+
original: Float64("k", 42),
649+
expected: float64(42),
650+
},
651+
{
652+
name: "Float32",
653+
original: Float32("k", 42),
654+
expected: float32(42),
655+
},
656+
{
657+
name: "Strings",
658+
original: Strings("k", []string{"42", "43"}),
659+
expected: stringArray{"42", "43"}, // FIXME
660+
},
661+
{
662+
name: "Bools",
663+
original: Bools("k", []bool{true, false}),
664+
expected: []bool{true, false},
665+
},
666+
{
667+
name: "ConstBools",
668+
original: ConstBools("k", []bool{true, false}),
669+
expected: []bool{true, false},
670+
},
671+
{
672+
name: "Ints",
673+
original: Ints("k", []int{42, 43}),
674+
expected: []int64{42, 43},
675+
},
676+
{
677+
name: "ConstInts",
678+
original: ConstInts("k", []int{42, 43}),
679+
expected: []int64{42, 43},
680+
},
681+
{
682+
name: "Ints64",
683+
original: Ints64("k", []int64{42, 43}),
684+
expected: []int64{42, 43},
685+
},
686+
{
687+
name: "ConstInts64",
688+
original: ConstInts64("k", []int64{42, 43}),
689+
expected: []int64{42, 43},
690+
},
691+
{
692+
name: "Ints32",
693+
original: Ints32("k", []int32{42, 43}),
694+
expected: []int32{42, 43},
695+
},
696+
{
697+
name: "ConstInts32",
698+
original: ConstInts32("k", []int32{42, 43}),
699+
expected: []int32{42, 43},
700+
},
701+
{
702+
name: "Ints16",
703+
original: Ints16("k", []int16{42, 43}),
704+
expected: []int16{42, 43},
705+
},
706+
{
707+
name: "ConstInts16",
708+
original: ConstInts16("k", []int16{42, 43}),
709+
expected: []int16{42, 43},
710+
},
711+
{
712+
name: "Ints8",
713+
original: Ints8("k", []int8{42}),
714+
expected: []int8{42},
715+
},
716+
{
717+
name: "ConstInts8",
718+
original: ConstInts8("k", []int8{42}),
719+
expected: []int8{42},
720+
},
721+
{
722+
name: "Uints",
723+
original: Uints("k", []uint{42, 43}),
724+
expected: []uint64{42, 43},
725+
},
726+
{
727+
name: "ConstUints",
728+
original: ConstUints("k", []uint{42, 43}),
729+
expected: []uint64{42, 43},
730+
},
731+
{
732+
name: "Uints64",
733+
original: Uints64("k", []uint64{42, 43}),
734+
expected: []uint64{42, 43},
735+
},
736+
{
737+
name: "ConstUints64",
738+
original: ConstUints64("k", []uint64{42, 43}),
739+
expected: []uint64{42, 43},
740+
},
741+
{
742+
name: "Uints32",
743+
original: Uints32("k", []uint32{42, 43}),
744+
expected: []uint32{42, 43},
745+
},
746+
{
747+
name: "ConstUints32",
748+
original: ConstUints32("k", []uint32{42, 43}),
749+
expected: []uint32{42, 43},
750+
},
751+
{
752+
name: "Uints16",
753+
original: Uints16("k", []uint16{42, 43}),
754+
expected: []uint16{42, 43},
755+
},
756+
{
757+
name: "ConstUints16",
758+
original: ConstUints16("k", []uint16{42, 43}),
759+
expected: []uint16{42, 43},
760+
},
761+
{
762+
name: "Uints8",
763+
original: Uints8("k", []uint8{42}),
764+
expected: []uint8{42},
765+
},
766+
{
767+
name: "ConstUints8",
768+
original: ConstUints8("k", []uint8{42}),
769+
expected: []uint8{42},
770+
},
771+
{
772+
name: "Floats64",
773+
original: Floats64("k", []float64{42}),
774+
expected: []float64{42},
775+
},
776+
{
777+
name: "ConstFloats64",
778+
original: ConstFloats64("k", []float64{42}),
779+
expected: []float64{42},
780+
},
781+
{
782+
name: "Floats32",
783+
original: Floats32("k", []float32{42}),
784+
expected: []float32{42},
785+
},
786+
{
787+
name: "ConstFloats32",
788+
original: ConstFloats32("k", []float32{42}),
789+
expected: []float32{42},
790+
},
791+
{
792+
name: "nil",
793+
original: Any("k", nil),
794+
expected: nil,
795+
},
796+
{
797+
name: "Bytes",
798+
original: Bytes("k", []byte{42, 43}),
799+
expected: []byte{42, 43},
800+
},
801+
{
802+
name: "ConstBytes",
803+
original: ConstBytes("k", []byte{42, 43}),
804+
expected: []byte{42, 43},
805+
},
806+
{
807+
name: "Error",
808+
original: NamedError("k", errors.New("test")),
809+
expected: errors.New("test"),
810+
},
811+
{
812+
name: "Time",
813+
original: Time("k", time.Date(2020, 1, 2, 3, 4, 5, 6, time.UTC)),
814+
expected: time.Date(2020, 1, 2, 3, 4, 5, 6, time.UTC),
815+
},
816+
{
817+
name: "Duration",
818+
original: Duration("k", time.Minute),
819+
expected: time.Minute,
820+
},
821+
{
822+
name: "Stringer",
823+
original: Stringer("k", &testStringer{"stringer"}),
824+
expected: "stringer",
825+
},
826+
{
827+
name: "ConstStringer",
828+
original: ConstStringer("k", &testStringer{"stringer"}),
829+
expected: "stringer",
830+
},
831+
{
832+
name: "Stringer/Nil",
833+
original: Stringer("k", nil),
834+
expected: "nil", // FIXME
835+
},
836+
{
837+
name: "ConstStringer/Nil",
838+
original: ConstStringer("k", nil),
839+
expected: "nil", // FIXME
840+
},
841+
{
842+
name: "Array",
843+
original: Array("k", &testArrayEncoder{}),
844+
expected: &testArrayEncoder{},
845+
},
846+
{
847+
name: "Array/Nil",
848+
original: Array("k", nil),
849+
expected: "nil", // FIXME
850+
},
851+
{
852+
name: "Object",
853+
original: Object("k", &testObjectEncoder{}),
854+
expected: &testObjectEncoder{},
855+
},
856+
{
857+
name: "Object/Nil",
858+
original: Object("k", nil),
859+
expected: "nil", // FIXME
860+
},
861+
{
862+
name: "Object/Nil",
863+
original: Object("k", nil),
864+
expected: "nil", // FIXME
865+
},
866+
{
867+
name: "Any",
868+
original: Any("k", customStruct{42}),
869+
expected: customStruct{42},
870+
},
871+
}
872+
873+
for _, c := range cases {
874+
t.Run(c.name, func(t *testing.T) {
875+
e := newTestFieldEncoder()
876+
c.original.Accept(e)
877+
assert.Equal(t, c.expected, e.result["k"])
878+
})
879+
}
880+
881+
}

0 commit comments

Comments
 (0)