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 27 protected void setUp() throws Exception { 28 super.setUp(); 29 t = TableTest.getTestCaseTable(); 30 } 31 32 35 protected void tearDown() throws Exception { 36 super.tearDown(); 37 t = null; 38 } 39 40 public void testCascadedTableRangeFilters() { 41 double lo = 1; 42 double hi = 20; 43 44 t.index(HEADERS[4]); 46 47 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 o1 = TABLE[c][ft.getColumnRow(row,c)]; 75 Object o2 = ft.get(row,HEADERS[c]); 76 assertEquals(o1, o2); 77 } 78 } catch (Exception e) { 79 fail("Caught exception: " + e); 80 } 81 } 82 83 String name = "test"; 85 ft.addColumn(name, double.class, new Double (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 e ) { e.printStackTrace(); } 101 } 102 } 103 104 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 )TABLE[3][i]).floatValue(); 121 if ( val < thresh ) { 122 try { 123 for ( int c=0; c<NCOLS; ++c ) { 124 Object o1 = TABLE[c][i]; 125 Object o2 = ft.get(r, HEADERS[c]); 126 assertEquals(o1, o2); 127 } 128 ++r; 129 } catch ( Exception e ) { 130 fail("Caught exception: "+e); 131 } 132 } 133 } 134 135 String name = "test"; 137 ft.addColumn(name, double.class, new Double (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 e ) { e.printStackTrace(); } 156 } 157 } 158 159 } 160 | Popular Tags |