| package revision |
| |
| import ( |
| "bytes" |
| "testing" |
| |
| . "gopkg.in/check.v1" |
| ) |
| |
| func Test(t *testing.T) { TestingT(t) } |
| |
| type ScannerSuite struct{} |
| |
| var _ = Suite(&ScannerSuite{}) |
| |
| func (s *ScannerSuite) TestReadColon(c *C) { |
| scanner := newScanner(bytes.NewBufferString(":")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, ":") |
| c.Assert(tok, Equals, colon) |
| } |
| |
| func (s *ScannerSuite) TestReadTilde(c *C) { |
| scanner := newScanner(bytes.NewBufferString("~")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, "~") |
| c.Assert(tok, Equals, tilde) |
| } |
| |
| func (s *ScannerSuite) TestReadCaret(c *C) { |
| scanner := newScanner(bytes.NewBufferString("^")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, "^") |
| c.Assert(tok, Equals, caret) |
| } |
| |
| func (s *ScannerSuite) TestReadDot(c *C) { |
| scanner := newScanner(bytes.NewBufferString(".")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, ".") |
| c.Assert(tok, Equals, dot) |
| } |
| |
| func (s *ScannerSuite) TestReadSlash(c *C) { |
| scanner := newScanner(bytes.NewBufferString("/")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, "/") |
| c.Assert(tok, Equals, slash) |
| } |
| |
| func (s *ScannerSuite) TestReadEOF(c *C) { |
| scanner := newScanner(bytes.NewBufferString(string(rune(0)))) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, "") |
| c.Assert(tok, Equals, eof) |
| } |
| |
| func (s *ScannerSuite) TestReadNumber(c *C) { |
| scanner := newScanner(bytes.NewBufferString("1234")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, "1234") |
| c.Assert(tok, Equals, number) |
| } |
| |
| func (s *ScannerSuite) TestReadSpace(c *C) { |
| scanner := newScanner(bytes.NewBufferString(" ")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, " ") |
| c.Assert(tok, Equals, space) |
| } |
| |
| func (s *ScannerSuite) TestReadControl(c *C) { |
| scanner := newScanner(bytes.NewBufferString("")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, "\x01") |
| c.Assert(tok, Equals, control) |
| } |
| |
| func (s *ScannerSuite) TestReadOpenBrace(c *C) { |
| scanner := newScanner(bytes.NewBufferString("{")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, "{") |
| c.Assert(tok, Equals, obrace) |
| } |
| |
| func (s *ScannerSuite) TestReadCloseBrace(c *C) { |
| scanner := newScanner(bytes.NewBufferString("}")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, "}") |
| c.Assert(tok, Equals, cbrace) |
| } |
| |
| func (s *ScannerSuite) TestReadMinus(c *C) { |
| scanner := newScanner(bytes.NewBufferString("-")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, "-") |
| c.Assert(tok, Equals, minus) |
| } |
| |
| func (s *ScannerSuite) TestReadAt(c *C) { |
| scanner := newScanner(bytes.NewBufferString("@")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, "@") |
| c.Assert(tok, Equals, at) |
| } |
| |
| func (s *ScannerSuite) TestReadAntislash(c *C) { |
| scanner := newScanner(bytes.NewBufferString("\\")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, "\\") |
| c.Assert(tok, Equals, aslash) |
| } |
| |
| func (s *ScannerSuite) TestReadQuestionMark(c *C) { |
| scanner := newScanner(bytes.NewBufferString("?")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, "?") |
| c.Assert(tok, Equals, qmark) |
| } |
| |
| func (s *ScannerSuite) TestReadAsterisk(c *C) { |
| scanner := newScanner(bytes.NewBufferString("*")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, "*") |
| c.Assert(tok, Equals, asterisk) |
| } |
| |
| func (s *ScannerSuite) TestReadOpenBracket(c *C) { |
| scanner := newScanner(bytes.NewBufferString("[")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, "[") |
| c.Assert(tok, Equals, obracket) |
| } |
| |
| func (s *ScannerSuite) TestReadExclamationMark(c *C) { |
| scanner := newScanner(bytes.NewBufferString("!")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, "!") |
| c.Assert(tok, Equals, emark) |
| } |
| |
| func (s *ScannerSuite) TestReadWord(c *C) { |
| scanner := newScanner(bytes.NewBufferString("abcde")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, "abcde") |
| c.Assert(tok, Equals, word) |
| } |
| |
| func (s *ScannerSuite) TestReadTokenError(c *C) { |
| scanner := newScanner(bytes.NewBufferString("`")) |
| tok, data, err := scanner.scan() |
| |
| c.Assert(err, Equals, nil) |
| c.Assert(data, Equals, "`") |
| c.Assert(tok, Equals, tokenError) |
| } |