Example #1
0
 def test_cast_float(self):
     frag = "CAST(EXTRACT(WEEKDAY FROM CAST('2017-05-10 09:01:01' AS TIMESTAMP)) AS FLOAT)"
     expr = QueryParser().parse_expression(frag)
     assert(frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert(isinstance(v, float))
     assert(v == 2.0)
Example #2
0
 def test_extract_null(self):
     frag = "EXTRACT(DAY FROM '09:15:07')"
     expr = QueryParser().parse_expression(frag)
     assert(frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert(v is None)
Example #3
0
 def test_cast_int(self):
     frag = "CAST(SUBSTRING('S3' FROM 2) AS INTEGER)"
     expr = QueryParser().parse_expression(frag)
     assert(frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert(v == 3)
Example #4
0
 def test_cast_time(self):
     frag = "CAST('09:05:05' AS TIME)"
     expr = QueryParser().parse_expression(frag)
     assert(frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert(isinstance(v, datetime.time))
Example #5
0
 def test_cast_varchar(self):
     frag = "CAST(1.0 / 2.0 AS VARCHAR)"
     expr = QueryParser().parse_expression(frag)
     assert(frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert(v == '0.5')
Example #6
0
 def test_position_null(self):
     frag = "POSITION('q' IN COALESCE(NULL, NULL))"
     expr = QueryParser().parse_expression(frag)
     assert (frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert (v == None)
Example #7
0
 def test_trim_NULL(self):
     frag = "TRIM(COALESCE(NULL, NULL))"
     expr = QueryParser().parse_expression(frag)
     assert (frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert (v is None)
Example #8
0
 def test_concat_null(self):
     frag = "CONCAT('q', NULL, 'abc')"
     expr = QueryParser().parse_expression(frag)
     assert (frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert (v is None)
Example #9
0
 def test_extract_micro_time_no_micro(self):
     frag = "EXTRACT(MICROSECOND FROM '09:12:32')"
     expr = QueryParser().parse_expression(frag)
     assert(frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert(v == 0)
Example #10
0
 def test_extract_micro_date(self):
     frag = "EXTRACT(MICROSECOND FROM '2017-05-20')"
     expr = QueryParser().parse_expression(frag)
     assert(frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert(v == 0)
Example #11
0
 def test_extract_weekday(self):
     frag = "EXTRACT(WEEKDAY FROM '2017-05-20')"
     expr = QueryParser().parse_expression(frag)
     assert(frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert(v == 5)
Example #12
0
 def test_extract_hours(self):
     frag = "EXTRACT(HOUR FROM '09:15:07')"
     expr = QueryParser().parse_expression(frag)
     assert(frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert(v == 9)
Example #13
0
 def test_cur_date(self):
     frag = "CURRENT_DATE"
     expr = QueryParser().parse_expression(frag)
     assert(frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert(isinstance(v, datetime.date))
Example #14
0
 def test_extract_year(self):
     frag = "EXTRACT(YEAR FROM CURRENT_DATE)"
     expr = QueryParser().parse_expression(frag)
     assert(frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert(v > 2020)
Example #15
0
 def test_extract_second(self):
     frag = "EXTRACT(SECOND FROM '2017-05-20 09:15:07')"
     expr = QueryParser().parse_expression(frag)
     assert(frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert(v == 7)
Example #16
0
 def test_upper_lower(self):
     frag = "UPPER(COALESCE(NULL, LOWER('xYz'), NULL, 'abz'))"
     expr = QueryParser().parse_expression(frag)
     assert (frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert (v == 'XYZ')
Example #17
0
 def test_trim(self):
     frag = "TRIM('   xYz   ')"
     expr = QueryParser().parse_expression(frag)
     assert (frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert (v == 'xYz')
Example #18
0
 def test_extract_micro(self):
     frag = "EXTRACT(MICROSECOND FROM CURRENT_TIMESTAMP)"
     expr = QueryParser().parse_expression(frag)
     assert(frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert(v > 0)
Example #19
0
 def test_trim_empty(self):
     frag = "TRIM(COALESCE('\t', '   xYz   ', ' '))"
     expr = QueryParser().parse_expression(frag)
     assert (frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert (v == '')
Example #20
0
 def test_truncate_parse(self):
     frag = 'TRUNCATE(15 * 5, -1)'
     expr = QueryParser().parse_expression(frag)
     assert(frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert(v == 70)
Example #21
0
 def test_char_length(self):
     frag = "CHAR_LENGTH(TRIM('   xYz   '))"
     expr = QueryParser().parse_expression(frag)
     assert (frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert (v == 3)
Example #22
0
 def test_position_neg(self):
     frag = "SUBSTRING('Hello world!' FROM -4 FOR 2)"
     expr = QueryParser().parse_expression(frag)
     assert (frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert (v == 'rl')
Example #23
0
 def test_position(self):
     frag = "POSITION('z' IN TRIM('   xYz   '))"
     expr = QueryParser().parse_expression(frag)
     assert (frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert (v == 3)
Example #24
0
 def test_concat_1(self):
     frag = "CONCAT(15 * 3)"
     expr = QueryParser().parse_expression(frag)
     assert (frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert (v == '45')
Example #25
0
 def test_concat_3(self):
     frag = "CONCAT(CONCAT('a', 'b'), 15 * 3, 'z')"
     expr = QueryParser().parse_expression(frag)
     assert (frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert (v == 'ab45z')
Example #26
0
 def test_coalesce(self):
     frag = "COALESCE(NULL, UPPER('xyz'), NULL, 'abz')"
     expr = QueryParser().parse_expression(frag)
     assert (frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert (v == 'XYZ')
Example #27
0
 def test_cast_date(self):
     frag = "CAST('2017-05-10' AS DATE)"
     expr = QueryParser().parse_expression(frag)
     assert(frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert(isinstance(v, datetime.date))
Example #28
0
 def test_coalesce_null(self):
     frag = "COALESCE(NULL, NULL)"
     expr = QueryParser().parse_expression(frag)
     assert (frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert (v == None)
Example #29
0
 def test_cast_char(self):
     frag = "CAST(4.0 / 3.0 AS CHAR(3))"
     expr = QueryParser().parse_expression(frag)
     assert(frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert(v == '1.3')
Example #30
0
 def test_day_name(self):
     frag = "DAYNAME('2017-05-20 09:15:07')"
     expr = QueryParser().parse_expression(frag)
     assert(frag.replace(' ', '') == str(expr).replace(' ', ''))
     v = expr.evaluate({})
     assert(v == calendar.day_name[5])