Files
pnpm/object/property-path/test/token/Identifier.test.ts

91 lines
2.8 KiB
TypeScript

import { type Identifier, parseIdentifier } from '../../src/index.js'
test('not an identifier', () => {
expect(parseIdentifier('')).toBeUndefined()
expect(parseIdentifier('-')).toBeUndefined()
expect(parseIdentifier('+a')).toBeUndefined()
expect(parseIdentifier('7z')).toBeUndefined()
})
test('identifier only', () => {
expect(parseIdentifier('_')).toStrictEqual([{
type: 'identifier',
content: '_',
} as Identifier, ''])
expect(parseIdentifier('a')).toStrictEqual([{
type: 'identifier',
content: 'a',
} as Identifier, ''])
expect(parseIdentifier('abc')).toStrictEqual([{
type: 'identifier',
content: 'abc',
} as Identifier, ''])
expect(parseIdentifier('helloWorld')).toStrictEqual([{
type: 'identifier',
content: 'helloWorld',
} as Identifier, ''])
expect(parseIdentifier('HelloWorld')).toStrictEqual([{
type: 'identifier',
content: 'HelloWorld',
} as Identifier, ''])
expect(parseIdentifier('a123')).toStrictEqual([{
type: 'identifier',
content: 'a123',
} as Identifier, ''])
expect(parseIdentifier('abc123')).toStrictEqual([{
type: 'identifier',
content: 'abc123',
} as Identifier, ''])
expect(parseIdentifier('helloWorld123')).toStrictEqual([{
type: 'identifier',
content: 'helloWorld123',
} as Identifier, ''])
expect(parseIdentifier('HelloWorld123')).toStrictEqual([{
type: 'identifier',
content: 'HelloWorld123',
} as Identifier, ''])
expect(parseIdentifier('hello_world_123')).toStrictEqual([{
type: 'identifier',
content: 'hello_world_123',
} as Identifier, ''])
expect(parseIdentifier('__abc_123__')).toStrictEqual([{
type: 'identifier',
content: '__abc_123__',
} as Identifier, ''])
expect(parseIdentifier('_0')).toStrictEqual([{
type: 'identifier',
content: '_0',
} as Identifier, ''])
expect(parseIdentifier('_foo')).toStrictEqual([{
type: 'identifier',
content: '_foo',
} as Identifier, ''])
})
test('identifier and tail', () => {
expect(parseIdentifier('a+b')).toStrictEqual([{
type: 'identifier',
content: 'a',
} as Identifier, '+b'])
expect(parseIdentifier('abc.def')).toStrictEqual([{
type: 'identifier',
content: 'abc',
} as Identifier, '.def'])
expect(parseIdentifier('helloWorld123-456')).toStrictEqual([{
type: 'identifier',
content: 'helloWorld123',
} as Identifier, '-456'])
expect(parseIdentifier('HelloWorld123 456')).toStrictEqual([{
type: 'identifier',
content: 'HelloWorld123',
} as Identifier, ' 456'])
expect(parseIdentifier('hello_world_123 456')).toStrictEqual([{
type: 'identifier',
content: 'hello_world_123',
} as Identifier, ' 456'])
expect(parseIdentifier('__abc_123__++__def_456__')).toStrictEqual([{
type: 'identifier',
content: '__abc_123__',
} as Identifier, '++__def_456__'])
})