UNPKG

node-nlp

Version:

Library for NLU (Natural Language Understanding) done in Node.js

225 lines (166 loc) 8.54 kB
// QUnit Setup //------------------------------------- var test = function() { QUnit.test.apply(QUnit.test, arguments); } var ok = function() { QUnit.assert.ok.apply(QUnit.assert, arguments); } //------------------------------------- test("Test - Single Expression", function() { var text = "五日內我地有d野做"; var results = chrono.parse(text, new Date(2012,7,10)); ok(results.length == 1, JSON.stringify( results ) ); var result = results[0]; if(result){ ok(result.index == 0, 'Wrong index'); ok(result.text == '五日內', result.text ); ok(result.start, JSON.stringify(result.start) ); ok(result.start.get('year') == 2012, 'Test Result - (Year) ' + JSON.stringify(result.start) ); ok(result.start.get('month') == 8, 'Test Result - (Month) ' + JSON.stringify(result.start) ); ok(result.start.get('day') == 15, 'Test Result - (Day) ' + JSON.stringify(result.start) ); var resultDate = result.start.date(); var expectDate = new Date(2012, 8-1, 15, 12); ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate) } var text = "5日之內我地有d野做"; var results = chrono.parse(text, new Date(2012,7,10)); ok(results.length == 1, JSON.stringify( results ) ); var result = results[0]; if(result){ ok(result.index == 0, 'Wrong index'); ok(result.text == '5日之內', result.text ); ok(result.start, JSON.stringify(result.start) ); ok(result.start.get('year') == 2012, 'Test Result - (Year) ' + JSON.stringify(result.start) ); ok(result.start.get('month') == 8, 'Test Result - (Month) ' + JSON.stringify(result.start) ); ok(result.start.get('day') == 15, 'Test Result - (Day) ' + JSON.stringify(result.start) ); var resultDate = result.start.date(); var expectDate = new Date(2012, 8-1, 15, 12); ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate) } var text = "十日內我地有d野做"; var results = chrono.parse(text, new Date(2012,7,10)); ok(results.length == 1, JSON.stringify( results ) ); var result = results[0]; if(result){ ok(result.index == 0, 'Wrong index'); ok(result.text == '十日內', result.text ); ok(result.start, JSON.stringify(result.start) ); ok(result.start.get('year') == 2012, 'Test Result - (Year) ' + JSON.stringify(result.start) ); ok(result.start.get('month') == 8, 'Test Result - (Month) ' + JSON.stringify(result.start) ); ok(result.start.get('day') == 20, 'Test Result - (Day) ' + JSON.stringify(result.start) ); var resultDate = result.start.date(); var expectDate = new Date(2012, 8-1, 20, 12); ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate) } var text = "五分鐘後"; var results = chrono.parse(text, new Date(2012,7,10,12,14)); ok(results.length == 1, JSON.stringify( results ) ); var result = results[0]; if(result){ ok(result.index == 0, 'Wrong index'); ok(result.text == '五分鐘後', result.text ); var resultDate = result.start.date(); var expectDate = new Date(2012,7,10,12,19); ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate) } var text = "一個鐘之內"; var results = chrono.parse(text, new Date(2012,7,10,12,14)); ok(results.length == 1, JSON.stringify( results ) ); var result = results[0]; if(result){ ok(result.index == 0, 'Wrong index'); ok(result.text == '一個鐘之內', result.text ); var resultDate = result.start.date(); var expectDate = new Date(2012,7,10,13,14); ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate) } var text = "5分鐘之後我就收皮"; var results = chrono.parse(text, new Date(2012,7,10,12,14)); ok(results.length == 1, JSON.stringify( results ) ); var result = results[0]; if(result){ ok(result.index == 0, 'Wrong index'); ok(result.text == '5分鐘之後', result.text ); var resultDate = result.start.date(); var expectDate = new Date(2012,7,10,12,19); ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate) } var text = "係5秒之後你就會收皮"; var results = chrono.parse(text, new Date(2012,7, 10, 12, 14)); ok(results.length == 1, JSON.stringify( results ) ); var result = results[0]; if(result){ ok(result.index == 1, 'Wrong index'); ok(result.text == '5秒之後', result.text ); var resultDate = result.start.date(); var expectDate = new Date(2012, 7, 10, 12, 14, 5); ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate) } var text = "半小時之內"; var results = chrono.parse(text, new Date(2012,7,10,12,14)); ok(results.length == 1, JSON.stringify( results ) ); var result = results[0]; if(result){ ok(result.index == 0, 'Wrong index'); ok(result.text == '半小時之內', result.text ); var resultDate = result.start.date(); var expectDate = new Date(2012,7,10,12,44); ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate) } var text = "兩個禮拜內答覆我"; var results = chrono.parse(text, new Date(2012, 7, 10, 12, 14)); ok(results.length == 1, JSON.stringify( results ) ); var result = results[0]; if(result){ ok(result.index == 0, 'Wrong index'); ok(result.text == '兩個禮拜內', result.text ); var resultDate = result.start.date(); var expectDate = new Date(2012, 7, 24, 12); ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate) } var text = "1個月之內答覆我"; var results = chrono.parse(text, new Date(2012, 7, 10, 12, 14)); ok(results.length == 1, JSON.stringify( results ) ); var result = results[0]; if(result){ ok(result.index == 0, 'Wrong index'); ok(result.text == '1個月之內', result.text ); var resultDate = result.start.date(); var expectDate = new Date(2012, 8, 10, 12); ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate) } var text = "幾個月之內答覆我"; var results = chrono.parse(text, new Date(2012, 7, 10, 12, 14)); ok(results.length == 1, JSON.stringify( results ) ); var result = results[0]; if(result){ ok(result.index == 0, 'Wrong index'); ok(result.text == '幾個月之內', result.text ); var resultDate = result.start.date(); var expectDate = new Date(2012, 10, 10, 12); ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate) } var text = "一年內答覆我"; var results = chrono.parse(text, new Date(2012, 7, 10, 12, 14)); ok(results.length == 1, JSON.stringify( results ) ); var result = results[0]; if(result){ ok(result.index == 0, 'Wrong index'); ok(result.text == '一年內', result.text ); var resultDate = result.start.date(); var expectDate = new Date(2013, 7, 10, 12); ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate) } var text = "1年之內答覆我"; var results = chrono.parse(text, new Date(2012, 7, 10, 12, 14)); ok(results.length == 1, JSON.stringify( results ) ); var result = results[0]; if(result){ ok(result.index == 0, 'Wrong index'); ok(result.text == '1年之內', result.text ); var resultDate = result.start.date(); var expectDate = new Date(2013, 7, 10, 12); ok(Math.abs(expectDate.getTime() - resultDate.getTime()) < 100000, 'Test result.startDate ' + resultDate +'/' +expectDate) } });