Add op support to query parser. You can now look for values using <=, <, > and >=.

This commit is contained in:
Simo Kinnunen
2014-07-08 14:57:01 +09:00
parent 2898170240
commit 72c6de0414
4 changed files with 160 additions and 44 deletions

View File

@@ -8,6 +8,7 @@ var tests = [
assert.deepEqual(parser.parse('a'), [
{
field: null
, op: null
, query: 'a'
}
])
@@ -17,14 +18,17 @@ var tests = [
assert.deepEqual(parser.parse('a b c'), [
{
field: null
, op: null
, query: 'a'
}
, {
field: null
, op: null
, query: 'b'
}
, {
field: null
, op: null
, query: 'c'
}
])
@@ -34,15 +38,31 @@ var tests = [
assert.deepEqual(parser.parse('serial:foo'), [
{
field: 'serial'
, op: null
, query: 'foo'
}
])
}
/*
This test is currently failing, but I'm not sure if I care enough about it.
Commented out for now.
, function() {
var parser = new QueryParser()
assert.deepEqual(parser.parse('a:b:c'), [
{
field: 'a'
, query: 'b:c'
}
])
}
*/
, function() {
var parser = new QueryParser()
assert.deepEqual(parser.parse('name:"Galaxy S2 LTE"'), [
{
field: 'name'
, op: null
, query: 'Galaxy S2 LTE'
}
])
@@ -52,10 +72,12 @@ var tests = [
assert.deepEqual(parser.parse('name:"Galaxy S2 LTE" black'), [
{
field: 'name'
, op: null
, query: 'Galaxy S2 LTE'
}
, {
field: null
, op: null
, query: 'black'
}
])
@@ -65,6 +87,7 @@ var tests = [
assert.deepEqual(parser.parse('"foo bar"'), [
{
field: null
, op: null
, query: 'foo bar'
}
])
@@ -74,7 +97,8 @@ var tests = [
assert.deepEqual(parser.parse('version:>=4.1'), [
{
field: 'version'
, query: '>=4.1'
, op: '>='
, query: '4.1'
}
])
}
@@ -83,7 +107,18 @@ var tests = [
assert.deepEqual(parser.parse('version: >=4.1'), [
{
field: 'version'
, query: '>=4.1'
, op: '>='
, query: '4.1'
}
])
}
, function() {
var parser = new QueryParser()
assert.deepEqual(parser.parse('version: < 4.1'), [
{
field: 'version'
, op: '<'
, query: '4.1'
}
])
}
@@ -92,10 +127,12 @@ var tests = [
assert.deepEqual(parser.parse('Galaxy operator: DOCOMO'), [
{
field: null
, op: null
, query: 'Galaxy'
}
, {
field: 'operator'
, op: null
, query: 'DOCOMO'
}
])