checkcond
Version:
check value against condition string
485 lines (477 loc) • 12.7 kB
JavaScript
'use strict';
var expect = require('chai').expect;
var compiler = require('../index').Compiler;
var check = require('../index').Check;
var checkDirect = require('../index').CheckDirect;
var testDigits = [
["< 1.000",[
[-5, true],
[ ],
[ ],
[ ]
]
],
[">= 5",[
[ ],
[ ],
[ ],
[ ]
]
],
["<= 5",[
[ ],
['5', true],
[ ],
[ ],
[ ]
]
],
[">= 5.001",[
[ ],
[ ],
[ ]
]
],
["[5..10]",[
[ ],
[ ],
[ ]
]
],
["< 10, [5..100]",[
[ ],
[ ],
[ ],
[ ]
]
],
["< 1000, !([5..100])",[
[-50, true],
[ ],
[ ],
[ ],
[ ]
]
],
["!([5..100]), < 1000",[
[-50, true],
[ ],
[ ],
[ ],
[ ]
]
],
["!([5..100],[200..500])",[
[-50, true],
[ ],
[ ],
[ ],
[ ],
[ ]
]
],
["[5.05..10.05],[70..100],-10.56",[
[ ],
[ ],
[ ],
[-10.56, true],
[-10, false],
[ ]
]
],
["[5.05..10.05],[70..100]",[
[ ],
[ ],
[ ],
[ ]
]
],
["]5.05..10.05],[70..100[",[
[ ],
[ ],
[ ],
[ ]
]
],
["[5.05..10.05[,]70..100]",[
[ ],
[ ],
[ ],
[ ]
]
],
["]5.05..10.05[,]70..100[",[
[ ],
[ ],
[ ],
[ ],
[ ],
[ ]
]
],
["not(5,[7..9],12)",[
[ ],
[ ],
[ ],
[ ],
[ ],
[ ]
]
],
["not()",[ // all values are allowed
[ ],
[ ]
]
],
[">",[ // missing parameter - all values are allowed
[ ],
[ ]
]
],
[">=",[ // missing parameter - all values are allowed
[ ],
[ ]
]
],
["<",[ // missing parameter - all values are allowed
[ ],
[ ]
]
],
["<=",[ // missing parameter - all values are allowed
[ ],
[ ]
]
],
["[5..]",[ // missing parameter - all values are allowed
[ ],
[ ]
]
],
["[..5]",[ // missing parameter - all values are allowed
[ ],
[ ]
]
]
];
var testDates = [
['< 01.01.2017', [
['2015-12-12', true],
['2019-03-05', false]
]
],
['< 2017-01-01', [
['2015-12-12', true],
['2019-03-05', false]
]
],
['25.12.2017', [
['2017-12-25', true],
['12/25/2017', true],
['2017/12/25', true],
['25.12.2017', true]
]
],
['2017-12-25', [
['2017-12-25', true],
['12/25/2017', true],
['2017/12/25', true],
['25.12.2017', true]
]
],
['12/25/2017', [
['2017-12-25', true],
['12/25/2017', true],
['2017/12/25', true],
['25.12.2017', true]
]
],
['2017/12/25', [
['2017-12-25', true],
['12/25/2017', true],
['2017/12/25', true],
['25.12.2017', true]
]
],
['2017/12/25,2017/12/28', [
['2017-12-25', true],
['12/25/2017', true],
['2017/12/25', true],
['25.12.2017', true],
['2017-12-28', true],
['12/28/2017', true],
['2017/12/28', true],
['28.12.2017', true]
]
],
['[12/25/2017..12/31/2017]', [
['2017-12-25', true],
['12/25/2017', true],
['2017/12/25', true],
['25.12.2017', true],
['2017-12-24', false],
['12/24/2017', false],
['2017/12/24', false],
['24.12.2017', false],
['2017-12-31', true],
['12/31/2017', true],
['2017/12/31', true],
['31.12.2017', true]
]
],
['[2017-12-25..2017-12-31]', [
['2017-12-25', true],
['12/25/2017', true],
['2017/12/25', true],
['25.12.2017', true],
['2017-12-24', false],
['12/24/2017', false],
['2017/12/24', false],
['24.12.2017', false],
['2017-12-31', true],
['12/31/2017', true],
['2017/12/31', true],
['31.12.2017', true]
]
],
['[2017/12/25..2017/12/31]', [
['2017-12-25', true],
['12/25/2017', true],
['2017/12/25', true],
['25.12.2017', true],
['2017-12-24', false],
['12/24/2017', false],
['2017/12/24', false],
['24.12.2017', false],
['2017-12-31', true],
['12/31/2017', true],
['2017/12/31', true],
['31.12.2017', true]
]
],
[']2017/12/25..2017/12/31],]2017/03/05..2017/03/07[,[2017/03/12..2017/03/14[', [
['2017-12-25', false],
['12/25/2017', false],
['2017/12/25', false],
['25.12.2017', false],
['2017-12-24', false],
['12/24/2017', false],
['2017/12/24', false],
['24.12.2017', false],
['2017-12-31', true],
['12/31/2017', true],
['2017/12/31', true],
['31.12.2017', true],
['05.03.2017', false],
['06.03.2017', true],
['07.03.2017', false],
['12.03.2017', true],
['13.03.2017', true],
['14.03.2017', false]
]
],
['[01.01.2017..01.01.2018],01.01.2019,[03.01.2019..01.03.2019]', [
['12.12.2015', false],
['2017-01-01', true],
['05.06.2017', true],
['2018-02-01', false],
['2019-01-01', true],
['2019-01-01', true]
]
],
['> 11/03/2017', [
['12/01/2017', true],
['10/04/2017', false]
]
],
['>=11/03/2017', [
['2017-11-03', true],
['2017-11-02', false]
]
],
['03.11.2017', [
['2017-01-12', false],
['2017-11-03', true],
['2017-11-03', true]
]
],
['[01.01.2017..01.01.2018]', [
['2015-12-12', false],
['2017-01-01', true],
['2017-06-05', true],
['2018-01-01', true],
['2019-01-01', false],
['2019-03-05', false]
]
],
['[01.01.2017..01.01.2018]', [
['2017-01-01', true],
['2018-01-01', true]
]
],
[']01.01.2017..01.01.2018]', [
['2017-01-01', false],
['2018-01-01', true]
]
],
[']01.01.2017..01.01.2018[', [
['2017-01-01', false],
['2017-01-02', true],
['2018-01-01', false]
]
],
['[01.01.2017..01.01.2018[', [
['2017-01-01', true],
['2017-12-31', true],
['2018-01-01', false]
]
],
['[01.01.2017..01.01.2018[', [
['2017-01-01', true],
['2017-12-31', true],
['2018-01-01', false]
]
],
['!([01.01.2017..01.01.2018])', [
['2015-12-12', true],
['2017-01-01', false],
['2017-06-05', false],
['2018-01-01', false],
['2019-01-01', true],
['2019-03-05', true]
]
]
];
var testStrings = [
["'AL','FGH','NO'",[
['AL', true],
['AF', false]
]
],
["AL,FGH,NO",[
['AL', true],
['AF', false]
]
],
["not('AL','FGH','NO')",[
['AL', false],
['AF', true]
]
],
["not(AL,FGH,NO)",[
['AL', false],
['AF', true]
]
],
["not ('AL','FGH','NO')",[
['AL', false],
['AF', true]
]
],
["! ('AL','FGH','NO')",[
['AL', false],
['AF', true]
]
],
["!('AL','FGH','NO')",[
['AL', false],
['AF', true]
]
],
['',[ //each value is allowed
['AL', true],
['AF', true]
]
]
];
/*
* Test Digits
*/
describe('Check Digits', function() {
for(let i = 0; i < testDigits.length; i++) {
let t = testDigits[i];
let condString = t[0];
describe(condString, function() {
let values = t[1];
for (let n = 0; n < values.length; n++) {
let v = values[n];
let val = v[0];
let expected = v[1];
it('X='+val+' => '+expected, function(done){
let cond = compiler(condString);
expect(check(val, cond)).to.be.equals(expected);
done();
});
}
});
}
});
/*
* Test Dates
*/
describe('Check Dates', function() {
for(let i = 0; i < testDates.length; i++) {
let t = testDates[i];
let condString = t[0];
describe(condString, function() {
let values = t[1];
for (let n = 0; n < values.length; n++) {
let v = values[n];
let val = v[0];
let expected = v[1];
it('X='+val+' => '+expected, function(done){
let cond = compiler(condString);
expect(check(val, cond)).to.be.equals(expected);
done();
});
}
});
}
});
/*
* Test Strings
*/
describe('Check Strings', function() {
for(let i = 0; i < testStrings.length; i++) {
let t = testStrings[i];
let condString = t[0];
describe(condString, function() {
let values = t[1];
for (let n = 0; n < values.length; n++) {
let v = values[n];
let val = v[0];
let expected = v[1];
it('X='+val+' => '+expected, function(done){
let cond = compiler(condString);
expect(check(val, cond)).to.be.equals(expected);
done();
});
}
});
}
});
/*
* Test Direct processing
*/
describe('Check direct processing', function() {
let condString = '<= 5';
describe(condString, function() {
let val = 3;
let expected = true;
let s = condString;
it('X='+val+' => '+expected, function(done){
expect(checkDirect(val, s)).to.be.equals(expected);
done();
});
});
condString = '>5';
describe(condString, function() {
let val = 9;
let expected = true;
let s = condString;
it('X='+val+' => '+expected, function(done){
expect(checkDirect(val, s)).to.be.equals(expected);
done();
});
});
});