Package uk.ac.cranfield.thesis.client

Source Code of uk.ac.cranfield.thesis.client.SolverTestCase

package uk.ac.cranfield.thesis.client;

import java.util.ArrayList;
import java.util.List;

import uk.ac.cranfield.thesis.client.service.solver.SolverServiceAsync;
import uk.ac.cranfield.thesis.shared.model.Equation;
import uk.ac.cranfield.thesis.shared.model.Solution;
import uk.ac.cranfield.thesis.shared.model.System;

import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.user.client.rpc.AsyncCallback;


public abstract class SolverTestCase extends GWTTestCase
{
   
    protected SolverServiceAsync solverService;
    protected double accuracy;
   
    @Override
    public String getModuleName()
    {
        return "uk.ac.cranfield.thesis.ThesisAE";
    }
   
    @Override
    public abstract void gwtSetUp();
   
    public void test1OrderMathPowerEquation()
    {
        delayTestFinish(500);
       
        Equation equation = new Equation("y'=y+x^2");
        equation.setFunctionVariable('y');
        equation.setIndependentVariable('x');
        equation.setOrder(1);
       
        List<Double> list = new ArrayList<Double>();
        list.add(0.0);
       
        equation.setInitValues(list);
       
        solverService.solve(equation, 0.1, 0.0, 1.0, new AsyncCallback<Solution>()
        {
           
            @Override
            public void onSuccess(Solution result)
            {
                assertTrue(11 <= result.size());
                assertEquals(-0.1 * 0.1 - 2 * 0.1 + 2 * Math.exp(0.1) - 2.0, result.getResult(1), accuracy);
                assertEquals(-0.5 * 0.5 - 2 * 0.5 + 2 * Math.exp(0.5) - 2.0, result.getResult(5), accuracy);
                assertEquals(-1.0 * 1.0 - 2 * 1.0 + 2 * Math.exp(1.0) - 2.0, result.getResult(10), accuracy);
                finishTest();
            }
           
            @Override
            public void onFailure(Throwable caught)
            {
                assertTrue(false);
                finishTest();
            }
        });
       
    }
   
    public void test1OrderMathSinCosEquation()
    {
        delayTestFinish(500);
       
        Equation equation = new Equation("y'=sin(x)+cos(x)");
        equation.setFunctionVariable('y');
        equation.setIndependentVariable('x');
        equation.setOrder(1);
       
        List<Double> list = new ArrayList<Double>();
        list.add(0.0);
       
        equation.setInitValues(list);
       
        solverService.solve(equation, 0.1, 0.0, 1.0, new AsyncCallback<Solution>()
        {
           
            @Override
            public void onSuccess(Solution result)
            {
                assertTrue(11 <= result.size());
                assertEquals(Math.sin(0.1) - Math.cos(0.1) + 1.0, result.getResult(1), accuracy);
                assertEquals(Math.sin(0.5) - Math.cos(0.5) + 1.0, result.getResult(5), accuracy);
                assertEquals(Math.sin(1.0) - Math.cos(1.0) + 1.0, result.getResult(10), accuracy);
                finishTest();
            }
           
            @Override
            public void onFailure(Throwable caught)
            {
                assertTrue(false);
                finishTest();
            }
        });
       
    }
   
    public void test1OrderEquation()
    {
        delayTestFinish(500);
       
        Equation equation = new Equation("y'=-2*y+x+4");
        equation.setFunctionVariable('y');
        equation.setIndependentVariable('x');
        equation.setOrder(1);
       
        List<Double> list = new ArrayList<Double>();
        list.add(1.0);
       
        equation.setInitValues(list);
       
        solverService.solve(equation, 0.01, 0.0, 0.2, new AsyncCallback<Solution>()
        {
           
            @Override
            public void onSuccess(Solution result)
            {
                assertTrue(21 <= result.size());
                assertEquals(1.3472, result.getResult(20), accuracy);
                finishTest();
               
            }
           
            @Override
            public void onFailure(Throwable caught)
            {
                assertTrue(false);
                finishTest();
               
            }
        });
       
    }
   
