/* * FormulaFunctionListTest.java * JUnit based test * * Created on August 10, 2006, 2:06 PM */ package com.accountingenhancements.formula; import java.text.ParseException; import junit.framework.*; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; /** * * @author lofgren */ public class FormulaFunctionListTest extends TestCase { public FormulaFunctionListTest(String testName) { super(testName); } protected void setUp() throws Exception { } protected void tearDown() throws Exception { } public static Test suite() { TestSuite suite = new TestSuite(FormulaFunctionListTest.class); return suite; } /** * Test of addFunction method, of class com.accountingenhancements.formula.FormulaFunctionList. */ public void testAddFunction() { System.out.println("addFunction"); Class functionClass = FormulaFunctionListTest_FormulaFunction_Test.class; FormulaFunctionList instance = new FormulaFunctionList(); instance.addFunction(functionClass); } /** * Test of getFunctionClass method, of class com.accountingenhancements.formula.FormulaFunctionList. */ public void testGetFunctionClass() { System.out.println("getFunctionClass"); String functionName=null; Class functionClass = FormulaFunctionListTest_FormulaFunction_Test.class; FormulaFunctionList instance = new FormulaFunctionList(); instance.addFunction(functionClass); functionName = "FormulaFunctionListTest_FormulaFunction_Test"; Class result = instance.getFunctionClass(functionName); assertEquals(functionClass, result); functionName = "FormulaFunctionListTest_FormulaFunction_Test (a,b,c)"; result = instance.getFunctionClass(functionName); assertEquals(functionClass, result); functionName = "FormulaFunctionListTest_FormulaFunction_Testing (a,b,c)"; result = instance.getFunctionClass(functionName); assertNull(result); } /** * Test of dropFunction method, of class com.accountingenhancements.formula.FormulaFunctionList. */ public void testDropFunction() { System.out.println("dropFunction"); String functionName = "FormulaFunctionListTest_FormulaFunction_Test"; Class functionClass = FormulaFunctionListTest_FormulaFunction_Test.class; FormulaFunctionList instance = new FormulaFunctionList(); instance.addFunction(functionClass); instance.dropFunction(functionName); Class result = instance.getFunctionClass(functionName); assertNull(result); } /** * Test of getFunction method, of class com.accountingenhancements.formula.FormulaFunctionList. */ public void testGetFunction() throws Exception { System.out.println("getFunction"); FormulaVariable functionVariable = new FormulaVariable("","IIF(9<8,7,6)",0,true); FormulaFunctionList instance = new FormulaFunctionList(); FormulaFunction result = instance.getFunction(functionVariable); assertTrue("Was: <"+result.getClass().getName()+"> Expected: ",FormulaFunction_IIF.class.equals(result.getClass())); FormulaVariable resultVariable=result.function(null,0,null,instance,0); assertEquals(6,resultVariable.getLong().intValue()); functionVariable = new FormulaVariable("","LCase(\"Hi There\")",0,true); instance = new FormulaFunctionList(); result = instance.getFunction(functionVariable); assertTrue("Was: <"+result.getClass().getName()+"> Expected: ",FormulaFunction_LCase.class.equals(result.getClass())); resultVariable=result.function(null,0,null,instance,0); assertEquals("hi there",resultVariable.toString()); functionVariable = new FormulaVariable("","Left(\"Hi There\",2)",0,true); instance = new FormulaFunctionList(); result = instance.getFunction(functionVariable); assertTrue("Was: <"+result.getClass().getName()+"> Expected: ",FormulaFunction_Left.class.equals(result.getClass())); resultVariable=result.function(null,0,null,instance,0); assertEquals("Hi",resultVariable.toString()); functionVariable = new FormulaVariable("","Len(\"Hi There\")",0,true); instance = new FormulaFunctionList(); result = instance.getFunction(functionVariable); assertTrue("Was: <"+result.getClass().getName()+"> Expected: ",FormulaFunction_Len.class.equals(result.getClass())); resultVariable=result.function(null,0,null,instance,0); assertEquals(8,resultVariable.getLong().intValue()); functionVariable = new FormulaVariable("","Mid(\"Hi There\",4,2)",0,true); instance = new FormulaFunctionList(); result = instance.getFunction(functionVariable); assertTrue("Was: <"+result.getClass().getName()+"> Expected: ",FormulaFunction_Mid.class.equals(result.getClass())); resultVariable=result.function(null,0,null,instance,0); assertEquals("he",resultVariable.toString()); functionVariable = new FormulaVariable("","Right(\"Hi There\",2)",0,true); instance = new FormulaFunctionList(); result = instance.getFunction(functionVariable); assertTrue("Was: <"+result.getClass().getName()+"> Expected: ",FormulaFunction_Right.class.equals(result.getClass())); resultVariable=result.function(null,0,null,instance,0); assertEquals("re",resultVariable.toString()); functionVariable = new FormulaVariable("","UCase(\"Hi There\")",0,true); instance = new FormulaFunctionList(); result = instance.getFunction(functionVariable); assertTrue("Was: <"+result.getClass().getName()+"> Expected: ",FormulaFunction_UCase.class.equals(result.getClass())); resultVariable=result.function(null,0,null,instance,0); assertEquals("HI THERE",resultVariable.toString()); //Test levels FormulaVariableList variableList = new FormulaVariableList(); FormulaVariable val1 = new FormulaVariable("Val1","ABA",1,false); FormulaVariable val2 = new FormulaVariable("Val2","ABB",1,false); variableList.addVariable(val1); variableList.addVariable(val2); functionVariable = new FormulaVariable("","IIF(Val1 Expected: ",FormulaFunction_IIF.class.equals(result.getClass())); resultVariable=result.function(variableList,0,null,instance,0); assertEquals("Val1 is Less",resultVariable.toString()); val1.setValue("ABC"); resultVariable=result.function(variableList,0,null,instance,1); //Shouldn't recalculate since this level matches variable levels assertEquals("Val1 is Less",resultVariable.toString()); resultVariable=result.function(variableList,0,null,instance,0); //Should now recalculate assertEquals("Val2 is Less",resultVariable.toString()); } } class FormulaFunctionListTest_FormulaFunction_Test extends FormulaFunction{ public FormulaFunctionListTest_FormulaFunction_Test() throws ParseException{ super(""); } public static String getName(){return "FormulaFunctionListTest_FormulaFunction_Test";} }