56 lines
1.9 KiB
JavaScript
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()
|
|
})
|