lucene-filter.js

Data filter for lucene queries
git clone git://git.finwo.net/lib/lucene-filter.js
Log | Files | Refs | README | LICENSE

range.test.js (2548B)


      1 const tape     = require('tape');
      2 const range = require('./range');
      3 
      4 tape('filter.number.range -- structure', async t => {
      5   t.plan(2);
      6   t.ok('detect' in range, 'range filter has detect method');
      7   t.ok('compile' in range, 'range filter has compile method');
      8 });
      9 
     10 tape('filter.number.range -- detect', async t => {
     11   t.plan(8);
     12   t.notOk(range.detect(false), 'contains.detect doesn\'t trigger on false query');
     13   t.notOk(range.detect(null), 'contains.detect doesn\'t trigger on null query');
     14   t.notOk(range.detect(true), 'contains.detect doesn\'t trigger on true query');
     15   t.notOk(range.detect([]), 'contains.detect doesn\'t trigger on empty array query');
     16   t.notOk(range.detect({}), 'contains.detect doesn\'t trigger on empty object query');
     17   t.notOk(range.detect({ field: 'something' }), 'contains.detect doesn\'t trigger on termless query');
     18   t.notOk(range.detect({ term: 'something' }), 'contains.detect doesn\'t trigger on fieldless query');
     19   t.ok(range.detect({ field: 'hello', term_min: 1, term_max: 10, inclusive: 'both' }), 'contains.detect triggers on properly structured query');
     20 });
     21 
     22 tape('filter.number.range, both inclusive -- compile', async t => {
     23   t.plan(6);
     24 
     25   const extractor = range.compile({ field: 'age', term_min: 18, term_max: 21, inclusive: 'both' });
     26   t.equal(typeof extractor, 'function', 'range.compile returns a function');
     27 
     28   t.ok(extractor({ age: 20 }), 'finds term in range');
     29   t.ok(extractor({ age: 21 }), 'finds term in range');
     30   t.ok(extractor({ age: 18 }), 'finds term in range');
     31   t.notOk(extractor({ age: 17 }), 'doesn\'t find term in range');
     32   t.notOk(extractor({ age: 22 }), 'doesn\'t find term in range');
     33 });
     34 
     35 tape('filter.number.range, left inclusive -- compile', async t => {
     36   t.plan(4);
     37 
     38   const extractor = range.compile({ field: 'age', term_min: 18, term_max: 21, inclusive: 'left' });
     39   t.equal(typeof extractor, 'function', 'range.compile returns a function');
     40 
     41   t.ok(extractor({ age: 18 }), 'finds term in range');
     42   t.ok(extractor({ age: 20 }), 'finds term in range');
     43   t.notOk(extractor({ age: 21 }), 'doesn\'t find term in range');
     44 });
     45 
     46 tape('filter.number.range, right inclusive -- compile', async t => {
     47   t.plan(4);
     48 
     49   const extractor = range.compile({ field: 'age', term_min: 18, term_max: 21, inclusive: 'right' });
     50   t.equal(typeof extractor, 'function', 'range.compile returns a function');
     51 
     52   t.ok(extractor({ age: 20 }), 'finds term in range');
     53   t.ok(extractor({ age: 21 }), 'finds term in range');
     54   t.notOk(extractor({ age: 18 }), 'doesn\'t find term in range');
     55 });