📄 functionbuildertest.java
字号:
package examples.functionFinder.test;
import java.util.*;
import org.jgap.*;
import junit.framework.*;
import examples.functionFinder.*;
/**
* Tests for FunctionBuilder class
*
* @author Klaus Meffert
* @since 2.2
*/
public class FunctionBuilderTest extends TestCase {
/** String containing the CVS revision. Read out via reflection!*/
private static final String CVS_REVISION = "$Revision: 1.1 $";
public FunctionBuilderTest() {
Repository.init();
}
public void testEmpty_0() {
String formula = getFormula(null);
assertEquals("", formula);
}
public void testEmpty_1() {
String formula = getFormula(null);
assertEquals("", formula);
}
public void testEmpty_2() {
Vector elements = new Vector();
Term element = new Term(0, "X", 1);
elements.add(element);
try {
String formula = getFormula(elements);
fail();
}
catch (RuntimeException rte) {
; //this is OK
}
}
public void testEmpty_3() {
Vector elements = new Vector();
try {
Term element = new Term(1, "", 1);
fail();
}
catch (AssertionFailedError aex) {
; //this is OK
}
}
public void testConstant_0() {
Vector elements = new Vector();
Term element = new Term(1, "2", 1);
elements.add(element);
String formula = getFormula(elements);
assertFormula("F(X)=2", formula);
}
/**
* Two Constants, one operator
*/
public void testConstant_1() {
Vector elements = new Vector();
Term element = new Term(1, "X", 1);
elements.add(element);
element = new Term(1, "3", 1, '+');
elements.add(element);
String formula = getFormula(elements);
assertFormula("F(X)=X+3", formula);
}
/**
* The operator is expected to be ignored
*/
public void testConstant_2() {
Vector elements = new Vector();
Term element = new Term(1, "2", 1, '*');
elements.add(element);
String formula = getFormula(elements);
assertFormula("F(X)=2", formula);
}
/**
* The placeholder is expected to be replaced by a positive integer
*/
public void testConstant_3() {
Vector elements = new Vector();
Term element = new Term(1, "+I", 1, '*');
elements.add(element);
String formula = getFormula(elements);
int i = Integer.parseInt(formula.substring(5));
assertTrue(i > 0);
}
/**
* The placeholder is expected to be replaced by a negative integer
*/
public void testConstant_4() {
Vector elements = new Vector();
Term element = new Term(1, "-I", 1, '*');
elements.add(element);
String formula = getFormula(elements);
int i = Integer.parseInt(formula.substring(5));
assertTrue(i<0);
}
/**
* The placeholder is expected to be replaced by a positive double
*/
public void testConstant_5() {
Vector elements = new Vector();
Term element = new Term(1, "+D", 1, '*');
elements.add(element);
String formula = getFormula(elements);
double d = Double.parseDouble(formula.substring(5));
assertTrue(d>0);
}
/**
* The placeholder is expected to be replaced by a negative double
*/
public void testConstant_6() {
Vector elements = new Vector();
Term element = new Term(1, "-D", 1, '*');
elements.add(element);
String formula = getFormula(elements);
double d = Double.parseDouble(formula.substring(5));
assertTrue(d<0);
}
/**
* One formula with depth 1
*/
public void testFormula_0() {
Vector elements = new Vector();
Term element = new Term(2, "sin", 1);
elements.add(element);
element = new Term(1, "X", 1);
elements.add(element);
String formula = getFormula(elements);
assertEquals("F(X)=sin(X)", formula);
}
/**
* Two Formulas, each depth 1
*/
public void testFormula_1() {
Vector elements = new Vector();
Term element = new Term(2, "sin", 1);
elements.add(element);
element = new Term(2, "cos", 1);
elements.add(element);
element = new Term(1, "X", 1);
elements.add(element);
String formula = getFormula(elements);
assertEquals("F(X)=sin(cos(X))", formula);
}
/**
* Two formulas, depth 1, one operator
* Two illegal operators are expected to be ignored
*/
public void testFormula_2() {
Vector elements = new Vector();
Term element = new Term(2, "sin", 1, '+');
elements.add(element);
element = new Term(1, "X", 1, '~');
elements.add(element);
element = new Term(2, "cos", 1, '*');
elements.add(element);
element = new Term(1, "27.5", 1);
elements.add(element);
String formula = getFormula(elements);
assertFormula("F(X)=sin(X)*cos(27.5)", formula);
}
/**
* Three formulas, first depth 2, one operator
*/
public void testFormula_3() {
Vector elements = new Vector();
Term element = new Term(2, "sin", 2);
elements.add(element);
element = new Term(2, "exp", 1);
elements.add(element);
element = new Term(1, "16.4", 1);
elements.add(element);
element = new Term(2, "cos", 1, '-');
elements.add(element);
element = new Term(1, "X", 1);
elements.add(element);
String formula = getFormula(elements);
assertFormula("F(X)=sin(exp(16.4)-cos(X))", formula);
}
/**
* Four terms, first depth 3, two operators
*/
public void testFormula_4() {
Vector elements = new Vector();
Term element = new Term(2, "sqrt", 3);
elements.add(element);
element = new Term(2, "exp", 1);
elements.add(element);
element = new Term(1, "X", 1);
elements.add(element);
element = new Term(2, "cos", 1, '*');
elements.add(element);
element = new Term(1, "33.7", 1);
elements.add(element);
element = new Term(1, "X", 1, '+');
elements.add(element);
String formula = getFormula(elements);
assertFormula("F(X)=sqrt(exp(X)*cos(33.7)+X)", formula);
}
/**
* Five terms, first depth 3, three operators (two block)
*/
public void testFormula_5() {
Vector elements = new Vector();
Term element = new Term(2, "sqrt", 3);
elements.add(element);
element = new Term(2, "exp", 1);
elements.add(element);
element = new Term(1, "X", 1);
elements.add(element);
element = new Term(2, "cos", 1, '*');
elements.add(element);
element = new Term(1, "33.7", 1);
elements.add(element);
element = new Term(1, "X", 1, '+');
elements.add(element);
element = new Term(2, "abs", 1, '-');
elements.add(element);
element = new Term(1, "Y", 1);
elements.add(element);
String formula = getFormula(elements);
assertFormula("F(X)=sqrt(exp(X)*cos(33.7)+X)-abs(Y)", formula);
}
/**
* three simple terms, two operators
*/
public void testFormula_6() {
Vector elements = new Vector();
Term element = new Term(1, "X", 1);
elements.add(element);
element = new Term(1, "Y", 1, '+');
elements.add(element);
element = new Term(1, "Z", 1, '+');
elements.add(element);
String formula = getFormula(elements);
assertFormula("F(X)=X+Y+Z", formula);
}
/**
* three terms, two operators
*/
public void testFormula_7() {
Vector elements = new Vector();
Term element = new Term(1, "7.4", 1);
elements.add(element);
element = new Term(2, "abs", 1, '+');
elements.add(element);
element = new Term(1, "X", 1);
elements.add(element);
element = new Term(1, "23.5", 1, '*');
elements.add(element);
String formula = getFormula(elements);
assertFormula("F(X)=7.4+abs(X)*23.5", formula);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -