(t *testing.T)
| 3 | import "testing" |
| 4 | |
| 5 | func TestParseModestring(t *testing.T) { |
| 6 | cases := []struct { |
| 7 | Str string |
| 8 | Parses bool |
| 9 | Mode Mode |
| 10 | }{ |
| 11 | // all none default |
| 12 | {"5000,5e2,rtscts", true, Mode{5000, 5, E, 2, RTSCTS_HANDSHAKE}}, |
| 13 | // all none default |
| 14 | {"115200,7n2,rtscts", true, Mode{115200, 7, N, 2, RTSCTS_HANDSHAKE}}, |
| 15 | // only decimal baudrates |
| 16 | {"0x5,8n1,rtscts", false, Mode{}}, |
| 17 | // a standard case |
| 18 | {"57600,8n1", true, Mode{57600, 8, N, 1, NO_HANDSHAKE}}, |
| 19 | // 8 bit default |
| 20 | {"20,n1,rtscts", true, Mode{20, 8, N, 1, RTSCTS_HANDSHAKE}}, |
| 21 | // 8 bit, N default |
| 22 | {"25,2,rtscts", true, Mode{25, 8, N, 2, RTSCTS_HANDSHAKE}}, |
| 23 | // no handshake default |
| 24 | {"112,8o2", true, Mode{112, 8, O, 2, NO_HANDSHAKE}}, |
| 25 | // parity can be left at default |
| 26 | {"115,82,rtscts", true, Mode{115, 8, N, 2, RTSCTS_HANDSHAKE}}, |
| 27 | // stop bits can be left at default |
| 28 | {"20,7e,rtscts", true, Mode{20, 7, E, 1, RTSCTS_HANDSHAKE}}, |
| 29 | // alternate default handshake |
| 30 | {"20,7e,", true, Mode{20, 7, E, 1, NO_HANDSHAKE}}, |
| 31 | // unusual, but possible: just set the stopbits |
| 32 | {"37,2", true, Mode{37, 8, N, 2, NO_HANDSHAKE}}, |
| 33 | // 0 instead of O |
| 34 | {"21,801", false, Mode{}}, |
| 35 | // 6 databits |
| 36 | {"52,6e1", true, Mode{52, 6, E, 1, NO_HANDSHAKE}}, |
| 37 | // wrong handshake format |
| 38 | {"54,8n1,invalid", false, Mode{}}, |
| 39 | // all default framing format |
| 40 | {"66,,rtscts", true, Mode{66, 8, N, 1, RTSCTS_HANDSHAKE}}, |
| 41 | } |
| 42 | |
| 43 | for i, c := range cases { |
| 44 | mode, err := ParseModestring(c.Str) |
| 45 | if c.Parses && err != nil { |
| 46 | t.Errorf("case %d: expected to parse, but errors with %q", i, err) |
| 47 | continue |
| 48 | } else if !c.Parses && err == nil { |
| 49 | t.Errorf("case %d: expected to error, but parses as %v", i, mode) |
| 50 | continue |
| 51 | } |
| 52 | |
| 53 | if !c.Parses && err != nil { |
| 54 | t.Logf("str %q error %s", c.Str, err) |
| 55 | continue |
| 56 | } |
| 57 | |
| 58 | if mode != c.Mode { |
| 59 | t.Errorf("case %d: got %v, want %v", i, mode, c.Mode) |
| 60 | continue |
| 61 | } |
| 62 | } |
nothing calls this directly
no test coverage detected