KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > test > prefuse > data > CascadedTableTest


1 package test.prefuse.data;
2
3 import junit.framework.TestCase;
4 import prefuse.data.CascadedTable;
5 import prefuse.data.Table;
6 import prefuse.data.Tuple;
7 import prefuse.data.expression.AbstractPredicate;
8 import prefuse.data.expression.AndPredicate;
9 import prefuse.data.expression.ArithmeticExpression;
10 import prefuse.data.expression.ColumnExpression;
11 import prefuse.data.expression.ComparisonPredicate;
12 import prefuse.data.expression.Expression;
13 import prefuse.data.expression.NumericLiteral;
14 import prefuse.data.expression.Predicate;
15 import prefuse.data.expression.RangePredicate;
16 import prefuse.data.io.DelimitedTextTableWriter;
17 import prefuse.data.util.TableIterator;
18 import test.prefuse.TestConfig;
19
20 public class CascadedTableTest extends TestCase implements TableTestData {
21
22     Table t;
23     
24     /**
25      * @see junit.framework.TestCase#setUp()
26      */

27     protected void setUp() throws Exception JavaDoc {
28         super.setUp();
29         t = TableTest.getTestCaseTable();
30     }
31     
32     /**
33      * @see junit.framework.TestCase#tearDown()
34      */

35     protected void tearDown() throws Exception JavaDoc {
36         super.tearDown();
37         t = null;
38     }
39     
40     public void testCascadedTableRangeFilters() {
41         double lo = 1;
42         double hi = 20;
43
44         // index the double column
45
t.index(HEADERS[4]);
46         
47         // where id > 0 && dub > 1 && dub < 20
48
ColumnExpression id = new ColumnExpression(HEADERS[0]);
49         ColumnExpression dub = new ColumnExpression(HEADERS[4]);
50         NumericLiteral x0 = new NumericLiteral(0);
51         NumericLiteral xlo = new NumericLiteral(lo);
52         NumericLiteral xhi1 = new NumericLiteral(hi-1.0);
53         NumericLiteral xhi2 = new NumericLiteral(1.0f);
54         Expression xhi = new ArithmeticExpression(
55                 ArithmeticExpression.ADD, xhi1, xhi2);
56
57         ComparisonPredicate idCmp = new ComparisonPredicate(
58                 ComparisonPredicate.GTEQ, id, x0);
59         RangePredicate dubRg = new RangePredicate(RangePredicate.IN_EX, dub,
60                 xlo, xhi);
61         AndPredicate filter = new AndPredicate(idCmp, dubRg);
62
63         if ( TestConfig.verbose() ) {
64             System.out.println(filter.toString());
65         }
66         
67         CascadedTable ft = new CascadedTable(t, filter);
68
69         TableIterator iter = ft.iterator();
70         while ( iter.hasNext() ) {
71             int row = iter.nextInt();
72             try {
73                 for (int c = 0; c < NCOLS; ++c) {
74                     Object JavaDoc o1 = TABLE[c][ft.getColumnRow(row,c)];
75                     Object JavaDoc o2 = ft.get(row,HEADERS[c]);
76                     assertEquals(o1, o2);
77                 }
78             } catch (Exception JavaDoc e) {
79                 fail("Caught exception: " + e);
80             }
81         }
82
83         // add an extra column to the cascaded table
84
String JavaDoc name = "test";
85         ft.addColumn(name, double.class, new Double JavaDoc(Math.PI));
86         iter = ft.iterator();
87         while (iter.hasNext()) {
88             int row = iter.nextInt();
89             iter.setDouble(name, Math.E);
90             assertTrue(Math.E == ft.getDouble(row, name));
91         }
92
93         int nr = t.addRow();
94         t.setInt(nr, HEADERS[0], nr+1);
95         t.setDouble(nr, HEADERS[4], 2.5);
96
97         if ( TestConfig.verbose() ) {
98             try {
99                 new DelimitedTextTableWriter().writeTable(ft, System.out);
100             } catch ( Exception JavaDoc e ) { e.printStackTrace(); }
101         }
102     }
103     
104     /*
105      * Test method for
106      * 'prefuse.data.CascadedTable.CascadedTable(Table,RowFilter)'
107      */

108     public void testCascadedTableTableRowFilter() {
109         final float thresh = 5.0f;
110         
111         Predicate p = new AbstractPredicate() {
112             public boolean getBoolean(Tuple t) {
113                 return t.getFloat(HEADERS[3]) < thresh;
114             }
115         };
116         
117         CascadedTable ft = new CascadedTable(t, p);
118         
119         for ( int i=0, r=0; i<NROWS; ++i ) {
120             float val = ((Float JavaDoc)TABLE[3][i]).floatValue();
121             if ( val < thresh ) {
122                 try {
123                     for ( int c=0; c<NCOLS; ++c ) {
124                         Object JavaDoc o1 = TABLE[c][i];
125                         Object JavaDoc o2 = ft.get(r, HEADERS[c]);
126                         assertEquals(o1, o2);
127                     }
128                     ++r;
129                 } catch ( Exception JavaDoc e ) {
130                     fail("Caught exception: "+e);
131                 }
132             }
133         }
134         
135         // add an extra column to the cascaded table
136
String JavaDoc name = "test";
137         ft.addColumn(name, double.class, new Double JavaDoc(Math.PI));
138         TableIterator iter = ft.iterator();
139         while ( iter.hasNext() ) {
140             int row = iter.nextInt();
141             iter.setDouble(name, Math.E);
142             assertTrue(Math.E == ft.getDouble(row, name));
143         }
144         
145         int nr = t.addRow();
146         t.setFloat(nr, HEADERS[3], 0.5f);
147         t.setInt(nr, HEADERS[0], 77);
148         nr = t.addRow();
149         t.setFloat(nr, HEADERS[3], 0.5f);
150         t.setInt(nr, HEADERS[0], 99);
151         
152         if ( TestConfig.verbose() ) {
153             try {
154                 new DelimitedTextTableWriter().writeTable(ft, System.out);
155             } catch ( Exception JavaDoc e ) { e.printStackTrace(); }
156         }
157     }
158
159 }
160
Popular Tags