import test from 'tape' import nlp from '../_lib.js' const here = '[two/freeze-lex] ' test('nonfrozen behaviour', function (t) { nlp.addWords({ 'shoe in': 'Noun', 'mr who': 'Person' }) const doc = nlp('the mr who threw a shoe in the car.') t.ok(doc.has('mr #Preposition threw a #Noun'), here + 'default') t.end() }) test('frozen behaviour', function (t) { nlp.addWords({ 'shoe in': 'Noun', 'mr who': 'Person' }, true) const doc = nlp('the mr who threw a shoe in the car.') t.ok(doc.has('#Person #Person threw a #Noun #Noun the car'), here + 'frozen') t.end() }) test('addWords() frozen', function (t) { nlp.addWords({ 'dr which': 'Place', moose: 'Adverb' }, true) const doc = nlp('i saw dr. which on ice in Moose, Canada') t.equal(doc.has('saw #Place #Place on'), true, here) t.equal(doc.has('in #Adverb #Place$'), true, here) t.end() }) test('freeze + tags', function (t) { nlp.addTags({ Diagnostic: { isA: 'Noun' } }) nlp.addWords({ echo: 'Diagnostic', scan: 'Diagnostic' }, true) let doc = nlp(`she should have a further scan in a year.`) t.ok(doc.has('(scan && #Diagnostic)'), here + 'scan #1') doc = nlp('She went for a scan.') t.ok(doc.has('(scan && #Diagnostic)'), here + 'scan #2') doc = nlp('The plan is for a further echo in October.') t.ok(doc.has('(echo && #Diagnostic)'), here + 'echo #1') doc = nlp('He had an echo today.') t.ok(doc.has('(echo && #Diagnostic)'), here + 'echo #2') t.end() }) test('more-lex', function (t) { nlp.addWords({ 'fast times at freddy': 'Cardinal' }, true) const doc = nlp('i saw fast times at freddy, on the weekend') t.equal(doc.has('i saw #Cardinal+ on'), true, here + 'is cardinal') t.equal(doc.has('(#Adjective|#Person)'), false, here + 'no person') const m = doc.match('fast times').freeze() doc.tag('Noun') doc.tag('ImdbTag') t.equal(m.has('#Noun'), false, here + 'no noun') t.equal(m.has('#ImdbTag'), true, here + 'has random tag') t.end() })