001 package org.springframework.richclient.table;
002
003 import java.util.ArrayList;
004 import java.util.Arrays;
005 import java.util.List;
006
007 /**
008 * @author peter.de.bruycker
009 */
010 public class ListTableModelTests extends AbstractBaseTableModelTests {
011
012
013 private final ListTableModel dummyListTableModel = new ListTableModel() {
014
015 protected Class[] createColumnClasses() {
016 return new Class[] { String.class };
017 }
018
019 protected String[] createColumnNames() {
020 return new String[] { "column" };
021 }
022
023
024 };
025
026 /**
027 * {@inheritDoc}
028 */
029 protected BaseTableModel getBaseTableModel() {
030 return this.dummyListTableModel;
031 }
032
033 /**
034 * TestCase for bug #RCP-14
035 */
036 public void testConstructorThrowsNullPointerException() {
037 try {
038 ListTableModel model = new ListTableModel() {
039 protected Class[] createColumnClasses() {
040 return new Class[] { String.class };
041 }
042
043 protected String[] createColumnNames() {
044 return new String[] { "column" };
045 }
046 };
047 model.createColumnInfo();
048 model.getColumnCount();
049 }
050 catch (NullPointerException e) {
051 fail("Should not throw NullPointerException");
052 }
053
054 try {
055 ListTableModel model = new ListTableModel(new ArrayList()) {
056 protected Class[] createColumnClasses() {
057 return new Class[] { String.class };
058 }
059
060 protected String[] createColumnNames() {
061 return new String[] { "col0" };
062 }
063 };
064 model.createColumnInfo();
065 model.getColumnCount();
066 }
067 catch (NullPointerException e) {
068 fail("Should not throw NullPointerException");
069 }
070 }
071
072 public void testGetValueAtInternalWithOneColumnNoArray() {
073 ListTableModel model = new ListTableModel() {
074 protected Class[] createColumnClasses() {
075 return new Class[] { String.class };
076 }
077
078 protected String[] createColumnNames() {
079 return new String[] { "col0" };
080 }
081 };
082 model.setRowNumbers(false);
083
084 String row = "col0";
085
086 assertEquals("col0", model.getValueAtInternal(row, 0));
087 }
088
089 public void testGetValueAtInternalWithArray() {
090 ListTableModel model = new ListTableModel() {
091 protected Class[] createColumnClasses() {
092 return new Class[] { String.class, String.class };
093 }
094
095 protected String[] createColumnNames() {
096 return new String[] { "col0", "col1" };
097 }
098 };
099 model.setRowNumbers(false);
100
101 String[] row = new String[] { "col0", "col1" };
102
103 assertEquals("col0", model.getValueAtInternal(row, 0));
104 assertEquals("col1", model.getValueAtInternal(row, 1));
105 }
106
107 public void testGetValueAtInternalWithInvalidObjectType() {
108 // model with two columns, but no list or array as rows
109 ListTableModel model = new ListTableModel() {
110 protected Class[] createColumnClasses() {
111 return new Class[] { String.class, String.class };
112 }
113
114 protected String[] createColumnNames() {
115 return new String[] { "col0", "col1" };
116 }
117 };
118 model.setRowNumbers(false);
119
120 String row = "col0";
121
122 try {
123 model.getValueAtInternal(row, 0);
124 fail("Should throw IllegalArgumentException");
125 }
126 catch (IllegalArgumentException e) {
127 pass();
128 }
129 }
130
131 private static void pass() {
132 // test passes
133 }
134
135 public void testGetValueAtInternalWithList() {
136 ListTableModel model = new ListTableModel() {
137 protected Class[] createColumnClasses() {
138 return new Class[] { String.class, String.class };
139 }
140
141 protected String[] createColumnNames() {
142 return new String[] { "col0", "col1" };
143 }
144 };
145 model.createColumnInfo();
146 List row = Arrays.asList(new String[] { "col0", "col1" });
147 assertEquals("col0", model.getValueAtInternal(row, 0));
148 assertEquals("col1", model.getValueAtInternal(row, 1));
149 }
150
151 public void testGetValueAtInternalWithOneColumnAndArray() {
152 ListTableModel model = new ListTableModel() {
153 protected Class[] createColumnClasses() {
154 return new Class[] { String.class };
155 }
156
157 protected String[] createColumnNames() {
158 return new String[] { "col0" };
159 }
160 };
161 model.setRowNumbers(false);
162
163 String[] row = new String[] { "col0", "col1" };
164
165 assertEquals("col0", model.getValueAtInternal(row, 0));
166 }
167 }