/* * FormulaTest.java * JUnit based test * * Created on August 15, 2006, 7:35 PM */ package com.accountingenhancements.formula; import com.accountingenhancements.common.SupportParameters; import junit.framework.*; import java.text.ParseException; /** * * @author lofgren */ public class FormulaTest extends TestCase { public FormulaTest(String testName) { super(testName); } protected void setUp() throws Exception { } protected void tearDown() throws Exception { } public static Test suite() { TestSuite suite = new TestSuite(FormulaTest.class); return suite; } /** * Test of getFunctionList method, of class com.accountingenhancements.formula.Formula. */ public void testGetFunctionList() { System.out.println("getFunctionList"); Formula instance = new Formula(); FormulaFunctionList expResult = null; FormulaFunctionList result = instance.getFunctionList(); assertEquals(FormulaFunction_IIF.class, result.getFunctionClass("iif")); } /** * Test of getVariableList method, of class com.accountingenhancements.formula.Formula. */ public void testGetVariableList()throws Exception { System.out.println("getVariableList"); Formula instance = new Formula(); instance.add("test=1+2"); FormulaVariableList result = instance.getVariableList(); assertEquals("1+2", result.getString("test")); } /** * Test of getFormulaStack method, of class com.accountingenhancements.formula.Formula. */ public void testGetFormulaStack()throws Exception { System.out.println("getFormulaStack"); Formula instance = new Formula(); instance.add("test=1+2"); FormulaVariableStack result = instance.getFormulaStack(); assertEquals("test", result.get(0).getVariableName()); } /** * Test of getSupportParameters method, of class com.accountingenhancements.formula.Formula. */ public void testGetSupportParameters() { System.out.println("getSupportParameters"); Formula instance = new Formula(); instance.add("test",(Object)new String("wow")); SupportParameters result = instance.getSupportParameters(); assertEquals("wow", (String)result.get("test")); } /** * Test of purgeDownToSpecifiedLevel method, of class com.accountingenhancements.formula.Formula. */ public void testPurgeDownToSpecifiedLevel()throws Exception { System.out.println("purgeDownToSpecifiedLevel"); Formula instance = new Formula(); instance.add("test1=\"Wow\"",0); instance.add("test2=\"hi\"",2); instance.add("test3=test2+\" there\"",1); assertEquals("hi there",instance.solve("test3").toString()); assertEquals("hi there",instance.getFormulaStack().get("test3").resolvedVariable.toString()); assertEquals("hi there",instance.getVariableList().getVariable("test3").resolvedVariable.toString()); instance.purgeDownToSpecifiedLevel(1); assertNull(instance.getVariableList().getVariable("test2")); assertEquals("Wow",instance.getVariableList().getVariable("test1").toString()); assertEquals("test3",instance.getVariableList().getVariable("test3").getVariableName()); assertNull(instance.getFormulaStack().get("test3").resolvedVariable); instance.purgeDownToSpecifiedLevel(0); assertEquals(0,instance.getFormulaStack().size()); } /** * Test of add method, of class com.accountingenhancements.formula.Formula. */ public void testAdd()throws Exception { System.out.println("add"); Formula instance = new Formula(); //add(String variableName, String value, int scaleIfDouble, int level) //add(Class functionClass) //add(String supportParameterName, Object supportParameterObject){supportParameters.put(supportParameterName, supportParameterObject) // add(String variables, int level) //add(String variables) instance.add("test","1.23",3,1); assertEquals(FormulaVariable.TYPE_DOUBLE,instance.getVariableList().getVariable("test").getVariableType()); assertEquals(1,instance.getVariableList().getVariable("test").getLevel()); assertEquals("1.230",instance.getVariableList().getVariable("test").getString()); instance.add(FormulaFunctionListTest_FormulaFunction_Test.class); assertEquals(FormulaFunctionListTest_FormulaFunction_Test.class,instance.getFunctionList().getFunctionClass("FormulaFunctionListTest_FormulaFunction_Test")); instance.add("test3",(Object)new String("WOW")); assertEquals("WOW",(String)instance.getSupportParameters().get("test3")); instance.add("test4=\"Hi\"",1); assertEquals("Hi",instance.getVariableList().getVariable("test4").getString()); assertEquals(1,instance.getVariableList().getVariable("test4").getLevel()); instance.add("test5=\"Hello\";test6=\"There\"",2); assertEquals("Hello",instance.getVariableList().getVariable("test5").getString()); assertEquals(2,instance.getVariableList().getVariable("test5").getLevel()); assertEquals("There",instance.getVariableList().getVariable("test6").getString()); assertEquals(2,instance.getVariableList().getVariable("test6").getLevel()); instance.add("test7=\"Hi\""); assertEquals("Hi",instance.getVariableList().getVariable("test7").getString()); assertEquals(0,instance.getVariableList().getVariable("test7").getLevel()); instance.add("test8=\"Hello\";test9=\"There\""); assertEquals("Hello",instance.getVariableList().getVariable("test8").getString()); assertEquals(0,instance.getVariableList().getVariable("test8").getLevel()); assertEquals("There",instance.getVariableList().getVariable("test9").getString()); assertEquals(0,instance.getVariableList().getVariable("test9").getLevel()); } /** * Test of solve method, of class com.accountingenhancements.formula.Formula. */ public void testSolve() throws Exception { System.out.println("solve"); Formula instance = new Formula(); instance.add("test1=test2+\" There\";test2=\"Hi\""); FormulaVariable result = instance.solve("test1"); assertEquals("Hi There", result.toString()); assertEquals(FormulaVariable.TYPE_STRING,result.getVariableType()); } /** * Test of solveFormula method, of class com.accountingenhancements.formula.Formula. */ public void testSolveFormula() throws Exception { System.out.println("solveFormula"); Formula instance = new Formula(); instance.add("test2=test3;test3=\"He\"",1); FormulaVariable result = instance.solveFormula("test2+\"llo\""); assertEquals("Hello", result.toString()); instance.getVariableList().getVariable("test3").setValue("he"); result=instance.solveFormula("test2+\"llo\"",1); assertEquals("Hello", result.toString()); result=instance.solveFormula("test2+\"llo\"",0); assertEquals("hello", result.toString()); } /** * Test of solveQuickFormula method, of class com.accountingenhancements.formula.Formula. */ public void testSolveQuickFormula() throws Exception { System.out.println("solveQuickFormula"); //FormulaVariable solveQuickFormula(String formula, String variables) //FormulaVariable solveQuickFormula(String formula) FormulaVariable result = Formula.solveQuickFormula("1+4",null); assertEquals(5L,result.getLong().longValue()); result = Formula.solveQuickFormula("test1+4","test1=3"); assertEquals(7L,result.getLong().longValue()); } /** *Test of get method, of class com.accountingenhancements.formula.Formula. */ public void testGet()throws Exception{ System.out.println("testGet"); Formula instance = new Formula(); instance.add("test","1.23",3,1); FormulaVariable variable=instance.get("test"); assertEquals(FormulaVariable.TYPE_DOUBLE,variable.getVariableType()); assertEquals(1,variable.getLevel()); assertEquals("1.230",variable.getString()); } /** *Test of getValue method, of class com.accountingenhancements.formula.Formula. */ public void testGetValue()throws Exception{ System.out.println("testGetValue"); Formula instance = new Formula(); instance.add("test=test2+\"llo\";test2=test3;test3=\"He\"",1); String result = instance.getValue("test"); assertEquals("Hello", result); instance.get("test3").setValue("he"); result = instance.getValue("test",2); assertEquals("Hello", result); result = instance.getValue("test",0); assertEquals("hello", result); } /** *Test of getQuickValue method, of class com.accountingenhancements.formula.Formula. */ public void testGetQuickValue()throws Exception{ System.out.println("testGetQuickValue"); String result = Formula.getQuickValue("1+4",null); assertEquals("5",result); result = Formula.getQuickValue("test1+4","test1=3"); assertEquals("7",result); } /** *Test of getQuickValueNoErrors method, of class com.accountingenhancements.formula.Formula. */ public void testGetQuickValueNoErrors()throws Exception{ System.out.println("testGetQuickValueNoError"); String result = Formula.getQuickValueNoErrors("1+4",null); assertEquals("5",result); result = Formula.getQuickValueNoErrors("test1+4","test2=3"); assertEquals("",result); } }