⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 functionbuildertest.java

📁 用java语言写的遗传算法库
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -