1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.dbutils.handlers;
18
19 import java.sql.SQLException;
20 import java.util.Iterator;
21 import java.util.List;
22
23 import org.apache.commons.dbutils.BaseTestCase;
24 import org.apache.commons.dbutils.ResultSetHandler;
25 import org.apache.commons.dbutils.TestBean;
26
27
28
29
30 public class BeanListHandlerTest extends BaseTestCase {
31
32 public static class SubTestBean extends TestBean implements SubTestBeanInterface { }
33
34 public interface SubTestBeanInterface {
35 String getDoNotSet();
36
37 String getOne();
38
39 TestBean.Ordinal getThree();
40
41 String getTwo();
42 }
43
44 public void testEmptyResultSetHandle() throws SQLException {
45 final ResultSetHandler<List<TestBean>> h = new BeanListHandler<>(TestBean.class);
46 final List<TestBean> results = h.handle(this.emptyResultSet);
47
48 assertNotNull(results);
49 assertTrue(results.isEmpty());
50 }
51
52 public void testHandle() throws SQLException {
53 final ResultSetHandler<List<TestBean>> h = new BeanListHandler<>(TestBean.class);
54 final List<TestBean> results = h.handle(this.rs);
55
56 assertNotNull(results);
57 assertEquals(ROWS, results.size());
58
59 final Iterator<TestBean> iter = results.iterator();
60 TestBean row;
61 assertTrue(iter.hasNext());
62 row = iter.next();
63 assertEquals("1", row.getOne());
64 assertEquals("2", row.getTwo());
65 assertEquals(TestBean.Ordinal.THREE, row.getThree());
66 assertEquals("not set", row.getDoNotSet());
67
68 assertTrue(iter.hasNext());
69 row = iter.next();
70
71 assertEquals("4", row.getOne());
72 assertEquals("5", row.getTwo());
73 assertEquals(TestBean.Ordinal.SIX, row.getThree());
74 assertEquals("not set", row.getDoNotSet());
75
76 assertFalse(iter.hasNext());
77 }
78
79 public void testHandleToInterface() throws SQLException {
80 final ResultSetHandler<List<SubTestBeanInterface>> h = new BeanListHandler<>(SubTestBean.class);
81 final List<SubTestBeanInterface> results = h.handle(this.rs);
82
83 assertNotNull(results);
84 assertEquals(ROWS, results.size());
85
86 final Iterator<SubTestBeanInterface> iter = results.iterator();
87 SubTestBeanInterface row;
88 assertTrue(iter.hasNext());
89 row = iter.next();
90 assertSame(SubTestBean.class, row.getClass());
91
92 assertEquals("1", row.getOne());
93 assertEquals("2", row.getTwo());
94 assertEquals(TestBean.Ordinal.THREE, row.getThree());
95 assertEquals("not set", row.getDoNotSet());
96
97 assertTrue(iter.hasNext());
98 row = iter.next();
99 assertSame(SubTestBean.class, row.getClass());
100
101 assertEquals("4", row.getOne());
102 assertEquals("5", row.getTwo());
103 assertEquals(TestBean.Ordinal.SIX, row.getThree());
104 assertEquals("not set", row.getDoNotSet());
105
106 assertFalse(iter.hasNext());
107 }
108
109 public void testHandleToSuperClass() throws SQLException {
110 final ResultSetHandler<List<TestBean>> h = new BeanListHandler<>(SubTestBean.class);
111 final List<TestBean> results = h.handle(this.rs);
112
113 assertNotNull(results);
114 assertEquals(ROWS, results.size());
115
116 final Iterator<TestBean> iter = results.iterator();
117 assertTrue(iter.hasNext());
118 TestBean row = iter.next();
119 assertSame(SubTestBean.class, row.getClass());
120
121 assertEquals("1", row.getOne());
122 assertEquals("2", row.getTwo());
123 assertEquals(TestBean.Ordinal.THREE, row.getThree());
124 assertEquals("not set", row.getDoNotSet());
125
126 assertTrue(iter.hasNext());
127 row = iter.next();
128 assertSame(SubTestBean.class, row.getClass());
129
130 assertEquals("4", row.getOne());
131 assertEquals("5", row.getTwo());
132 assertEquals(TestBean.Ordinal.SIX, row.getThree());
133 assertEquals("not set", row.getDoNotSet());
134
135 assertFalse(iter.hasNext());
136 }
137 }