rofrischmann/tokenize-sync

View on GitHub
modules/__tests__/tokenizer-test.js

Summary

Maintainability
A
0 mins
Test Coverage
import tokenize from '../tokenize'

const ruleMap = {
  identifier: /^[a-z-]+$/i,
  number: /^\d+$/,
  whitespace: /^\s+$/,
  comma: /^,+$/
}

describe('Tokenizing strings', () => {
  it('should return an array of tokens', () => {
    expect(tokenize('test,  12 foobar13', ruleMap)).toEqual([
      {
        type: 'identifier',
        value: 'test',
        start: 0,
        end: 4
      },
      {
        type: 'comma',
        value: ',',
        start: 4,
        end: 5
      },
      {
        type: 'whitespace',
        value: '  ',
        start: 5,
        end: 7
      },
      {
        type: 'number',
        value: '12',
        start: 7,
        end: 9
      },
      {
        type: 'whitespace',
        value: ' ',
        start: 9,
        end: 10
      },
      {
        type: 'identifier',
        value: 'foobar',
        start: 10,
        end: 16
      },
      {
        type: 'number',
        value: '13',
        start: 16,
        end: 18
      }
    ])
  })

  it('should use a defaultTokenType', () => {
    expect(tokenize('test $$', ruleMap, 'unknown')).toEqual([
      { type: 'identifier', value: 'test', start: 0, end: 4 },
      { type: 'whitespace', value: ' ', start: 4, end: 5 },
      {
        type: 'unknown',
        value: '$',
        start: 5,
        end: 6
      },
      {
        type: 'unknown',
        value: '$',
        start: 6,
        end: 7
      }
    ])
  })
})