|
| 1 | +package main |
| 2 | + |
| 3 | +import ( |
| 4 | + "strings" |
| 5 | + "testing" |
| 6 | +) |
| 7 | + |
| 8 | +type parseTest struct { |
| 9 | + text string |
| 10 | + cmd string |
| 11 | + force bool |
| 12 | + tail int //length |
| 13 | + err bool //exists |
| 14 | +} |
| 15 | + |
| 16 | +func TestParseArgs(t *testing.T) { |
| 17 | + tests := []parseTest{ |
| 18 | + parseTest{"gen", "", false, 0, false}, |
| 19 | + parseTest{"gen -f", "", true, 0, false}, |
| 20 | + parseTest{"gen yadda", "", false, 0, true}, // unknown command |
| 21 | + parseTest{"gen -bar", "", false, 0, true}, // tail is not ok |
| 22 | + parseTest{"gen add", "add", false, 0, false}, |
| 23 | + parseTest{"gen add foo bar", "add", false, 2, false}, // tail is ok |
| 24 | + parseTest{"gen add -f", "add", true, 0, true}, // force is not ok |
| 25 | + parseTest{"gen get", "get", false, 0, false}, |
| 26 | + parseTest{"gen get foo bar", "get", false, 2, false}, // tail is ok |
| 27 | + parseTest{"gen get -f", "get", true, 0, true}, // force is not ok |
| 28 | + parseTest{"gen help", "help", false, 0, false}, |
| 29 | + parseTest{"gen help foo bar", "help", false, 0, true}, // tail is not ok |
| 30 | + parseTest{"gen help -f", "help", true, 0, true}, // force is not ok |
| 31 | + parseTest{"gen list", "list", false, 0, false}, |
| 32 | + parseTest{"gen list foo bar", "list", false, 0, true}, // tail is not ok |
| 33 | + parseTest{"gen list -f", "list", true, 0, true}, // force is not ok |
| 34 | + parseTest{"gen watch", "watch", false, 0, false}, |
| 35 | + parseTest{"gen watch foo bar", "watch", false, 0, true}, // tail is not ok |
| 36 | + parseTest{"gen watch -f", "watch", true, 0, false}, // force is ok |
| 37 | + } |
| 38 | + |
| 39 | + for i, test := range tests { |
| 40 | + cmd, force, tail, err := parseArgs(strings.Split(test.text, " ")) |
| 41 | + if cmd != test.cmd { |
| 42 | + t.Errorf("tests[%d]: cmd should be %q, got %q", i, test.cmd, cmd) |
| 43 | + } |
| 44 | + if force != test.force { |
| 45 | + t.Errorf("tests[%d]: force should be %v, got %v", i, test.force, force) |
| 46 | + } |
| 47 | + if len(tail) != test.tail { |
| 48 | + t.Errorf("tests[%d]: len(tail) should be %v, got %v", i, test.tail, len(tail)) |
| 49 | + } |
| 50 | + if (err != nil) != test.err { |
| 51 | + t.Errorf("tests[%d]: err existence should be %v, got %v", i, test.err, err) |
| 52 | + } |
| 53 | + } |
| 54 | +} |
0 commit comments