Files
2026-07-13 12:48:55 +08:00

56 lines
1.9 KiB
JavaScript

import test from 'tape'
import nlp from '../_lib.js'
const here = '[two/min-max] '
test('match min-max', function (t) {
let doc = nlp('hello1 one hello2').match('#Value{7,9}')
t.equal(doc.out(), '', here + 'match was too short')
doc = nlp('hello1 one two three four five hello2').match('#Value{3}')
t.equal(doc.out(), 'one two three', here + 'exactly three')
doc = nlp('hello1 one two three four five hello2').match('#Value{3,3}')
t.equal(doc.out(), 'one two three', here + 'still exactly three')
doc = nlp('hello1 one two three four five hello2').match('#Value{3,}')
t.equal(doc.out(), 'one two three four five', here + 'minimum three')
doc = nlp('hello1 one two three four five hello2').match('hello1 .{3}')
t.equal(doc.out(), 'hello1 one two three', here + 'unspecific greedy exact length')
doc = nlp('hello1 one two').match('hello1 .{3}')
t.equal(doc.out(), '', here + 'unspecific greedy not long enough')
t.end()
})
test('min-max with 0', function (t) {
const arr = [
['he got a car for christmas', 'a car'],
['a car', 'a car'],
['a really cool car', 'a really cool car'],
['he got a cool car for christmas', 'a cool car'],
['he got a really cool car for christmas', 'a really cool car'],
['he got a really cool fast car for christmas', 'a really cool fast car'],
['he got a really super cool fast car for christmas', ''],
// test false-negatives
['he got a hat for christmas', ''],
['he got a clever hat for christmas', ''],
['he got a clever nice cool warm hat for christmas', ''],
]
arr.forEach(a => {
const doc = nlp(a[0])
const m = doc.match('a .{0,3} car')
t.equal(m.text(), a[1], here + a[0])
})
const doc = nlp('got a car')
let m = doc.match('a .{0,3}? car')
t.equal(m.text(), 'a car', here + 'with-question-mark')
m = doc.match('a .{0,3} car')
t.equal(m.text(), 'a car', here + 'without-question-mark')
t.end()
})