MCPcopy Create free account
hub / github.com/docopt/docopt.go / TestBasicPatternMatching

Function TestBasicPatternMatching

docopt_test.go:863–908  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

861}
862
863func TestBasicPatternMatching(t *testing.T) {
864 // ( -a N [ -x Z ] )
865 p := newRequired(
866 newOption("-a", "", 0, false),
867 newArgument("N", nil),
868 newOptional(
869 newOption("-x", "", 0, false),
870 newArgument("Z", nil)))
871
872 // -a N
873 q := patternList{newOption("-a", "", 0, false), newArgument("", 9)}
874 y := patternList{newOption("-a", "", 0, false), newArgument("N", 9)}
875 v, w, x := p.match(&q, nil)
876 if v != true ||
877 reflect.DeepEqual(*w, patternList{}) != true ||
878 reflect.DeepEqual(*x, y) != true {
879 t.Fail()
880 }
881
882 // -a -x N Z
883 q = patternList{newOption("-a", "", 0, false),
884 newOption("-x", "", 0, false),
885 newArgument("", 9), newArgument("", 5)}
886 y = patternList{}
887 z := patternList{newOption("-a", "", 0, false), newArgument("N", 9),
888 newOption("-x", "", 0, false), newArgument("Z", 5)}
889 v, w, x = p.match(&q, nil)
890 if v != true ||
891 reflect.DeepEqual(*w, y) != true ||
892 reflect.DeepEqual(*x, z) != true {
893 t.Fail()
894 }
895
896 // -x N Z # BZZ!
897 q = patternList{newOption("-x", "", 0, false),
898 newArgument("", 9), newArgument("", 5)}
899 y = patternList{newOption("-x", "", 0, false),
900 newArgument("", 9), newArgument("", 5)}
901 z = patternList{}
902 v, w, x = p.match(&q, nil)
903 if v != false ||
904 reflect.DeepEqual(*w, y) != true ||
905 reflect.DeepEqual(*x, z) != true {
906 t.Fail()
907 }
908}
909
910func TestPatternEither(t *testing.T) {
911 p := newOption("-a", "", 0, false).transform()

Callers

nothing calls this directly

Calls 5

newRequiredFunction · 0.85
newOptionFunction · 0.85
newArgumentFunction · 0.85
newOptionalFunction · 0.85
matchMethod · 0.45

Tested by

no test coverage detected