de.thkwalter.et.ortskurve.OrtskurveControllerTest.java Source code

Java tutorial

Introduction

Here is the source code for de.thkwalter.et.ortskurve.OrtskurveControllerTest.java

Source

/**
 *  Copyright 2013 Th. K. Walter, Nrnberg.
 *
 *  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 de.thkwalter.et.ortskurve;

import static org.junit.Assert.assertEquals;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import org.apache.commons.math3.geometry.euclidean.twod.Vector2D;
import org.junit.Before;
import org.junit.Test;

import de.thkwalter.jsf.ApplicationRuntimeException;

/**
 * Diese Klasse enthlt Tests fr die Klasse {@link OrtskurveController}.
 *
 * @author Th. K. Walter
 */
public class OrtskurveControllerTest {
    /**
     * Ein Objekt der zu testenden Klasse.
     */
    private OrtskurveController ortskurveController;

    /**
     * Das im Test verwendete Datenmodell der Ortskurve.
     */
    private OrtskurveModell testOrtskurveModell;

    // =====================================================================================================================
    // =====================================================================================================================

    /**
     * Diese Methode initialisiert die Tests.
     * 
     * @throws java.lang.Exception
     */
    @Before
    public void setUp() throws Exception {
        // Das Objekt der zu testenden Klasse wird erzeugt.
        this.ortskurveController = new OrtskurveController();

        // Das im Test verwendete Datenmodell der Ortskurve wird erzeugt und im Objekt der zu testenden Klasse gespeichert.
        this.testOrtskurveModell = new OrtskurveModell();
        Field ortskurveModellFeld = OrtskurveController.class.getDeclaredField("ortskurveModell");
        ortskurveModellFeld.setAccessible(true);
        ortskurveModellFeld.set(this.ortskurveController, this.testOrtskurveModell);
    }

    // =====================================================================================================================
    // =====================================================================================================================

    /**
     * Test fr die Methode {@link OrtskurveController#getOrtskurveModell()}.
     * 
     * @throws SecurityException 
     * @throws NoSuchFieldException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testGetOrtskurveModell()
            throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
        // Das Datenmodell der Ortskurvenberechnung wird im Controller gespeichert.
        Field ortskurveModellFeld = OrtskurveController.class.getDeclaredField("ortskurveModell");
        ortskurveModellFeld.setAccessible(true);
        ortskurveModellFeld.set(this.ortskurveController, this.testOrtskurveModell);

        // Die zu testende Methode wird aufgerufen.
        OrtskurveModell ortskurveModell = this.ortskurveController.getOrtskurveModell();

        // Es wird berprft, ob das Datenmodell der Ortskurvenberechnung korrekt zurckgegeben worden ist.
        assertEquals(this.testOrtskurveModell, ortskurveModell);
    }

    // =====================================================================================================================
    // =====================================================================================================================

    /**
     * Test fr die Methode {@link OrtskurveController#setOrtskurveModell(OrtskurveModell)}.
     */
    @Test
    public void testSetOrtskurveModell() {
        // Die zu testende Methode wird aufgerufen.
        this.ortskurveController.setOrtskurveModell(this.testOrtskurveModell);

        // Es wird berprft, ob das Datenmodell der Ortskurvenberechnung korrekt gespeichert worden ist.
        assertEquals(this.testOrtskurveModell, this.ortskurveController.getOrtskurveModell());
    }

    // =====================================================================================================================
    // =====================================================================================================================

    /**
     * Test fr die Methode {@link OrtskurveController#messpunkteValidieren(Vector2D[])}.
     * 
     * @throws Throwable 
     */
    @Test(expected = ApplicationRuntimeException.class)
    public void testMesspunkteValidieren1() throws Throwable {
        // Die in diesem Test verwendeten Messpunkte werden erzeugt.
        Vector2D[] testMesspunkte = new Vector2D[] { new Vector2D(1.0, 0.0), new Vector2D(3.0, 0.0),
                new Vector2D(1, 0) };

        try {
            // Die zu testende Methode wird aufgerufen.
            Method methode = OrtskurveController.class.getDeclaredMethod("messpunkteValidieren", Vector2D[].class);
            methode.setAccessible(true);
            methode.invoke(this.ortskurveController, (Object) testMesspunkte);
        }

        // Die InvocationTargetException wird gefangen und die ursprngliche Ausnahme weitergeworfen.
        catch (InvocationTargetException invocationTargetException) {
            throw invocationTargetException.getCause();
        }
    }

    // =====================================================================================================================
    // =====================================================================================================================

    /**
     * Test fr die Methode {@link OrtskurveController#messpunkteValidieren(Vector2D[])}.
     * 
     * @throws Throwable 
     */
    @Test
    public void testMesspunkteValidieren2() throws Throwable {
        // Die in diesem Test verwendeten Messpunkte werden erzeugt.
        Vector2D[] testMesspunkte = new Vector2D[] { new Vector2D(1.0, 0.0), new Vector2D(3.0, 0.0),
                new Vector2D(2, 1) };

        // Die zu testende Methode wird aufgerufen.
        Method methode = OrtskurveController.class.getDeclaredMethod("messpunkteValidieren", Vector2D[].class);
        methode.setAccessible(true);
        methode.invoke(this.ortskurveController, (Object) testMesspunkte);
    }

    // =====================================================================================================================
    // =====================================================================================================================

    /**
     * Test fr die Methode {@link OrtskurveController#ortskurveBestimmen(Vector2D[], double[])}.
     * @throws SecurityException 
     * @throws NoSuchMethodException 
     * @throws InvocationTargetException 
     * @throws IllegalArgumentException 
     * @throws IllegalAccessException 
     */
    @Test
    public void testOrtskurveBestimmen() throws NoSuchMethodException, SecurityException, IllegalAccessException,
            IllegalArgumentException, InvocationTargetException {
        // Die in diesem Test verwendeten Messpunkte werden deklariert.
        Vector2D[] testMesspunkte = new Vector2D[] { new Vector2D(2.0, 0.0), new Vector2D(3.0, 1.0),
                new Vector2D(3.0, -1.0) };

        // Der in diesem Test verwendete Startpunkt wird deklariert.
        double[] testStartpunkt = new double[] { 3.0, 0.0, 1.0 };

        // Die zu testenden Methode wird aufgerufen.
        Method methode = OrtskurveController.class.getDeclaredMethod("ortskurveBestimmen", Vector2D[].class,
                double[].class);
        methode.setAccessible(true);
        Ortskurve ortskurve = (Ortskurve) methode.invoke(this.ortskurveController, testMesspunkte, testStartpunkt);

        // Es wird berprft, ob der Startpunkt als Ortskurve zurckgegeben worden ist.
        assertEquals(testStartpunkt[0], ortskurve.getMittelpunktOrtskurve().getX(), 0.0);
        assertEquals(testStartpunkt[1], ortskurve.getMittelpunktOrtskurve().getY(), 0.0);
        assertEquals(testStartpunkt[2], ortskurve.getRadiusOrtskurve(), 0.0);
    }
}