1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License;
4
+ * you may not use this file except in compliance with the Elastic License.
5
+ */
6
+ package org .elasticsearch .xpack .sql .parser ;
7
+
8
+ import org .elasticsearch .test .ESTestCase ;
9
+ import org .elasticsearch .xpack .sql .expression .Expression ;
10
+ import org .elasticsearch .xpack .sql .expression .Literal ;
11
+ import org .elasticsearch .xpack .sql .expression .function .scalar .arithmetic .Neg ;
12
+ import org .elasticsearch .xpack .sql .type .DataType ;
13
+
14
+ public class ExpressionTests extends ESTestCase {
15
+
16
+ private final SqlParser parser = new SqlParser ();
17
+
18
+ public void testLiteralLong () throws Exception {
19
+ Expression lt = parser .createExpression (String .valueOf (Long .MAX_VALUE ));
20
+ assertEquals (Literal .class , lt .getClass ());
21
+ Literal l = (Literal ) lt ;
22
+ assertEquals (Long .MAX_VALUE , l .value ());
23
+ assertEquals (DataType .LONG , l .dataType ());
24
+ }
25
+
26
+ public void testLiteralLongNegative () throws Exception {
27
+ // Long.MIN_VALUE doesn't work since it is being interpreted as negate positive.long which is 1 higher than Long.MAX_VALUE
28
+ Expression lt = parser .createExpression (String .valueOf (-Long .MAX_VALUE ));
29
+ assertEquals (Neg .class , lt .getClass ());
30
+ Neg n = (Neg ) lt ;
31
+ assertTrue (n .foldable ());
32
+ assertEquals (-Long .MAX_VALUE , n .fold ());
33
+ assertEquals (DataType .LONG , n .dataType ());
34
+ }
35
+
36
+ public void testLiteralInteger () throws Exception {
37
+ Expression lt = parser .createExpression (String .valueOf (Integer .MAX_VALUE ));
38
+ assertEquals (Literal .class , lt .getClass ());
39
+ Literal l = (Literal ) lt ;
40
+ assertEquals (Integer .MAX_VALUE , l .value ());
41
+ assertEquals (DataType .INTEGER , l .dataType ());
42
+ }
43
+
44
+ public void testLiteralIntegerWithShortValue () throws Exception {
45
+ Expression lt = parser .createExpression (String .valueOf (Short .MAX_VALUE ));
46
+ assertEquals (Literal .class , lt .getClass ());
47
+ Literal l = (Literal ) lt ;
48
+ assertEquals (Integer .valueOf (Short .MAX_VALUE ), l .value ());
49
+ assertEquals (DataType .INTEGER , l .dataType ());
50
+ }
51
+
52
+ public void testLiteralIntegerWithByteValue () throws Exception {
53
+ Expression lt = parser .createExpression (String .valueOf (Byte .MAX_VALUE ));
54
+ assertEquals (Literal .class , lt .getClass ());
55
+ Literal l = (Literal ) lt ;
56
+ assertEquals (Integer .valueOf (Byte .MAX_VALUE ), l .value ());
57
+ assertEquals (DataType .INTEGER , l .dataType ());
58
+ }
59
+ }
0 commit comments