1 package test.prefuse.data.column; 2 3 import junit.framework.TestCase; 4 import prefuse.data.Table; 5 import prefuse.data.expression.ArithmeticExpression; 6 import prefuse.data.expression.ColumnExpression; 7 import prefuse.data.expression.Expression; 8 import prefuse.data.expression.NumericLiteral; 9 import prefuse.data.io.DelimitedTextTableWriter; 10 import prefuse.data.util.TableIterator; 11 import test.prefuse.TestConfig; 12 import test.prefuse.data.TableTest; 13 import test.prefuse.data.TableTestData; 14 15 public class ExpressionColumnTest extends TestCase implements TableTestData { 16 17 Table t; 18 19 protected void setUp() throws Exception { 20 super.setUp(); 21 t = TableTest.getTestCaseTable(); 22 } 23 24 protected void tearDown() throws Exception { 25 super.tearDown(); 26 t = null; 27 } 28 29 public void testDerivedColumn() { 30 String AVG = "average"; 31 32 Expression fc = new ColumnExpression(HEADERS[3]); 33 Expression dc = new ColumnExpression(HEADERS[4]); 34 Expression l2 = new NumericLiteral(2); 35 36 Expression add = new ArithmeticExpression( 37 ArithmeticExpression.ADD, fc, dc); 38 Expression avg = new ArithmeticExpression( 39 ArithmeticExpression.DIV, add, l2); 40 41 t.addColumn(AVG, avg); 42 43 TableIterator it = t.iterator(); 44 while ( it.hasNext() ) { 45 it.nextInt(); 46 float f = it.getFloat(HEADERS[3]); 47 double d = it.getDouble(HEADERS[4]); 48 double av = (f+d)/2; 49 assertTrue(av == it.getDouble(AVG)); 50 } 51 52 int r = t.addRow(); 53 assertTrue(t.getDouble(r, AVG) == 0.0); 54 55 t.setFloat(r, HEADERS[3], 2.0f); 56 assertTrue(t.getDouble(r, AVG) == 1.0); 57 58 t.setDouble(r, HEADERS[4], 3.0f); 59 assertTrue(t.getDouble(r, AVG) == 2.5); 60 61 if ( TestConfig.verbose() ) { 62 try { 63 new DelimitedTextTableWriter().writeTable(t, System.out); 64 } catch ( Exception e ) { e.printStackTrace(); } 65 } 66 67 t.removeColumn(AVG); 68 t.setDouble(0, HEADERS[4], 0); 69 System.gc(); 70 t.setDouble(0, HEADERS[4], 0); 71 72 if ( TestConfig.verbose() ) { 73 try { 74 new DelimitedTextTableWriter().writeTable(t, System.out); 75 } catch ( Exception e ) { e.printStackTrace(); } 76 } 77 } 78 79 } 80 | Popular Tags |