-
Notifications
You must be signed in to change notification settings - Fork 173
Expand file tree
/
Copy pathComparisonExpTestsTest.java
More file actions
96 lines (86 loc) · 3.87 KB
/
ComparisonExpTestsTest.java
File metadata and controls
96 lines (86 loc) · 3.87 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
package com.hubspot.jinjava.lib.exptest;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import com.google.common.collect.ImmutableMap;
import com.hubspot.jinjava.BaseJinjavaTest;
import com.hubspot.jinjava.interpret.FatalTemplateErrorsException;
import com.hubspot.jinjava.objects.date.PyishDate;
import java.time.Instant;
import java.util.HashMap;
import java.util.Map;
import javax.el.ELException;
import javax.el.MethodNotFoundException;
import org.junit.Test;
public class ComparisonExpTestsTest extends BaseJinjavaTest {
@Test
public void itComparesNumbers() {
assertThat(jinjava.render("{{ 4 is lt 5 }}", new HashMap<>())).isEqualTo("true");
assertThat(jinjava.render("{{ 5 is le 4 }}", new HashMap<>())).isEqualTo("false");
assertThat(jinjava.render("{{ 4 is le 4 }}", new HashMap<>())).isEqualTo("true");
assertThat(jinjava.render("{{ 4 is gt 5 }}", new HashMap<>())).isEqualTo("false");
assertThat(jinjava.render("{{ 4 is gt 4 }}", new HashMap<>())).isEqualTo("false");
assertThat(jinjava.render("{{ 4 is ge 4 }}", new HashMap<>())).isEqualTo("true");
assertThat(jinjava.render("{{ 4 is ge 5 }}", new HashMap<>())).isEqualTo("false");
assertThat(jinjava.render("{{ 4 is ne 5 }}", new HashMap<>())).isEqualTo("true");
assertThat(jinjava.render("{{ 4 is ne 4 }}", new HashMap<>())).isEqualTo("false");
}
@Test
public void itComparesStringsLexicographically() {
assertThat(jinjava.render("{{ 'aa' is lt 'aa' }}", new HashMap<>()))
.isEqualTo("false");
assertThat(jinjava.render("{{ 'aa' is lt 'aaa' }}", new HashMap<>()))
.isEqualTo("true");
assertThat(jinjava.render("{{ 'aa' is lt 'b' }}", new HashMap<>())).isEqualTo("true");
}
@Test
public void itComparesDates() {
Map<String, Object> vars = ImmutableMap.of(
"now",
PyishDate.from(Instant.now()),
"then",
new PyishDate(1490171923745L)
);
assertThat(jinjava.render("{{ now is lt then}}", vars)).isEqualTo("false");
assertThat(jinjava.render("{{ then is lt now}}", vars)).isEqualTo("true");
}
@Test
public void itComparesAcrossType() {
assertThat(jinjava.render("{{ 4.1 is lt 5 }}", new HashMap<>())).isEqualTo("true");
assertThat(jinjava.render("{{ true ne 'true' }}", new HashMap<>()))
.isEqualTo("false");
assertThat(jinjava.render("{{ true ne '' }}", new HashMap<>())).isEqualTo("true");
}
@Test
public void testAliases() {
assertThat(jinjava.render("{{ 4 is lessthan 5 }}", new HashMap<>()))
.isEqualTo("true");
assertThat(jinjava.render("{{ 4 is greaterthan 5 }}", new HashMap<>()))
.isEqualTo("false");
assertThat(jinjava.render("{{ 4 is < 5 }}", new HashMap<>())).isEqualTo("true");
assertThat(jinjava.render("{{ 4 is > 5 }}", new HashMap<>())).isEqualTo("false");
assertThat(jinjava.render("{{ 4 is <= 5 }}", new HashMap<>())).isEqualTo("true");
assertThat(jinjava.render("{{ 4 is >= 5 }}", new HashMap<>())).isEqualTo("false");
assertThat(jinjava.render("{{ 4 is != 5 }}", new HashMap<>())).isEqualTo("true");
}
@Test
public void itParsesFormattedNumbers() {
assertThat(jinjava.render("{{ \"1,050.25\" is ge 4 }}", new HashMap<>()))
.isEqualTo("true");
assertThat(jinjava.render("{{ \"4.1\" is gt 4 }}", new HashMap<>()))
.isEqualTo("false");
assertThat(jinjava.render("{{ 4.0 is le 5.00 }}", new HashMap<>())).isEqualTo("true");
assertThat(jinjava.render("{{ \"4,500.75\" is le 10000.00 }}", new HashMap<>()))
.isEqualTo("true");
}
@Test
public void itDoesNotAllowCommasAfterDecimalPointInNumbers() {
assertThat(
jinjava.renderForResult("{{ \"150.25,0\" is ge 4 }}", new HashMap<>()).getErrors()
)
.isNotEmpty();
assertThat(
jinjava.renderForResult("{{ \"150.25,0\" is ge 4.0 }}", new HashMap<>()).getErrors()
)
.isNotEmpty();
}
}