forked from JSQLParser/JSqlParser
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWithFunctionDeclarationTest.java
More file actions
130 lines (111 loc) · 5.29 KB
/
WithFunctionDeclarationTest.java
File metadata and controls
130 lines (111 loc) · 5.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*-
* #%L
* JSQLParser library
* %%
* Copyright (C) 2004 - 2025 JSQLParser
* %%
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
* #L%
*/
package net.sf.jsqlparser.statement.select;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.ExpressionVisitor;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoInteractions;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
class WithFunctionDeclarationTest {
static final String FUNCTION_NAME = "func1";
static final String RETURN_TYPE = "integer";
@Mock
Expression expression;
@Mock
WithFunctionParameter withFunctionParameter1;
@Mock
WithFunctionParameter withFunctionParameter2;
WithFunctionDeclaration withFunctionDeclaration;
@Test
void fullConstructorAndGetters() {
withFunctionDeclaration = new WithFunctionDeclaration(FUNCTION_NAME,
List.of(withFunctionParameter1, withFunctionParameter2), RETURN_TYPE, expression);
assertThat(withFunctionDeclaration.getFunctionName()).isEqualTo(FUNCTION_NAME);
assertThat(withFunctionDeclaration.getParameters())
.isEqualTo(List.of(withFunctionParameter1, withFunctionParameter2));
assertThat(withFunctionDeclaration.getReturnType()).isEqualTo(RETURN_TYPE);
assertThat(withFunctionDeclaration.getReturnExpression()).isEqualTo(expression);
}
@Test
void defaultConstructorAndSetters() {
withFunctionDeclaration = new WithFunctionDeclaration();
withFunctionDeclaration.setFunctionName(FUNCTION_NAME);
withFunctionDeclaration
.setParameters(List.of(withFunctionParameter1, withFunctionParameter2));
withFunctionDeclaration.setReturnType(RETURN_TYPE);
withFunctionDeclaration.setReturnExpression(expression);
assertThat(withFunctionDeclaration.getFunctionName()).isEqualTo(FUNCTION_NAME);
assertThat(withFunctionDeclaration.getParameters())
.isEqualTo(List.of(withFunctionParameter1, withFunctionParameter2));
assertThat(withFunctionDeclaration.getReturnType()).isEqualTo(RETURN_TYPE);
assertThat(withFunctionDeclaration.getReturnExpression()).isEqualTo(expression);
}
@Test
void defaultConstructorAndWithers() {
withFunctionDeclaration = new WithFunctionDeclaration()
.withFunctionName(FUNCTION_NAME)
.withParameters(List.of(withFunctionParameter1, withFunctionParameter2))
.withReturnType(RETURN_TYPE)
.withReturnExpression(expression);
assertThat(withFunctionDeclaration.getFunctionName()).isEqualTo(FUNCTION_NAME);
assertThat(withFunctionDeclaration.getParameters())
.isEqualTo(List.of(withFunctionParameter1, withFunctionParameter2));
assertThat(withFunctionDeclaration.getReturnType()).isEqualTo(RETURN_TYPE);
assertThat(withFunctionDeclaration.getReturnExpression()).isEqualTo(expression);
}
@Test
void toStringTestWithParameters() {
when(withFunctionParameter1.appendTo(any(StringBuilder.class))).thenAnswer(invocation -> {
StringBuilder builder = invocation.getArgument(0);
return builder.append("param1 bigint");
});
when(withFunctionParameter2.appendTo(any(StringBuilder.class))).thenAnswer(invocation -> {
StringBuilder builder = invocation.getArgument(0);
return builder.append("param2 double");
});
when(expression.toString()).thenReturn("1 + 1");
withFunctionDeclaration = new WithFunctionDeclaration(FUNCTION_NAME,
List.of(withFunctionParameter1, withFunctionParameter2), RETURN_TYPE, expression);
assertThat(withFunctionDeclaration.toString()).isEqualTo(
"FUNCTION func1(param1 bigint, param2 double) RETURNS integer RETURN 1 + 1");
}
@Test
void toStringTestWithNoParameters() {
when(expression.toString()).thenReturn("1 + 1");
withFunctionDeclaration =
new WithFunctionDeclaration(FUNCTION_NAME, List.of(), RETURN_TYPE, expression);
assertThat(withFunctionDeclaration.toString())
.isEqualTo("FUNCTION func1() RETURNS integer RETURN 1 + 1");
}
@Test
void expressionVisitorIsNotCalledWhenNoReturnExpressionDeclared(
@Mock ExpressionVisitor<Void> expressionVisitor) {
withFunctionDeclaration = new WithFunctionDeclaration();
withFunctionDeclaration.accept(expressionVisitor, "RANDOM_CONTEXT");
verifyNoInteractions(expressionVisitor);
}
@Test
void expressionVisitorCalledWhenReturnExpressionDeclared(
@Mock ExpressionVisitor<Void> expressionVisitor) {
String context = "RANDOM_CONTEXT";
withFunctionDeclaration = new WithFunctionDeclaration()
.withReturnExpression(expression);
withFunctionDeclaration.accept(expressionVisitor, context);
verify(expression).accept(expressionVisitor, context);
}
}