Skip to content

Commit f66dadc

Browse files
committed
Add first tests wrt #70
1 parent 2aee38e commit f66dadc

File tree

5 files changed

+173
-12
lines changed

5 files changed

+173
-12
lines changed

jr-objects/src/test/java/com/fasterxml/jackson/jr/ob/ReadBeansTest.java

-10
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,6 @@ static class TestBean {
1717
public NameBean getName() { return name; }
1818
}
1919

20-
static class NameBean {
21-
protected String first, last;
22-
23-
public String getFirst() { return first; }
24-
public String getLast() { return last; }
25-
26-
public void setFirst(String n) { first = n; }
27-
public void setLast(String n) { last = n; }
28-
}
29-
3020
static class MapBean {
3121
protected Map<String,Integer> stuff;
3222

jr-objects/src/test/java/com/fasterxml/jackson/jr/ob/ReadSimpleTest.java

-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77

88
public class ReadSimpleTest extends TestBase
99
{
10-
enum ABC { A, B, C; }
11-
1210
/*
1311
/**********************************************************************
1412
/* Tests for Lists/Collections

jr-objects/src/test/java/com/fasterxml/jackson/jr/ob/TestBase.java

+18
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,24 @@
66

77
public abstract class TestBase extends TestCase
88
{
9+
protected enum ABC { A, B, C; }
10+
11+
protected static class NameBean {
12+
protected String first, last;
13+
14+
public NameBean() { }
15+
public NameBean(String f, String l) {
16+
first = f;
17+
last = l;
18+
}
19+
20+
public String getFirst() { return first; }
21+
public String getLast() { return last; }
22+
23+
public void setFirst(String n) { first = n; }
24+
public void setLast(String n) { last = n; }
25+
}
26+
927
protected void verifyException(Throwable e, String... matches)
1028
{
1129
String msg = e.getMessage();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package com.fasterxml.jackson.jr.ob.impl;
2+
3+
import java.io.IOException;
4+
import java.util.Map;
5+
6+
import com.fasterxml.jackson.core.JsonParser;
7+
8+
import com.fasterxml.jackson.jr.ob.JSON;
9+
import com.fasterxml.jackson.jr.ob.TestBase;
10+
import com.fasterxml.jackson.jr.ob.api.ReaderWriterModifier;
11+
import com.fasterxml.jackson.jr.ob.api.ValueReader;
12+
13+
public class ValueReaderModifierTest extends TestBase
14+
{
15+
static class RWModifier extends ReaderWriterModifier {
16+
private final Class<?> _target;
17+
private final ValueReader _reader;
18+
19+
public RWModifier(Class<?> target, ValueReader r) {
20+
_target = target;
21+
_reader = r;
22+
}
23+
24+
@Override
25+
public ValueReader modifyValueReader(JSONReader readContext,
26+
Class<?> type, ValueReader defaultReader) {
27+
if (type == _target) {
28+
return _reader;
29+
}
30+
return defaultReader;
31+
}
32+
}
33+
34+
/*
35+
/**********************************************************************
36+
/* Tests for wholesale replacement of `ValueReader`
37+
/**********************************************************************
38+
*/
39+
40+
public void testStringReaderReplacement() throws Exception
41+
{
42+
final ReaderWriterModifier mod = new RWModifier(String.class,
43+
new ValueReader(String.class) {
44+
@Override
45+
public Object read(JSONReader reader, JsonParser p) throws IOException {
46+
return p.getText().toUpperCase();
47+
};
48+
});
49+
String result = JSON.std.with(mod).beanFrom(String.class, quote("foobar"));
50+
assertEquals("FOOBAR", result);
51+
}
52+
53+
public void testPOJOReaderReplacement() throws Exception
54+
{
55+
final ReaderWriterModifier mod = new RWModifier(NameBean.class,
56+
new ValueReader(NameBean.class) {
57+
@Override
58+
public Object read(JSONReader reader, JsonParser p) throws IOException {
59+
Map<Object, Object> map = reader.readMap();
60+
return new NameBean(String.valueOf(map.get("first")).toUpperCase(),
61+
String.valueOf(map.get("last")).toUpperCase());
62+
};
63+
});
64+
NameBean result = JSON.std.with(mod).beanFrom(NameBean.class,
65+
aposToQuotes("{'first':'foo', 'last':'bar'}"));
66+
assertEquals("FOO", result.getFirst());
67+
assertEquals("BAR", result.getLast());
68+
}
69+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
package com.fasterxml.jackson.jr.ob.impl;
2+
3+
import java.io.IOException;
4+
5+
import com.fasterxml.jackson.core.JsonGenerator;
6+
7+
import com.fasterxml.jackson.jr.ob.JSON;
8+
import com.fasterxml.jackson.jr.ob.TestBase;
9+
import com.fasterxml.jackson.jr.ob.api.ReaderWriterModifier;
10+
import com.fasterxml.jackson.jr.ob.api.ValueWriter;
11+
12+
public class ValueWriterModifierTest extends TestBase
13+
{
14+
static class RWModifier extends ReaderWriterModifier {
15+
private final Class<?> _target;
16+
private final ValueWriter _writer;
17+
18+
public RWModifier(Class<?> target, ValueWriter w) {
19+
_target = target;
20+
_writer = w;
21+
}
22+
23+
@Override
24+
public ValueWriter modifyValueWriter(JSONWriter writeContext,
25+
Class<?> type, ValueWriter defaultWriter) {
26+
if (type == _target) {
27+
return _writer;
28+
}
29+
return defaultWriter;
30+
}
31+
32+
@Override
33+
public ValueWriter overrideStandardValueWriter(JSONWriter writeContext,
34+
Class<?> type, int stdTypeId) {
35+
if (type == _target) {
36+
return _writer;
37+
}
38+
return null;
39+
}
40+
}
41+
42+
/*
43+
/**********************************************************************
44+
/* Tests for wholesale replacement of `ValueReader`
45+
/**********************************************************************
46+
*/
47+
48+
public void testStringWriterReplacement() throws Exception
49+
{
50+
final ReaderWriterModifier mod = new RWModifier(String.class,
51+
new ValueWriter() {
52+
@Override
53+
public void writeValue(JSONWriter context, JsonGenerator g,
54+
Object value) throws IOException {
55+
g.writeString(String.valueOf(value).toUpperCase());
56+
}
57+
58+
@Override
59+
public Class<?> valueType() {
60+
return String.class;
61+
}
62+
});
63+
String result = JSON.std.with(mod).asString("foobar");
64+
assertEquals(quote("FOOBAR"), result);
65+
}
66+
67+
public void testPOJOWriterReplacement() throws Exception
68+
{
69+
final ReaderWriterModifier mod = new RWModifier(NameBean.class,
70+
new ValueWriter() {
71+
@Override
72+
public void writeValue(JSONWriter context, JsonGenerator g,
73+
Object value) throws IOException {
74+
NameBean nb = (NameBean) value;
75+
g.writeString(nb.getFirst() + "-" + nb.getLast());
76+
}
77+
78+
@Override
79+
public Class<?> valueType() {
80+
return NameBean.class;
81+
}
82+
});
83+
String json = JSON.std.with(mod).asString(new NameBean("Foo", "Bar"));
84+
assertEquals(quote("Foo-Bar"), json);
85+
}
86+
}

0 commit comments

Comments
 (0)