80 lines
3.2 KiB
JavaScript
80 lines
3.2 KiB
JavaScript
import test from 'tape'
|
|
import nlp from './_lib.js'
|
|
|
|
const context = {
|
|
today: '2021-04-17', //saturday
|
|
timezone: 'Canada/Eastern',
|
|
}
|
|
|
|
const arr = [
|
|
// independant dates
|
|
['tomorrow, tuesday, wednesday', ['apr 18', 'apr 20', 'apr 21']],
|
|
['mon, tuesday', ['apr 19', 'apr 20']],
|
|
['mon, tuesday, wednesday', ['apr 19', 'apr 20', 'apr 21']],
|
|
['jan 2 or jan 4', ['jan 2nd', 'jan 4th']],
|
|
['jan 6 and jan 9', ['jan 6th', 'jan 9th']],
|
|
['between jan 5 and jan 10', ['jan 5-10']],
|
|
['feb 5 or next weekend', ['february 5', 'apr 24']],
|
|
['next friday, this monday', ['fri 23', 'mon 19']],
|
|
['jan or feb', ['jan 1', 'feb 1']],
|
|
['january and in feb', ['jan 1', 'feb 1']],
|
|
['during march or september', ['march 1', 'september 1']],
|
|
['march, may, or june', ['march 1', 'may 1', 'june 1']],
|
|
['may or june', ['may 1', 'june 1']],
|
|
['sunday or monday', ['sunday 18', 'monday 19']],
|
|
['april 1 or may 2', ['april 1', 'may 2']],
|
|
['april 1 and may 2', ['april 1', 'may 2']],
|
|
['july 4 or july 5', ['july 4', 'july 5']],
|
|
['july 4 and july 5', ['july 4', 'july 5']],
|
|
['oct 31 or nov 1', ['oct 31', 'nov 1']],
|
|
['march 1 or april 2 2022', ['march 1 2022', 'april 2 2022']],
|
|
['in march or in april', ['march 1', 'april 1']],
|
|
['march and april', ['march 1', 'april 1']],
|
|
['march or june 2019', ['march 1 2019', 'june 1 2019']],
|
|
['during april or may', ['april 1', 'may 1']],
|
|
['january or february 2022', ['jan 1 2022', 'feb 1 2022']],
|
|
['only in 2018 and 2020', ['2018', '2020']],
|
|
['dec 25 or jan 1', ['dec 25', 'jan 1']],
|
|
|
|
// dependant date combos
|
|
// ['march 3rd and 4th', ['mar 3', 'mar 4']],
|
|
['june 3rd and 4th', ['jun 3', 'jun 4']],
|
|
['feb 2 or third', ['feb 2nd', 'feb 3']],
|
|
['february 5th, 6th or 7th', ['feb 5', 'feb 6', 'feb 7']],
|
|
['february 5th, 6th and 7th', ['feb 5', 'feb 6', 'feb 7']],
|
|
['sept or june 1998', ['sept 1 1998', 'june 1 1998']],
|
|
['3, 4, or 5 of Feb 1998', ['feb 3 1998', 'feb 4 1998', 'feb 5 1998']],
|
|
['3, 4, or 5 of February', ['feb 3', 'feb 4', 'feb 5']],
|
|
['jan 22, 23, 28', ['jan 22', 'jan 23', 'jan 28']],
|
|
['jan 22, 23, 28 1998', ['jan 22 1998', 'jan 23 1998', 'jan 28 1998']],
|
|
['jan 5 or 8', ['jan 5th', 'jan 8th']],
|
|
['jan 5 and 8', ['jan 5th', 'jan 8th']],
|
|
['jan 5 8', ['jan 5th', 'jan 8th']],
|
|
['5 or 8 of jan', ['jan 5th', 'jan 8th']],
|
|
['5 and 8 of jan', ['jan 5th', 'jan 8th']],
|
|
['4 or 5 of july', ['july 4', 'july 5']],
|
|
['4 and 5 of july', ['july 4', 'july 5']],
|
|
['1st or 2nd of march', ['mar 1', 'mar 2']],
|
|
['1 and 2 of march', ['mar 1', 'mar 2']],
|
|
['1, 2 and 3 of march', ['mar 1', 'mar 2', 'mar 3']],
|
|
['the 1st or 2nd of may', ['may 1', 'may 2']],
|
|
['april 5, 6, 7', ['apr 5', 'apr 6', 'apr 7']],
|
|
['aug 3 or 10', ['aug 3', 'aug 10']],
|
|
['aug 3 and 10', ['aug 3', 'aug 10']],
|
|
['3 or 4 of aug', ['aug 3', 'aug 4']],
|
|
['sept 1, 2, 3', ['sept 1', 'sept 2', 'sept 3']],
|
|
['sept 1 2 3', ['sept 1', 'sept 2', 'sept 3']],
|
|
]
|
|
|
|
test('multi-dates', function (t) {
|
|
arr.forEach((a) => {
|
|
const found = nlp(a[0]).dates(context).get()
|
|
t.equal(found.length, a[1].length, '[length] ' + a[0])
|
|
a[1].forEach((str, i) => {
|
|
const one = nlp(str).dates(context).get()[0]
|
|
t.equal((found[i] || {}).start, one.start, `[combo: ${str}] '${a[0]}'`)
|
|
})
|
|
})
|
|
t.end()
|
|
})
|