atagen

malice

public
Star0
Watch0
d9be72fdb39386b8e5863ac7f41631066c55cb22
2
ssh://brewery@pls.lobotomise.me:33/atagen/malice.git
web/test/keyword-pattern.test.tsTypescript28 lines1.1 KB
1
import assert from 'node:assert/strict';
2
import { test } from 'node:test';
3
import { keywordPattern } from '../src/lib/keyword-pattern.ts';
4
5
test('keywords match whole words without case', () => {
6
  const pattern = keywordPattern(['bolt']);
7
  assert.ok(pattern?.test('hey Bolt, look'));
8
  assert.ok(pattern?.test('bolt'));
9
  assert.equal(pattern?.test('thunderbolts'), false);
10
  assert.equal(pattern?.test('bolt_two'), false);
11
});
12
13
test('keywords treat regex syntax literally and globs as wildcards', () => {
14
  assert.ok(keywordPattern(['c++'])?.test('writing c++ today'));
15
  assert.equal(keywordPattern(['a.b'])?.test('axb'), false);
16
  assert.ok(keywordPattern(['deploy*'])?.test('deployment went out'));
17
  assert.ok(keywordPattern(['gr?y'])?.test('grey skies'));
18
});
19
20
test('keywords outside latin script still respect word edges', () => {
21
  const pattern = keywordPattern(['привет']);
22
  assert.ok(pattern?.test('ну привет'));
23
  assert.equal(pattern?.test('приветствую'), false);
24
});
25
26
test('an empty list matches nothing', () => {
27
  assert.equal(keywordPattern([' ', '']), null);
28
});