001: // Copyright (c) 2003-2007, Jodd Team (jodd.sf.net). All Rights Reserved.
002:
003: package jodd.bean;
004:
005: import junit.framework.TestCase;
006: import jodd.bean.test.FooBean;
007:
008: public class BeanCopyTest extends TestCase {
009:
010: public void testCopy() {
011: FooBean fb = new FooBean();
012: fb.setFooInteger(new Integer(201));
013: fb.setFooint(202);
014: fb.setFooLong(new Long(203));
015: fb.setFoolong(204);
016: fb.setFooByte(new Byte((byte) 95));
017: fb.setFoobyte((byte) 96);
018: fb.setFooCharacter(new Character('7'));
019: fb.setFoochar('8');
020: fb.setFooBoolean(Boolean.TRUE);
021: fb.setFooboolean(false);
022: fb.setFooFloat(new Float(209.0));
023: fb.setFoofloat((float) 210.0);
024: fb.setFooDouble(new Double(211.0));
025: fb.setFoodouble(212.0);
026: fb.setFooString("213");
027: fb.setFooStringA(new String[] { "214", "215" });
028:
029: FooBean dest = new FooBean();
030: BeanUtil.copy(fb, dest);
031:
032: Integer v = (Integer) BeanUtil.getProperty(dest, "fooInteger");
033: assertEquals(201, v.intValue());
034: v = (Integer) BeanUtil.getProperty(dest, "fooint");
035: assertEquals(202, v.intValue());
036: Long vl = (Long) BeanUtil.getProperty(dest, "fooLong");
037: assertEquals(203, vl.longValue());
038: vl = (Long) BeanUtil.getProperty(dest, "foolong");
039: assertEquals(204, vl.longValue());
040: Byte vb = (Byte) BeanUtil.getProperty(dest, "fooByte");
041: assertEquals(95, vb.intValue());
042: vb = (Byte) BeanUtil.getProperty(dest, "foobyte");
043: assertEquals(96, vb.intValue());
044: Character c = (Character) BeanUtil.getProperty(dest,
045: "fooCharacter");
046: assertEquals('7', c.charValue());
047: c = (Character) BeanUtil.getProperty(dest, "foochar");
048: assertEquals('8', c.charValue());
049: Boolean b = (Boolean) BeanUtil.getProperty(dest, "fooBoolean");
050: assertTrue(b.booleanValue());
051: b = (Boolean) BeanUtil.getProperty(dest, "fooboolean");
052: assertFalse(b.booleanValue());
053: Float f = (Float) BeanUtil.getProperty(dest, "fooFloat");
054: assertEquals(209.0, f.floatValue(), 0.005);
055: f = (Float) BeanUtil.getProperty(dest, "foofloat");
056: assertEquals(210.0, f.floatValue(), 0.005);
057: Double d = (Double) BeanUtil.getProperty(dest, "fooDouble");
058: assertEquals(211.0, d.doubleValue(), 0.005);
059: d = (Double) BeanUtil.getProperty(dest, "foodouble");
060: assertEquals(212.0, d.doubleValue(), 0.005);
061: String s = (String) BeanUtil.getProperty(dest, "fooString");
062: assertEquals("213", s);
063: String[] sa = (String[]) BeanUtil.getProperty(dest,
064: "fooStringA");
065: assertEquals(2, sa.length);
066: assertEquals("214", sa[0]);
067: assertEquals("215", sa[1]);
068:
069: FooBean empty = new FooBean();
070: BeanUtil.copy(empty, dest);
071: v = (Integer) BeanUtil.getProperty(dest, "fooInteger");
072: assertNull(v);
073: v = (Integer) BeanUtil.getProperty(dest, "fooint");
074: assertEquals(0, v.intValue());
075: vl = (Long) BeanUtil.getProperty(dest, "fooLong");
076: assertNull(vl);
077: vl = (Long) BeanUtil.getProperty(dest, "foolong");
078: assertEquals(0, vl.longValue());
079: vb = (Byte) BeanUtil.getProperty(dest, "fooByte");
080: assertNull(vb);
081: vb = (Byte) BeanUtil.getProperty(dest, "foobyte");
082: assertEquals(0, vb.byteValue());
083: c = (Character) BeanUtil.getProperty(dest, "fooCharacter");
084: assertNull(c);
085: c = (Character) BeanUtil.getProperty(dest, "foochar");
086: assertEquals(0, c.charValue());
087: b = (Boolean) BeanUtil.getProperty(dest, "fooBoolean");
088: assertNull(b);
089: b = (Boolean) BeanUtil.getProperty(dest, "fooboolean");
090: assertFalse(b.booleanValue());
091: f = (Float) BeanUtil.getProperty(dest, "fooFloat");
092: assertNull(f);
093: f = (Float) BeanUtil.getProperty(dest, "foofloat");
094: assertEquals(0, f.floatValue(), 0.005);
095: d = (Double) BeanUtil.getProperty(dest, "fooDouble");
096: assertNull(d);
097: d = (Double) BeanUtil.getProperty(dest, "foodouble");
098: assertEquals(0, d.doubleValue(), 0.005);
099: s = (String) BeanUtil.getProperty(dest, "fooString");
100: assertNull(s);
101: sa = (String[]) BeanUtil.getProperty(dest, "fooStringA");
102: assertNull(sa);
103: }
104:
105: static class Less {
106: String data;
107: Integer number;
108:
109: public String getData() {
110: return data;
111: }
112:
113: public void setData(String data) {
114: this .data = data;
115: }
116:
117: public Integer getNumber() {
118: return number;
119: }
120:
121: public void setNumber(Integer number) {
122: this .number = number;
123: }
124: }
125:
126: static class More {
127: String data;
128: String number;
129: String boo;
130:
131: public String getData() {
132: return data;
133: }
134:
135: public void setData(String data) {
136: this .data = data;
137: }
138:
139: public String getNumber() {
140: return number;
141: }
142:
143: public void setNumber(String number) {
144: this .number = number;
145: }
146:
147: public String getBoo() {
148: return boo;
149: }
150:
151: public void setBoo(String boo) {
152: this .boo = boo;
153: }
154: }
155:
156: public void testLessToMore() {
157: Less less = new Less();
158: less.data = "data";
159: less.number = new Integer(2);
160: More more = new More();
161: BeanUtil.copy(less, more, true);
162: assertEquals("data", more.data);
163: assertEquals("2", more.number);
164:
165: more.data = "tij";
166: more.number = "17";
167: BeanUtil.copy(more, less, true);
168: assertEquals("tij", less.data);
169: assertEquals(17, less.number.intValue());
170:
171: }
172:
173: }
|