this repo has no description
at main 79 lines 2.9 kB view raw
1import assert from 'node:assert' 2import { describe, test } from 'node:test' 3import { TaggedStringParser } from '../../src/TaggedStringParser.ts' 4 5describe('Basic Parsing', () => { 6 test('should extract single entity', () => { 7 const parser = new TaggedStringParser() 8 const result = parser.parse('[operation:OP-123]') 9 10 assert.strictEqual(result.entities.length, 1) 11 assert.strictEqual(result.entities[0].type, 'operation') 12 assert.strictEqual(result.entities[0].value, 'OP-123') 13 assert.strictEqual(result.entities[0].position, 0) 14 }) 15 16 test('should extract multiple entities in one message', () => { 17 const parser = new TaggedStringParser() 18 const result = parser.parse( 19 '[operation:OP-123] started with [changes:5] to [stack:ST-456]', 20 ) 21 22 assert.strictEqual(result.entities.length, 3) 23 assert.strictEqual(result.entities[0].type, 'operation') 24 assert.strictEqual(result.entities[0].value, 'OP-123') 25 assert.strictEqual(result.entities[1].type, 'changes') 26 assert.strictEqual(result.entities[1].value, '5') 27 assert.strictEqual(result.entities[2].type, 'stack') 28 assert.strictEqual(result.entities[2].value, 'ST-456') 29 }) 30 31 test('should handle messages without entities', () => { 32 const parser = new TaggedStringParser() 33 const result = parser.parse('This is a plain log message') 34 35 assert.strictEqual(result.entities.length, 0) 36 assert.strictEqual(result.originalMessage, 'This is a plain log message') 37 }) 38 39 test('should handle empty string', () => { 40 const parser = new TaggedStringParser() 41 const result = parser.parse('') 42 43 assert.strictEqual(result.entities.length, 0) 44 assert.strictEqual(result.originalMessage, '') 45 }) 46 47 test('should return ParseResult in delimiter-free mode', () => { 48 const parser = new TaggedStringParser({ delimiters: false }) 49 const result = parser.parse('key=value') 50 51 assert.ok(result) 52 assert.ok(result.entities) 53 assert.ok(result.originalMessage) 54 assert.strictEqual(result.originalMessage, 'key=value') 55 }) 56 57 test('should return ParseResult in delimited mode', () => { 58 const parser = new TaggedStringParser() 59 const result = parser.parse('[key:value]') 60 61 assert.ok(result) 62 assert.ok(result.entities) 63 assert.ok(result.originalMessage) 64 assert.strictEqual(result.originalMessage, '[key:value]') 65 }) 66 67 test('should handle empty string in both modes', () => { 68 const delimiterFreeParser = new TaggedStringParser({ delimiters: false }) 69 const delimitedParser = new TaggedStringParser() 70 71 const result1 = delimiterFreeParser.parse('') 72 const result2 = delimitedParser.parse('') 73 74 assert.strictEqual(result1.entities.length, 0) 75 assert.strictEqual(result1.originalMessage, '') 76 assert.strictEqual(result2.entities.length, 0) 77 assert.strictEqual(result2.originalMessage, '') 78 }) 79})