diff options
Diffstat (limited to 'tests/core.zig')
| -rw-r--r-- | tests/core.zig | 136 |
1 files changed, 61 insertions, 75 deletions
diff --git a/tests/core.zig b/tests/core.zig index 91b62fe..765b161 100644 --- a/tests/core.zig +++ b/tests/core.zig | |||
| @@ -19,116 +19,102 @@ fn testNoErr(params: []const Param(u8), args: []const []const u8, ids: []const u | |||
| 19 | var i: usize = 0; | 19 | var i: usize = 0; |
| 20 | while (iter.next() catch unreachable) |arg| : (i += 1) { | 20 | while (iter.next() catch unreachable) |arg| : (i += 1) { |
| 21 | debug.assert(ids[i] == arg.param.id); | 21 | debug.assert(ids[i] == arg.param.id); |
| 22 | const expected_value = values[i] ?? { | 22 | const expected_value = values[i] orelse { |
| 23 | debug.assert(arg.value == null); | 23 | debug.assert(arg.value == null); |
| 24 | continue; | 24 | continue; |
| 25 | }; | 25 | }; |
| 26 | const actual_value = arg.value ?? unreachable; | 26 | const actual_value = arg.value orelse unreachable; |
| 27 | 27 | ||
| 28 | debug.assert(mem.eql(u8, expected_value, actual_value)); | 28 | debug.assert(mem.eql(u8, expected_value, actual_value)); |
| 29 | } | 29 | } |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | test "clap.core: short" { | 32 | test "clap.core: short" { |
| 33 | const params = []Param(u8) { | 33 | const params = []Param(u8){ |
| 34 | Param(u8).init(0, false, Names.short('a')), | 34 | Param(u8).init(0, false, Names.short('a')), |
| 35 | Param(u8).init(1, false, Names.short('b')), | 35 | Param(u8).init(1, false, Names.short('b')), |
| 36 | Param(u8).init(2, true, Names.short('c')), | 36 | Param(u8).init(2, true, Names.short('c')), |
| 37 | }; | 37 | }; |
| 38 | 38 | ||
| 39 | testNoErr(params, [][]const u8 { "-a" }, []u8{0}, []?[]const u8{null}); | 39 | testNoErr(params, [][]const u8{"-a"}, []u8{0}, []?[]const u8{null}); |
| 40 | testNoErr(params, [][]const u8 { "-a", "-b" }, []u8{0,1}, []?[]const u8{null,null}); | 40 | testNoErr(params, [][]const u8{ "-a", "-b" }, []u8{ 0, 1 }, []?[]const u8{ null, null }); |
| 41 | testNoErr(params, [][]const u8 { "-ab" }, []u8{0,1}, []?[]const u8{null,null}); | 41 | testNoErr(params, [][]const u8{"-ab"}, []u8{ 0, 1 }, []?[]const u8{ null, null }); |
| 42 | testNoErr(params, [][]const u8 { "-c=100" }, []u8{2}, []?[]const u8{"100"}); | 42 | testNoErr(params, [][]const u8{"-c=100"}, []u8{2}, []?[]const u8{"100"}); |
| 43 | testNoErr(params, [][]const u8 { "-c100" }, []u8{2}, []?[]const u8{"100"}); | 43 | testNoErr(params, [][]const u8{"-c100"}, []u8{2}, []?[]const u8{"100"}); |
| 44 | testNoErr(params, [][]const u8 { "-c", "100" }, []u8{2}, []?[]const u8{"100"}); | 44 | testNoErr(params, [][]const u8{ "-c", "100" }, []u8{2}, []?[]const u8{"100"}); |
| 45 | testNoErr(params, [][]const u8 { "-abc", "100" }, []u8{0,1,2}, []?[]const u8{null,null,"100"}); | 45 | testNoErr(params, [][]const u8{ "-abc", "100" }, []u8{ 0, 1, 2 }, []?[]const u8{ null, null, "100" }); |
| 46 | testNoErr(params, [][]const u8 { "-abc=100" }, []u8{0,1,2}, []?[]const u8{null,null,"100"}); | 46 | testNoErr(params, [][]const u8{"-abc=100"}, []u8{ 0, 1, 2 }, []?[]const u8{ null, null, "100" }); |
| 47 | testNoErr(params, [][]const u8 { "-abc100" }, []u8{0,1,2}, []?[]const u8{null,null,"100"}); | 47 | testNoErr(params, [][]const u8{"-abc100"}, []u8{ 0, 1, 2 }, []?[]const u8{ null, null, "100" }); |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | test "clap.core: long" { | 50 | test "clap.core: long" { |
| 51 | const params = []Param(u8) { | 51 | const params = []Param(u8){ |
| 52 | Param(u8).init(0, false, Names.long("aa")), | 52 | Param(u8).init(0, false, Names.long("aa")), |
| 53 | Param(u8).init(1, false, Names.long("bb")), | 53 | Param(u8).init(1, false, Names.long("bb")), |
| 54 | Param(u8).init(2, true, Names.long("cc")), | 54 | Param(u8).init(2, true, Names.long("cc")), |
| 55 | }; | 55 | }; |
| 56 | 56 | ||
| 57 | testNoErr(params, [][]const u8 { "--aa" }, []u8{0}, []?[]const u8{null}); | 57 | testNoErr(params, [][]const u8{"--aa"}, []u8{0}, []?[]const u8{null}); |
| 58 | testNoErr(params, [][]const u8 { "--aa", "--bb" }, []u8{0,1}, []?[]const u8{null,null}); | 58 | testNoErr(params, [][]const u8{ "--aa", "--bb" }, []u8{ 0, 1 }, []?[]const u8{ null, null }); |
| 59 | testNoErr(params, [][]const u8 { "--cc=100" }, []u8{2}, []?[]const u8{"100"}); | 59 | testNoErr(params, [][]const u8{"--cc=100"}, []u8{2}, []?[]const u8{"100"}); |
| 60 | testNoErr(params, [][]const u8 { "--cc", "100" }, []u8{2}, []?[]const u8{"100"}); | 60 | testNoErr(params, [][]const u8{ "--cc", "100" }, []u8{2}, []?[]const u8{"100"}); |
| 61 | } | 61 | } |
| 62 | 62 | ||
| 63 | test "clap.core: bare" { | 63 | test "clap.core: bare" { |
| 64 | const params = []Param(u8) { | 64 | const params = []Param(u8){ |
| 65 | Param(u8).init(0, false, Names.bare("aa")), | 65 | Param(u8).init(0, false, Names.bare("aa")), |
| 66 | Param(u8).init(1, false, Names.bare("bb")), | 66 | Param(u8).init(1, false, Names.bare("bb")), |
| 67 | Param(u8).init(2, true, Names.bare("cc")), | 67 | Param(u8).init(2, true, Names.bare("cc")), |
| 68 | }; | 68 | }; |
| 69 | 69 | ||
| 70 | testNoErr(params, [][]const u8 { "aa" }, []u8{0}, []?[]const u8{null}); | 70 | testNoErr(params, [][]const u8{"aa"}, []u8{0}, []?[]const u8{null}); |
| 71 | testNoErr(params, [][]const u8 { "aa", "bb" }, []u8{0,1}, []?[]const u8{null,null}); | 71 | testNoErr(params, [][]const u8{ "aa", "bb" }, []u8{ 0, 1 }, []?[]const u8{ null, null }); |
| 72 | testNoErr(params, [][]const u8 { "cc=100" }, []u8{2}, []?[]const u8{"100"}); | 72 | testNoErr(params, [][]const u8{"cc=100"}, []u8{2}, []?[]const u8{"100"}); |
| 73 | testNoErr(params, [][]const u8 { "cc", "100" }, []u8{2}, []?[]const u8{"100"}); | 73 | testNoErr(params, [][]const u8{ "cc", "100" }, []u8{2}, []?[]const u8{"100"}); |
| 74 | } | 74 | } |
| 75 | 75 | ||
| 76 | test "clap.core: none" { | 76 | test "clap.core: none" { |
| 77 | const params = []Param(u8) { | 77 | const params = []Param(u8){Param(u8).init(0, true, Names.none())}; |
| 78 | Param(u8).init(0, true, Names.none()), | ||
| 79 | }; | ||
| 80 | 78 | ||
| 81 | testNoErr(params, [][]const u8 { "aa" }, []u8{0}, []?[]const u8{"aa"}); | 79 | testNoErr(params, [][]const u8{"aa"}, []u8{0}, []?[]const u8{"aa"}); |
| 82 | } | 80 | } |
| 83 | 81 | ||
| 84 | test "clap.core: all" { | 82 | test "clap.core: all" { |
| 85 | const params = []Param(u8) { | 83 | const params = []Param(u8){ |
| 86 | Param(u8).init( | 84 | Param(u8).init(0, false, Names{ |
| 87 | 0, | 85 | .bare = "aa", |
| 88 | false, | 86 | .short = 'a', |
| 89 | Names{ | 87 | .long = "aa", |
| 90 | .bare = "aa", | 88 | }), |
| 91 | .short = 'a', | 89 | Param(u8).init(1, false, Names{ |
| 92 | .long = "aa", | 90 | .bare = "bb", |
| 93 | } | 91 | .short = 'b', |
| 94 | ), | 92 | .long = "bb", |
| 95 | Param(u8).init( | 93 | }), |
| 96 | 1, | 94 | Param(u8).init(2, true, Names{ |
| 97 | false, | 95 | .bare = "cc", |
| 98 | Names{ | 96 | .short = 'c', |
| 99 | .bare = "bb", | 97 | .long = "cc", |
| 100 | .short = 'b', | 98 | }), |
| 101 | .long = "bb", | ||
| 102 | } | ||
| 103 | ), | ||
| 104 | Param(u8).init( | ||
| 105 | 2, | ||
| 106 | true, | ||
| 107 | Names{ | ||
| 108 | .bare = "cc", | ||
| 109 | .short = 'c', | ||
| 110 | .long = "cc", | ||
| 111 | } | ||
| 112 | ), | ||
| 113 | Param(u8).init(3, true, Names.none()), | 99 | Param(u8).init(3, true, Names.none()), |
| 114 | }; | 100 | }; |
| 115 | 101 | ||
| 116 | testNoErr(params, [][]const u8 { "-a" }, []u8{0}, []?[]const u8{null}); | 102 | testNoErr(params, [][]const u8{"-a"}, []u8{0}, []?[]const u8{null}); |
| 117 | testNoErr(params, [][]const u8 { "-a", "-b" }, []u8{0,1}, []?[]const u8{null,null}); | 103 | testNoErr(params, [][]const u8{ "-a", "-b" }, []u8{ 0, 1 }, []?[]const u8{ null, null }); |
| 118 | testNoErr(params, [][]const u8 { "-ab" }, []u8{0,1}, []?[]const u8{null,null}); | 104 | testNoErr(params, [][]const u8{"-ab"}, []u8{ 0, 1 }, []?[]const u8{ null, null }); |
| 119 | testNoErr(params, [][]const u8 { "-c=100" }, []u8{2}, []?[]const u8{"100"}); | 105 | testNoErr(params, [][]const u8{"-c=100"}, []u8{2}, []?[]const u8{"100"}); |
| 120 | testNoErr(params, [][]const u8 { "-c100" }, []u8{2}, []?[]const u8{"100"}); | 106 | testNoErr(params, [][]const u8{"-c100"}, []u8{2}, []?[]const u8{"100"}); |
| 121 | testNoErr(params, [][]const u8 { "-c", "100" }, []u8{2}, []?[]const u8{"100"}); | 107 | testNoErr(params, [][]const u8{ "-c", "100" }, []u8{2}, []?[]const u8{"100"}); |
| 122 | testNoErr(params, [][]const u8 { "-abc", "100" }, []u8{0,1,2}, []?[]const u8{null,null,"100"}); | 108 | testNoErr(params, [][]const u8{ "-abc", "100" }, []u8{ 0, 1, 2 }, []?[]const u8{ null, null, "100" }); |
| 123 | testNoErr(params, [][]const u8 { "-abc=100" }, []u8{0,1,2}, []?[]const u8{null,null,"100"}); | 109 | testNoErr(params, [][]const u8{"-abc=100"}, []u8{ 0, 1, 2 }, []?[]const u8{ null, null, "100" }); |
| 124 | testNoErr(params, [][]const u8 { "-abc100" }, []u8{0,1,2}, []?[]const u8{null,null,"100"}); | 110 | testNoErr(params, [][]const u8{"-abc100"}, []u8{ 0, 1, 2 }, []?[]const u8{ null, null, "100" }); |
| 125 | testNoErr(params, [][]const u8 { "--aa" }, []u8{0}, []?[]const u8{null}); | 111 | testNoErr(params, [][]const u8{"--aa"}, []u8{0}, []?[]const u8{null}); |
| 126 | testNoErr(params, [][]const u8 { "--aa", "--bb" }, []u8{0,1}, []?[]const u8{null,null}); | 112 | testNoErr(params, [][]const u8{ "--aa", "--bb" }, []u8{ 0, 1 }, []?[]const u8{ null, null }); |
| 127 | testNoErr(params, [][]const u8 { "--cc=100" }, []u8{2}, []?[]const u8{"100"}); | 113 | testNoErr(params, [][]const u8{"--cc=100"}, []u8{2}, []?[]const u8{"100"}); |
| 128 | testNoErr(params, [][]const u8 { "--cc", "100" }, []u8{2}, []?[]const u8{"100"}); | 114 | testNoErr(params, [][]const u8{ "--cc", "100" }, []u8{2}, []?[]const u8{"100"}); |
| 129 | testNoErr(params, [][]const u8 { "aa" }, []u8{0}, []?[]const u8{null}); | 115 | testNoErr(params, [][]const u8{"aa"}, []u8{0}, []?[]const u8{null}); |
| 130 | testNoErr(params, [][]const u8 { "aa", "bb" }, []u8{0,1}, []?[]const u8{null,null}); | 116 | testNoErr(params, [][]const u8{ "aa", "bb" }, []u8{ 0, 1 }, []?[]const u8{ null, null }); |
| 131 | testNoErr(params, [][]const u8 { "cc=100" }, []u8{2}, []?[]const u8{"100"}); | 117 | testNoErr(params, [][]const u8{"cc=100"}, []u8{2}, []?[]const u8{"100"}); |
| 132 | testNoErr(params, [][]const u8 { "cc", "100" }, []u8{2}, []?[]const u8{"100"}); | 118 | testNoErr(params, [][]const u8{ "cc", "100" }, []u8{2}, []?[]const u8{"100"}); |
| 133 | testNoErr(params, [][]const u8 { "dd" }, []u8{3}, []?[]const u8{"dd"}); | 119 | testNoErr(params, [][]const u8{"dd"}, []u8{3}, []?[]const u8{"dd"}); |
| 134 | } | 120 | } |