import assert from 'node:assert/strict';
import { test } from 'node:test';
import { keywordPattern } from '../src/lib/keyword-pattern.ts';

test('keywords match whole words without case', () => {
  const pattern = keywordPattern(['bolt']);
  assert.ok(pattern?.test('hey Bolt, look'));
  assert.ok(pattern?.test('bolt'));
  assert.equal(pattern?.test('thunderbolts'), false);
  assert.equal(pattern?.test('bolt_two'), false);
});

test('keywords treat regex syntax literally and globs as wildcards', () => {
  assert.ok(keywordPattern(['c++'])?.test('writing c++ today'));
  assert.equal(keywordPattern(['a.b'])?.test('axb'), false);
  assert.ok(keywordPattern(['deploy*'])?.test('deployment went out'));
  assert.ok(keywordPattern(['gr?y'])?.test('grey skies'));
});

test('keywords outside latin script still respect word edges', () => {
  const pattern = keywordPattern(['привет']);
  assert.ok(pattern?.test('ну привет'));
  assert.equal(pattern?.test('приветствую'), false);
});

test('an empty list matches nothing', () => {
  assert.equal(keywordPattern([' ', '']), null);
});
