/*
* IzPack - Copyright 2001-2006 Julien Ponge, All Rights Reserved.
*
* http://www.izforge.com/izpack/ http://izpack.codehaus.org/
*
* Copyright 2007 Dennis Reil
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package com.izforge.izpack.installer;
import com.izforge.izpack.adaptator.IXMLElement;
import com.izforge.izpack.adaptator.impl.XMLElementImpl;
import com.izforge.izpack.rules.RulesEngine;
import junit.framework.TestCase;
/**
* @author Dennis Reil, <Dennis.Reil@reddot.de>
*/
public class ConditionTest extends TestCase
{
public final static String RDE_VCS_REVISION = "$Revision: $";
public final static String RDE_VCS_NAME = "$Name: $";
protected static InstallData idata = new InstallData();
protected RulesEngine rules;
/**
* @param arg0
*/
public ConditionTest(String arg0)
{
super(arg0);
}
/* (non-Javadoc)
* @see junit.framework.TestCase#setUp()
*/
protected void setUp() throws Exception
{
super.setUp();
IXMLElement conditionspec = new XMLElementImpl("conditions");
conditionspec.addChild(this.createVariableCondition("test.true", "TEST", "true"));
conditionspec.addChild(this.createRefCondition("test.true2", "test.true"));
//conditionspec.addChild(createNotCondition("test.not.true", createVariableCondition("test.true", "TEST", "true")));
conditionspec.addChild(createNotCondition("test.not.true", createRefCondition("", "test.true")));
rules = new RulesEngine(conditionspec, idata);
}
/* (non-Javadoc)
* @see junit.framework.TestCase#tearDown()
*/
protected void tearDown() throws Exception
{
super.tearDown();
if (idata != null)
{
idata.variables.clear();
}
}
protected IXMLElement createNotCondition(String id, IXMLElement condition)
{
IXMLElement not = new XMLElementImpl("condition");
not.setAttribute("type", "not");
not.setAttribute("id", id);
not.addChild(condition);
return not;
}
protected IXMLElement createVariableCondition(String id, String variable, String expvalue)
{
IXMLElement variablecondition = new XMLElementImpl("condition");
variablecondition.setAttribute("type", "variable");
variablecondition.setAttribute("id", id);
IXMLElement name = new XMLElementImpl("name");
name.setContent(variable);
IXMLElement value = new XMLElementImpl("value");
value.setContent(expvalue);
variablecondition.addChild(name);
variablecondition.addChild(value);
return variablecondition;
}
protected IXMLElement createRefCondition(String id, String refid)
{
IXMLElement refcondition = new XMLElementImpl("condition");
refcondition.setAttribute("type", "ref");
refcondition.setAttribute("refid", refid);
refcondition.setAttribute("id", id);
return refcondition;
}
public void testNotCondition()
{
assertNull(RulesEngine.getCondition("test.not"));
assertNotNull(RulesEngine.getCondition("test.not.true"));
assertTrue(rules.isConditionTrue("test.not.true", idata.variables));
assertNotNull(RulesEngine.getCondition("!test.not.true"));
assertFalse(rules.isConditionTrue("!test.not.true", idata.variables));
}
public void testVariableCondition()
{
assertNotNull(RulesEngine.getCondition("test.true"));
assertNotNull(RulesEngine.getCondition("test.true2"));
assertFalse(rules.isConditionTrue("test.true", idata.variables));
assertFalse(rules.isConditionTrue("test.true2", idata.variables));
idata.setVariable("TEST", "true");
assertTrue(rules.isConditionTrue("test.true", idata.variables));
assertTrue(rules.isConditionTrue("test.true2", idata.variables));
assertFalse(rules.isConditionTrue("!test.true", idata.variables));
assertFalse(rules.isConditionTrue("!test.true2", idata.variables));
assertTrue(rules.isConditionTrue("test.true+test.true2", idata.variables));
assertTrue(rules.isConditionTrue("test.true2+test.true", idata.variables));
assertFalse(rules.isConditionTrue("!test.true2+test.true", idata.variables));
assertTrue(rules.isConditionTrue("test.true2|test.true", idata.variables));
assertFalse(rules.isConditionTrue("test.true2\\test.true", idata.variables));
}
}