1'use strict';
2
3var assert = require('assert');
4var TokenStream = require('../');
5
6assert.throws(function () {
7  new TokenStream('foo,bar');
8});
9var stream = new TokenStream([
10  'a',
11  'b',
12  'c',
13  'd'
14]);
15assert.throws(function () {
16  stream.lookahead(9);
17});
18assert(stream.peek() === 'a');
19assert(stream.lookahead(0) == 'a');
20assert(stream.lookahead(1) == 'b');
21
22assert(stream.advance() === 'a');
23assert(stream.peek() === 'b');
24assert(stream.lookahead(0) == 'b');
25assert(stream.lookahead(1) == 'c');
26
27stream.defer('z');
28assert(stream.peek() === 'z');
29assert(stream.lookahead(0) == 'z');
30assert(stream.lookahead(1) == 'b');
31assert(stream.advance() === 'z');
32assert(stream.advance() === 'b');
33assert(stream.advance() === 'c');
34assert(stream.advance() === 'd');
35assert.throws(function () {
36  stream.peek();
37});
38assert.throws(function () {
39  stream.lookahead(0);
40});
41assert.throws(function () {
42  stream.lookahead(1);
43});
44assert.throws(function () {
45  stream.advance();
46});
47