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

225 lines
8.3 KiB
JavaScript

import test from 'tape'
import nlp from '../_lib.js'
const here = '[three/verb-toFuture] '
test('toFuture:', function (t) {
const arr = [
// known forms:
['he walked', 'he will walk'],
['i walked', 'i will walk'],
['we walked', 'we will walk'],
['they walked', 'they will walk'],
['the friends walked', 'the friends will walk'],
['the friend walked', 'the friend will walk'],
['our users walked', 'our users will walk'],
['our user walked', 'our user will walk'],
['the eye closed', 'the eye will close'],
['the eyes closed', 'the eyes will close'],
// copula forms
['i am not cool', 'i will be not cool'],
['i was not cool', 'i will be not cool'],
['i will not be cool', 'i will not be cool'],
['he is not cool', 'he will be not cool'],
['he was not cool', 'he will be not cool'],
['he will not be cool', 'he will not be cool'],
['they are not cool', 'they will be not cool'],
['they were not cool', 'they will be not cool'],
['they will not be cool', 'they will not be cool'],
['their colloseum will open', 'their colloseum will open'],
['their children will open', 'their children will open'],
['he walks', 'he will walk'],
['he walked', 'he will walk'],
['he will walk', 'he will walk'],
['he is walking', 'he will be walking'],
['he was walking', 'he will be walking'],
['i was walking', 'i will be walking'],
['we were walking', 'we will be walking'],
['i am walking', 'i will be walking'],
['he will be walking', 'he will be walking'],
['he has walked', 'he will have walked'],
['he had walked', 'he will have walked'],
['he will have walked', 'he will have walked'],
['he really will have walked', 'he really will have walked'],
['he will really have walked', 'he will really have walked'],
['he will have really walked', 'he will have really walked'],
['he has been walking', 'he will have been walking'],
['he had been walking', 'he will have been walking'],
['he will have been walking', 'he will have been walking'],
['he got walked', 'he will get walked'],
['we got walked', 'we will get walked'],
['i got walked', 'i will get walked'],
['he was walked', 'he will be walked'],
['i was walked', 'i will be walked'],
['soldiers were walked', 'soldiers will be walked'],
['i am being walked', 'i will be walked'],
['we are being walked', 'we will be walked'],
['he was being walked', 'he will be walked'],
// ['had been walked', 'will be walked'], //?
// ['has been walked', 'will be walked'], //?
['have been walked', 'will be walked'],
['were walked', 'will be walked'],
['was being walked', 'will be walked'],
// // // ['has been walked', 'had been walked'],
['had been walked', 'will be walked'],
// // ['will have been walked', 'has been walked'],
['will be walked', 'will be walked'],
['would be walked', 'will be walked'],
['would have been walked', 'will have been walked'],
['is going to walk', 'is going to walk'],
['did walk', 'will walk'],
['used to walk', 'will walk'],
// // ['do walk', 'did walk'],
['does walk', 'will walk'],
// ['he used to walk', 'he will be walking'],
['he did walk', 'he will walk'],
// ['he must walk', 'he must walk'],
// ['he must have walked', 'he must walk'],
// modal/conditions are weird
// ['he can walk', 'he can walk'],
// ['he could walk', 'he can walk'],
// ['he should walk', 'he should walk'],
// want-infinitive
['he wants to walk', 'he will want to walk'],
['he wanted to walk', 'he will want to walk'],
['he will want to walk', 'he will want to walk'],
// more past-tense forms
[`used to claw`, `will claw`],
[`had clawed`, `will have clawed`],
[`have clawed`, `will have clawed`],
[`clawed`, `will claw`],
[`did claw`, `will claw`],
// conjugation -ed issues
[`sing`, `will sing`],
[`sung`, `will sing`],
[`clawed`, `will claw`],
[`trumped`, `will trump`],
[`out-lived`, `will out-live`],
// [`out-live`, `will out-live`],
[`slugged`, `will slug`],
[`splashed`, `will splash`],
[`he uploaded`, `he will upload`],
[`he echoed`, `he will echo`],
[`she absorbed`, `she will absorb`],
[`she bounced`, `she will bounce`],
[`faced`, `will face`],
[`trounced`, `will trounce`],
[`appeared`, `will appear`],
[`sparred`, `will spar`],
[`speared`, `will spear`],
[`they colored`, `they will color`],
[`it cured`, `it will cure`],
[`roared`, `will roar`],
[`withered`, `will wither`],
[`trumpeted`, `will trumpet`],
[`he bloated`, `he will bloat`],
[`he drifted`, `he will drift`],
[`he doubted`, `he will doubt`],
[`he rooted`, `he will root`],
[`he benefited`, `he will benefit`],
[`he suited`, `he will suit`],
[`he attributed`, `he will attribute`],
[`he completed`, `he will complete`],
[`he shouted`, `he will shout`],
[`he limited`, `he will limit`],
[`he prohibited`, `he will prohibit`],
[`he annoyed`, `he will annoy`],
[`he enjoyed`, `he will enjoy`],
[`he prayed`, `he will pray`],
[`he preyed`, `he will prey`],
[`he sprayed`, `he will spray`],
[`strayed`, `will stray`],
[`he lied`, `he will lie`],
[`he qualified`, `he will qualify`],
[`he fluffed`, `he will fluff`],
[`he engulfed`, `he will engulf`],
[`he ruled`, `he will rule`],
[`he sailed`, `he will sail`],
[`he piled`, `he will pile`],
// [`he piled-on`, `he will pile-on`],
[`he styled`, `he will style`],
[`he totaled`, `he will total`],
[`he scheduled`, `he will schedule`],
[`he pulled`, `he will pull`],
[`she whirled`, `she will whirl`],
[`snarled`, `will snarl`],
[`she vexed`, `she will vex`],
[`she relaxed`, `she will relax`],
[`she aligned`, `she will align`],
[`she ruined`, `she will ruin`],
[`she turned`, `she will turn`],
[`it rained`, `it will rain`],
[`she worsened`, `she will worsen`],
[`she filmed`, `she will film`],
[`we nicknamed`, `we will nickname`],
[`we doomed`, `we will doom`],
[`we summed`, `we will sum`],
['i write', 'i will write'],
['spencer writes', 'spencer will write'],
// ['i barely write', 'i will barely write'],
// ['we barely write', 'we will barely write'],
// ['we will barely write', 'we will barely write'],
// [`i'll start looking`, "i'll start looking"],
[`i won't start looking`, 'i won\'t start looking'],
// negatives
['we do not write', 'we will not write'],
['we will not write', 'we will not write'],
['angelina does not write', 'angelina will not write'],
['angelina will not write', 'angelina will not write'],
['there is no hope', 'there will be no hope'],
// ['toronto barely starts', 'toronto will barely start'],
['say it again', 'say it again'],
// ['council votes to deny it', 'council will vote to deny it'],
['nobody will say for certain', 'nobody will say for certain'],
['he will say for certain', 'he will say for certain'],
['she will not say for certain', 'she will not say for certain'],
['waiters are furious', 'waiters will be furious'],
['the waiters will walk out', 'the waiters will walk out'],
['this union will disrupt', 'this union will disrupt'],
['this union has disrupted', 'this union will have disrupted'],
['it will have real feelings', 'it will have real feelings'],
// ['it had no real feelings', 'it had no real feelings'],
// ['it will not have studied enough', 'it had not studied enough'],
// ['spencer will have learned enough', 'spencer will have learned enough'],
// ['spencer will not have learned enough', 'spencer had not learned enough'],
// gerund-phrase
[`he starts seeing`, `he will start seeing`],
[`he started seeing`, `he will start seeing`],
[`he will start seeing`, `he will start seeing`],
[`we start seeing`, `we will start seeing`],
[`we started seeing`, `we will start seeing`],
[`we will start seeing`, `we will start seeing`],
[`we have started seeing`, `we will start seeing`],
[`we will have started seeing`, `we will have started seeing`],
]
arr.forEach(a => {
const doc = nlp(a[0])
doc.verbs().toFutureTense()
t.equal(doc.text(), a[1], here + ' ' + a[0])
})
t.end()
})