atagen

malice

public
Star0
Watch0
20fe182f3204e4d4923607816147c3fa0ae4cccc
2
ssh://brewery@pls.lobotomise.me:33/atagen/malice.git

Blame: web/test/keyword-pattern.test.ts

a4555a7eae2datagen2026-10-25 09:18 UTC1
import assert from 'node:assert/strict';
a4555a7eae2datagen2026-10-25 09:18 UTC2
import { test } from 'node:test';
a4555a7eae2datagen2026-10-25 09:18 UTC3
import { keywordPattern } from '../src/lib/keyword-pattern.ts';
a4555a7eae2datagen2026-10-25 09:18 UTC4
a4555a7eae2datagen2026-10-25 09:18 UTC5
test('keywords match whole words without case', () => {
a4555a7eae2datagen2026-10-25 09:18 UTC6
  const pattern = keywordPattern(['bolt']);
a4555a7eae2datagen2026-10-25 09:18 UTC7
  assert.ok(pattern?.test('hey Bolt, look'));
a4555a7eae2datagen2026-10-25 09:18 UTC8
  assert.ok(pattern?.test('bolt'));
a4555a7eae2datagen2026-10-25 09:18 UTC9
  assert.equal(pattern?.test('thunderbolts'), false);
a4555a7eae2datagen2026-10-25 09:18 UTC10
  assert.equal(pattern?.test('bolt_two'), false);
a4555a7eae2datagen2026-10-25 09:18 UTC11
});
a4555a7eae2datagen2026-10-25 09:18 UTC12
a4555a7eae2datagen2026-10-25 09:18 UTC13
test('keywords treat regex syntax literally and globs as wildcards', () => {
a4555a7eae2datagen2026-10-25 09:18 UTC14
  assert.ok(keywordPattern(['c++'])?.test('writing c++ today'));
a4555a7eae2datagen2026-10-25 09:18 UTC15
  assert.equal(keywordPattern(['a.b'])?.test('axb'), false);
a4555a7eae2datagen2026-10-25 09:18 UTC16
  assert.ok(keywordPattern(['deploy*'])?.test('deployment went out'));
a4555a7eae2datagen2026-10-25 09:18 UTC17
  assert.ok(keywordPattern(['gr?y'])?.test('grey skies'));
a4555a7eae2datagen2026-10-25 09:18 UTC18
});
a4555a7eae2datagen2026-10-25 09:18 UTC19
a4555a7eae2datagen2026-10-25 09:18 UTC20
test('keywords outside latin script still respect word edges', () => {
a4555a7eae2datagen2026-10-25 09:18 UTC21
  const pattern = keywordPattern(['привет']);
a4555a7eae2datagen2026-10-25 09:18 UTC22
  assert.ok(pattern?.test('ну привет'));
a4555a7eae2datagen2026-10-25 09:18 UTC23
  assert.equal(pattern?.test('приветствую'), false);
a4555a7eae2datagen2026-10-25 09:18 UTC24
});
a4555a7eae2datagen2026-10-25 09:18 UTC25
a4555a7eae2datagen2026-10-25 09:18 UTC26
test('an empty list matches nothing', () => {
a4555a7eae2datagen2026-10-25 09:18 UTC27
  assert.equal(keywordPattern([' ', '']), null);
a4555a7eae2datagen2026-10-25 09:18 UTC28
});