const test = require('tape') const lexer = require('../src/lexer') const tt = lexer.tokenTypes test('lexes simple template correctly', t => { t.plan(4) let tokens = lexer.scan( '(div :class "foobar" (p "Lorem ipsum dolor sit amet"))', ) t.deepEqual(tokens.map(token => token.type), [ tt.OPAREN, tt.LITERAL, tt.ATTRIBUTE, tt.QUOTE, tt.LITERAL, tt.QUOTE, tt.OPAREN, tt.LITERAL, tt.QUOTE, tt.LITERAL, tt.QUOTE, tt.CPAREN, tt.CPAREN, tt.EOF, ]) t.equal(tokens[1].value, 'div') t.equal(tokens[2].value, 'class') t.equal(tokens[9].value, 'Lorem ipsum dolor sit amet') }) test('keeps track of line numbers', t => { t.plan(2) let tokens = lexer.scan(`( (div :class "foobar" (p :class "bazquux")) `) t.equal(tokens[2].line, 2) t.equal(tokens[7].line, 3) })