-
Notifications
You must be signed in to change notification settings - Fork 284
/
DecoratedCollectionTest.java
87 lines (80 loc) · 3.59 KB
/
DecoratedCollectionTest.java
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
package com.github.mustachejava.util;
import com.github.mustachejava.DefaultMustacheFactory;
import com.github.mustachejava.Mustache;
import com.github.mustachejava.MustacheFactory;
import com.github.mustachejava.reflect.ReflectionObjectHandler;
import org.junit.Test;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import static org.junit.Assert.assertEquals;
public class DecoratedCollectionTest {
@Test
public void testIndexLastFirst() throws IOException {
MustacheFactory mf = new DefaultMustacheFactory();
Mustache test = mf.compile(new StringReader(
"{{#test}}{{index}}: {{#first}}first: {{/first}}{{#last}}last: {{/last}}{{value}}\n{{/test}}"), "test");
StringWriter sw = new StringWriter();
test.execute(sw, new Object() {
Collection test = new DecoratedCollection(Arrays.asList("First", "Second", "Third", "Last"));
}).flush();
assertEquals("0: first: First\n1: Second\n2: Third\n3: last: Last\n", sw.toString());
}
@Test
public void testObjectHandler() throws IOException {
DefaultMustacheFactory mf = new DefaultMustacheFactory();
mf.setObjectHandler(new ReflectionObjectHandler() {
@Override
public Object coerce(Object object) {
if (object instanceof Collection) {
return new DecoratedCollection((Collection) object);
}
return super.coerce(object);
}
});
Mustache test = mf.compile(new StringReader(
"{{#test}}{{index}}: {{#first}}first: {{/first}}{{#last}}last: {{/last}}{{value}}\n{{/test}}"), "test");
StringWriter sw = new StringWriter();
test.execute(sw, new Object() {
Collection test = Arrays.asList("First", "Second", "Third", "Last");
}).flush();
assertEquals("0: first: First\n1: Second\n2: Third\n3: last: Last\n", sw.toString());
}
@Test
public void testArrayOutput() throws IOException {
MustacheFactory mf = new DefaultMustacheFactory();
Mustache test = mf.compile(new StringReader("{{#test}}{{#first}}[{{/first}}{{^first}}, {{/first}}\"{{value}}\"{{#last}}]{{/last}}{{/test}}"), "test");
StringWriter sw = new StringWriter();
test.execute(sw, new Object() {
Collection test = new DecoratedCollection(Arrays.asList("one", "two", "three"));
}).flush();
assertEquals("[\"one\", \"two\", \"three\"]", sw.toString());
}
@Test
public void testNested() throws IOException {
MustacheFactory mf = new DefaultMustacheFactory();
Mustache test = mf.compile(new StringReader("{{#outer}}" +
"least({{#value.inner}} event{{index}}_count{{^last}},{{/last}} {{/value.inner}}){{^last}},{{/last}}\n" +
"{{/outer}}"), "test");
StringWriter sw = new StringWriter();
List<String> innerList = Arrays.asList("event0_count", "event1_count", "event2_count");
List<Object> outerList = new ArrayList<>();
for (int i = 0; i < innerList.size(); i++) {
DecoratedCollection decoratedCollection = new DecoratedCollection(innerList.subList(0, i + 1));
outerList.add(new Object() {
Collection inner = decoratedCollection;
});
}
Object scope = new Object() {
Collection outer = new DecoratedCollection(outerList);
};
test.execute(sw, scope).flush();
assertEquals("least( event0_count ),\n" +
"least( event0_count, event1_count ),\n" +
"least( event0_count, event1_count, event2_count )\n", sw.toString());
}
}