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