    public void test1OrderSystem()
    {
        delayTestFinish(500);
       
        Equation equation = new Equation("y'= y + x");
        equation.setIndependentVariable('x');
        equation.setFunctionVariable('y');
        equation.setOrder(1);
       
        Equation equation2 = new Equation("z'= z + y + x");
        equation2.setIndependentVariable('x');
        equation2.setFunctionVariable('z');
        equation2.setOrder(1);
       
        List<Double> list = new ArrayList<Double>();
        list.add(0.0);
       
        List<Double> list2 = new ArrayList<Double>();
        list2.add(0.0);
       
        equation.setInitValues(list);
        equation2.setInitValues(list2);
        List<Equation> equations = new ArrayList<Equation>(2);
        equations.add(equation);
        equations.add(equation2);
        System system = new System(equations);
       
        solverService.solveSystem(system, 0.1, 0.0, 1.0, new AsyncCallback<List<Solution>>()
        {
           
            @Override
            public void onSuccess(List<Solution> result)
            {
                assertEquals(2, result.size());
                assertEquals(-0.5 + Math.exp(0.5) - 1.0, result.get(0).getResult(5), accuracy);
                assertEquals(Math.exp(0.5) * (0.5 - 1.0) + 1, result.get(1).getResult(5), accuracy);
                finishTest();
            }
           
            @Override
            public void onFailure(Throwable caught)
            {
                assertTrue(false);
                finishTest();
            }
        });
       
    }
   
    public void test1OrderSystem2()
    {
       
        // TODO : transformthis test into parser test
       
        delayTestFinish(500);
       
        Equation equation = new Equation("y'= y + x");
        equation.setIndependentVariable('x');
        equation.setFunctionVariable('y');
        equation.setOrder(1);
       
        Equation equation2 = new Equation("z'= z+x+y");
        equation2.setIndependentVariable('x');
        equation2.setFunctionVariable('z');
        equation2.setOrder(1);
       
        List<Double> list = new ArrayList<Double>();
        list.add(0.0);
       
        List<Double> list2 = new ArrayList<Double>();
        list2.add(0.0);
       
        equation.setInitValues(list);
        equation2.setInitValues(list2);
        List<Equation> equations = new ArrayList<Equation>(2);
        equations.add(equation);
        equations.add(equation2);
        System system = new System(equations);
       
        solverService.solveSystem(system, 0.1, 0.0, 1.0, new AsyncCallback<List<Solution>>()
        {
           
            @Override
            public void onSuccess(List<Solution> result)
            {
                assertEquals(2, result.size());
                assertEquals(-0.5 + Math.exp(0.5) - 1.0, result.get(0).getResult(5), accuracy);
                assertEquals(Math.exp(0.5) * (0.5 - 1.0) + 1, result.get(1).getResult(5), accuracy);
                finishTest();
            }
           
            @Override
            public void onFailure(Throwable caught)
            {
                assertTrue(false);
                finishTest();
            }
        });
       
    }
   
    public void test1OrderSystem3()
    {
        delayTestFinish(500);
       
        Equation equation = new Equation("y'= y + x");
        equation.setIndependentVariable('x');
        equation.setFunctionVariable('y');
        equation.setOrder(1);
       
        Equation equation2 = new Equation("z'= z + y + x");
        equation2.setIndependentVariable('x');
        equation2.setFunctionVariable('z');
        equation2.setOrder(1);
       
        Equation equation3 = new Equation("u'= u + x + 4");
        equation3.setIndependentVariable('x');
        equation3.setFunctionVariable('u');
        equation3.setOrder(1);
       
       
        List<Double> list = new ArrayList<Double>();
        list.add(0.0);
       
        List<Double> list2 = new ArrayList<Double>();
        list2.add(0.0);
       
        List<Double> list3 = new ArrayList<Double>();
        list3.add(0.0);
       
        equation.setInitValues(list);
        equation2.setInitValues(list2);
        equation3.setInitValues(list3);
       
        List<Equation> equations = new ArrayList<Equation>(3);
       
        equations.add(equation);
        equations.add(equation2);
        equations.add(equation3);
       
        System system = new System(equations);
       
        solverService.solveSystem(system, 0.1, 0.0, 1.0, new AsyncCallback<List<Solution>>()
        {
           
            @Override
            public void onSuccess(List<Solution> result)
            {
                assertEquals(3, result.size());
                assertEquals(-0.5 + Math.exp(0.5) - 1.0, result.get(0).getResult(5), accuracy);
                assertEquals(Math.exp(0.5) * (0.5 - 1.0) + 1, result.get(1).getResult(5), accuracy);
                assertEquals(-0.5 + 5 * Math.exp(0.5) - 5.0, result.get(2).getResult(5), accuracy);
                finishTest();
            }
           
            @Override
            public void onFailure(Throwable caught)
            {
                assertTrue(false);
                finishTest();
            }
        });
       
    }
   
}
TOP

Related Classes of uk.ac.cranfield.thesis.client.SolverTestCase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.