sparkql 1.2.5 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/.rubocop.yml +111 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +16 -0
- data/Gemfile +1 -2
- data/Rakefile +2 -3
- data/VERSION +1 -1
- data/lib/sparkql/errors.rb +68 -71
- data/lib/sparkql/evaluator.rb +13 -9
- data/lib/sparkql/expression_resolver.rb +2 -3
- data/lib/sparkql/expression_state.rb +7 -9
- data/lib/sparkql/function_resolver.rb +777 -676
- data/lib/sparkql/geo/record_circle.rb +1 -1
- data/lib/sparkql/lexer.rb +54 -56
- data/lib/sparkql/parser.rb +35 -35
- data/lib/sparkql/parser_compatibility.rb +98 -77
- data/lib/sparkql/parser_tools.rb +159 -139
- data/lib/sparkql/token.rb +25 -25
- data/lib/sparkql/version.rb +1 -1
- data/sparkql.gemspec +20 -18
- data/test/unit/errors_test.rb +4 -5
- data/test/unit/evaluator_test.rb +15 -16
- data/test/unit/expression_state_test.rb +14 -15
- data/test/unit/function_resolver_test.rb +445 -203
- data/test/unit/geo/record_circle_test.rb +2 -2
- data/test/unit/lexer_test.rb +15 -16
- data/test/unit/parser_compatability_test.rb +177 -151
- data/test/unit/parser_test.rb +133 -99
- metadata +36 -35
@@ -8,8 +8,8 @@ class Sparkql::Geo::RecordRadiusTest < Test::Unit::TestCase
|
|
8
8
|
"201000000000000000000000000",
|
9
9
|
"test",
|
10
10
|
"12.45,-96.5"].each do |bad_record_id|
|
11
|
-
|
12
|
-
|
11
|
+
assert !Sparkql::Geo::RecordRadius.valid_record_id?(bad_record_id),
|
12
|
+
"'#{bad_record_id}' should not be a valid record_id"
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
data/test/unit/lexer_test.rb
CHANGED
@@ -4,20 +4,20 @@ class LexerTest < Test::Unit::TestCase
|
|
4
4
|
include Sparkql
|
5
5
|
|
6
6
|
test "record the current token and current oken position" do
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
@lexer = Lexer.new "City Eq 'Fargo'"
|
8
|
+
@lexer.shift
|
9
|
+
assert_equal "City", @lexer.current_token_value
|
10
|
+
assert_equal 0, @lexer.token_index
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
@lexer.shift
|
13
|
+
assert_equal " ", @lexer.current_token_value
|
14
|
+
assert_equal 4, @lexer.token_index
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
@lexer.shift
|
17
|
+
assert_equal "Eq", @lexer.current_token_value
|
18
|
+
assert_equal 5, @lexer.token_index
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
def test_check_reserved_words_standard_fields
|
22
22
|
["OrOrOr Eq true", "Equador Eq true", "Oregon Ge 10"].each do |standard_field|
|
23
23
|
@lexer = Lexer.new(standard_field)
|
@@ -27,7 +27,7 @@ class LexerTest < Test::Unit::TestCase
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def test_standard_field_formats
|
30
|
-
[
|
30
|
+
%w[City PostalCodePlus4 Inb4ParserError].each do |standard_field|
|
31
31
|
@lexer = Lexer.new("#{standard_field} Eq true")
|
32
32
|
token = @lexer.shift
|
33
33
|
assert_equal :STANDARD_FIELD, token.first, standard_field
|
@@ -39,7 +39,7 @@ class LexerTest < Test::Unit::TestCase
|
|
39
39
|
@lexer = Lexer.new("4PostalCodePlus4 Eq true")
|
40
40
|
token = @lexer.shift
|
41
41
|
assert_equal :INTEGER, token.first
|
42
|
-
assert_equal token[1][:value], "4"
|
42
|
+
assert_equal token[1][:value], "4"
|
43
43
|
end
|
44
44
|
|
45
45
|
def test_check_reserved_words_conjunctions
|
@@ -62,7 +62,7 @@ class LexerTest < Test::Unit::TestCase
|
|
62
62
|
assert_equal :OPERATOR, token.first, op
|
63
63
|
end
|
64
64
|
|
65
|
-
['Bt 1234','Bt 1234,12345'].each do |op|
|
65
|
+
['Bt 1234', 'Bt 1234,12345'].each do |op|
|
66
66
|
@lexer = Lexer.new(op)
|
67
67
|
token = @lexer.shift
|
68
68
|
assert_equal :RANGE_OPERATOR, token.first, op
|
@@ -78,7 +78,7 @@ class LexerTest < Test::Unit::TestCase
|
|
78
78
|
end
|
79
79
|
|
80
80
|
def test_dates_matches
|
81
|
-
[
|
81
|
+
%w[2013-07-26 1999-01-01].each do |op|
|
82
82
|
@lexer = Lexer.new(op)
|
83
83
|
token = @lexer.shift
|
84
84
|
assert_equal :DATE, token.first, op
|
@@ -108,5 +108,4 @@ class LexerTest < Test::Unit::TestCase
|
|
108
108
|
assert_equal :DECIMAL, token.first, op
|
109
109
|
end
|
110
110
|
end
|
111
|
-
|
112
111
|
end
|