1
1
package org.partiql.eval.internal
2
2
3
+ import org.junit.jupiter.api.Disabled
3
4
import org.junit.jupiter.api.Test
4
5
import org.partiql.eval.PartiQLEngine
5
6
import org.partiql.eval.PartiQLResult
@@ -12,6 +13,7 @@ import org.partiql.value.bagValue
12
13
import org.partiql.value.boolValue
13
14
import org.partiql.value.int32Value
14
15
import org.partiql.value.nullValue
16
+ import org.partiql.value.stringValue
15
17
import org.partiql.value.structValue
16
18
import kotlin.test.assertEquals
17
19
@@ -98,4 +100,100 @@ class PartiQLEngineDefaultTest {
98
100
val expected = bagValue(sequenceOf(structValue(sequenceOf(" a" to int32Value(1 ), " b" to nullValue()))))
99
101
assertEquals(expected, output)
100
102
}
103
+
104
+ @OptIn(PartiQLValueExperimental ::class )
105
+ @Test
106
+ fun testCaseLiteral00 () {
107
+ val source = """
108
+ CASE
109
+ WHEN NULL THEN 'isNull'
110
+ WHEN MISSING THEN 'isMissing'
111
+ WHEN FALSE THEN 'isFalse'
112
+ WHEN TRUE THEN 'isTrue'
113
+ END
114
+ ;
115
+ """ .trimIndent()
116
+ val statement = parser.parse(source).root
117
+ val session = PartiQLPlanner .Session (" q" , " u" )
118
+ val plan = planner.plan(statement, session)
119
+
120
+ val prepared = engine.prepare(plan.plan)
121
+ val result = engine.execute(prepared) as PartiQLResult .Value
122
+ val output = result.value
123
+
124
+ val expected = stringValue(" isTrue" )
125
+ assertEquals(expected, output)
126
+ }
127
+
128
+ @OptIn(PartiQLValueExperimental ::class )
129
+ @Test
130
+ fun testCaseLiteral01 () {
131
+ val source = """
132
+ CASE
133
+ WHEN NULL THEN 'isNull'
134
+ WHEN MISSING THEN 'isMissing'
135
+ WHEN FALSE THEN 'isFalse'
136
+ END
137
+ ;
138
+ """ .trimIndent()
139
+ val statement = parser.parse(source).root
140
+ val session = PartiQLPlanner .Session (" q" , " u" )
141
+ val plan = planner.plan(statement, session)
142
+
143
+ val prepared = engine.prepare(plan.plan)
144
+ val result = engine.execute(prepared) as PartiQLResult .Value
145
+ val output = result.value
146
+
147
+ val expected = nullValue()
148
+ assertEquals(expected, output)
149
+ }
150
+
151
+ @Disabled(" This is disabled because FN EQUALS is not yet implemented." )
152
+ @OptIn(PartiQLValueExperimental ::class )
153
+ @Test
154
+ fun testCaseLiteral02 () {
155
+ val source = """
156
+ CASE (1)
157
+ WHEN NULL THEN 'isNull'
158
+ WHEN MISSING THEN 'isMissing'
159
+ WHEN 2 THEN 'isTwo'
160
+ WHEN 1 THEN 'isOne'
161
+ END
162
+ ;
163
+ """ .trimIndent()
164
+ val statement = parser.parse(source).root
165
+ val session = PartiQLPlanner .Session (" q" , " u" )
166
+ val plan = planner.plan(statement, session)
167
+
168
+ val prepared = engine.prepare(plan.plan)
169
+ val result = engine.execute(prepared) as PartiQLResult .Value
170
+ val output = result.value
171
+
172
+ val expected = stringValue(" isOne" )
173
+ assertEquals(expected, output)
174
+ }
175
+
176
+ @Disabled(" This is disabled because FN EQUALS is not yet implemented." )
177
+ @OptIn(PartiQLValueExperimental ::class )
178
+ @Test
179
+ fun testCaseLiteral03 () {
180
+ val source = """
181
+ CASE (1)
182
+ WHEN NULL THEN 'isNull'
183
+ WHEN MISSING THEN 'isMissing'
184
+ WHEN 2 THEN 'isTwo'
185
+ END
186
+ ;
187
+ """ .trimIndent()
188
+ val statement = parser.parse(source).root
189
+ val session = PartiQLPlanner .Session (" q" , " u" )
190
+ val plan = planner.plan(statement, session)
191
+
192
+ val prepared = engine.prepare(plan.plan)
193
+ val result = engine.execute(prepared) as PartiQLResult .Value
194
+ val output = result.value
195
+
196
+ val expected = nullValue()
197
+ assertEquals(expected, output)
198
+ }
101
199
}
0 commit comments