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

Java tutorial

Introduction

Here is the source code for de.thkwalter.et.ortskurve.OrtskurveModellTest.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 static org.junit.Assert.assertTrue;

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

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

import de.thkwalter.koordinatensystem.Koordinatenachsen;

/**
 * Diese Klasse enthlt Tests fr die Klasse {@link OrtskurveModell}.
 *
 * @author Th. K. Walter
 * @version 1.0
 */
public class OrtskurveModellTest {
    /**
     * Ein Objekt der zu testenden Klasse {@link OrtskurveModell}.
     */
    private OrtskurveModell ortskurveModell;

    /**
     * Die im Test verwendeten Messpunkte
     */
    private Vector2D[] test_messpunkte;

    /**
     * Die im Test verwendete Ortskurve
     */
    private Ortskurve ortskurve;

    /**
     * Die im Test verwendete Ortskurve der 2d-Ausgleichsrechnung
     */
    private Ortskurve ortskurve2d;

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

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

        // Die im Test verwendeten Messpunkte werden erzeugt.
        this.test_messpunkte = new Vector2D[] { new Vector2D(2.0, 0.0), new Vector2D(1.0, 1.0) };

        // Der im Test verwendete Ortskurve wird erzeugt.
        this.ortskurve = new Ortskurve(new Vector2D(1.0, 0.0), 1.0);

        // Die im Test verwendete Ortskurve der 2d-Ausgleichsrechnung wird erzeugt.
        this.ortskurve2d = new Ortskurve(new Vector2D(1.0, -0.5), 1.0);
    }

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

    /**
     * Test fr die Methode {@link OrtskurveModell#getYPixelGrafik()}.
     * 
     * @throws NoSuchFieldException 
     * @throws SecurityException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testGetYPixelGrafik()
            throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
        // Die Anzahl der Pixel der Grafik in x-Richtung wird gelesen.
        Field yPixelGrafikFeld = OrtskurveModell.class.getDeclaredField("yPixelGrafik");
        yPixelGrafikFeld.setAccessible(true);
        int yPixelGrafik = yPixelGrafikFeld.getInt(this.ortskurveModell);

        // Es wird berprft, ob die korrekte Anzahl der Pixel der Grafik in x-Richtung zurckgegeben wird.
        assertEquals(yPixelGrafik, this.ortskurveModell.getyPixelGrafik());
    }

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

    /**
     * Test fr die Methode {@link OrtskurveModell#getXPixelGrafik()}.
     * 
     * @throws NoSuchFieldException 
     * @throws SecurityException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testGetXPixelGrafik()
            throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
        // Die Anzahl der Pixel der Grafik in x-Richtung wird gelesen.
        Field xPixelGrafikFeld = OrtskurveModell.class.getDeclaredField("xPixelGrafik");
        xPixelGrafikFeld.setAccessible(true);
        int xPixelGrafik = xPixelGrafikFeld.getInt(this.ortskurveModell);

        // Es wird berprft, ob die korrekte Anzahl der Pixel der Grafik in x-Richtung zurckgegeben wird.
        assertEquals(xPixelGrafik, this.ortskurveModell.getxPixelGrafik());
    }

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

    /**
     * Test fr die Methode {@link OrtskurveModell#getOrtskurve()}.
     * 
     * @throws NoSuchFieldException 
     * @throws SecurityException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testGetOrtskurve()
            throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
        // Die Ortskuve wird im Objekt der zu testenden Klasse OrtskurveModell gespeichert.
        Field ortskurveFeld = OrtskurveModell.class.getDeclaredField("ortskurve");
        ortskurveFeld.setAccessible(true);
        ortskurveFeld.set(this.ortskurveModell, this.ortskurve);

        // Es wird berprft, ob der Mittelpunkt der Ortskurve korrekt zurckgegeben wird. 
        assertEquals(this.ortskurve, this.ortskurveModell.getOrtskurve());
    }

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

    /**
     * Test fr die Methode {@link OrtskurveModell#setOrtskurve(Ortskurve)}.
     */
    @Test
    public void testSetOrtskurve() {
        // Die zu testende Methode wird ausgefhrt.
        this.ortskurveModell.setOrtskurve(this.ortskurve);

        // Es wird berprft, ob die Ortskurve korrekt im Objekt der zu testenden Klasse gespeichert worden ist.
        assertEquals(this.ortskurve, this.ortskurveModell.getOrtskurve());
    }

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

    /**
     * Test fr die Methode {@link OrtskurveModell#randpunkteZusammenstellen(Vector2D[])}.
     * 
     * @throws NoSuchMethodException 
     * @throws SecurityException 
     * @throws InvocationTargetException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testRandpunkteZusammenstellen1() throws SecurityException, NoSuchMethodException,
            IllegalArgumentException, IllegalAccessException, InvocationTargetException {
        // Das Modell wird initialisiert.
        this.ortskurveModell.setMesspunkte(this.test_messpunkte);
        this.ortskurveModell.setOrtskurve(this.ortskurve2d);
        this.ortskurveModell.setOptimalerAusgleichskreis(this.ortskurve);

        // Die zu testende Methode wird ausgefhrt.
        Method method = OrtskurveModell.class.getDeclaredMethod("randpunkteZusammenstellen", (Class[]) null);
        method.setAccessible(true);
        Vector2D[] randpunkte = (Vector2D[]) method.invoke(this.ortskurveModell, (Object[]) null);

        // Es wird berprft, ob die Anzahl der zusammengestellten Randpunkte korrekt ist.
        assertEquals(this.test_messpunkte.length + 8, randpunkte.length);

        // Es wird berprft, ob die Randpunkte korrekt zusammengestellt worden sind.
        assertEquals(this.test_messpunkte[0], randpunkte[0]);
        assertEquals(this.test_messpunkte[1], randpunkte[1]);
        assertEquals(new Vector2D(0, -0.5), randpunkte[2]);
        assertEquals(new Vector2D(2, -0.5), randpunkte[3]);
        assertEquals(new Vector2D(1, 0.5), randpunkte[4]);
        assertEquals(new Vector2D(1, -1.5), randpunkte[5]);
        assertEquals(new Vector2D(0, 0), randpunkte[6]);
        assertEquals(new Vector2D(2, 0), randpunkte[7]);
        assertEquals(new Vector2D(1, 1), randpunkte[8]);
        assertEquals(new Vector2D(1, -1), randpunkte[9]);
    }

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

    /**
     * Test fr die Methode {@link OrtskurveModell#randpunkteZusammenstellen(Vector2D[])}.
     * 
     * @throws NoSuchMethodException 
     * @throws SecurityException 
     * @throws InvocationTargetException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testRandpunkteZusammenstellen2() throws SecurityException, NoSuchMethodException,
            IllegalArgumentException, IllegalAccessException, InvocationTargetException {
        // Das Modell wird initialisiert.
        this.ortskurveModell.setMesspunkte(this.test_messpunkte);
        this.ortskurveModell.setOrtskurve(this.ortskurve);

        // Die zu testende Methode wird ausgefhrt.
        Method method = OrtskurveModell.class.getDeclaredMethod("randpunkteZusammenstellen", (Class[]) null);
        method.setAccessible(true);
        Vector2D[] randpunkte = (Vector2D[]) method.invoke(this.ortskurveModell, (Object[]) null);

        // Es wird berprft, ob die Anzahl der zusammengestellten Randpunkte korrekt ist.
        assertEquals(this.test_messpunkte.length + 4, randpunkte.length);

        // Es wird berprft, ob die Randpunkte korrekt zusammengestellt worden sind.
        assertEquals(this.test_messpunkte[0], randpunkte[0]);
        assertEquals(this.test_messpunkte[1], randpunkte[1]);
        assertEquals(new Vector2D(0, 0), randpunkte[2]);
        assertEquals(new Vector2D(2, 0), randpunkte[3]);
        assertEquals(new Vector2D(1, 1), randpunkte[4]);
        assertEquals(new Vector2D(1, -1), randpunkte[5]);
    }

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

    /**
     * Test fr die Methode {@link OrtskurveModell#grafikdatenBerechnen(Vector2D[])}.
     * 
     * @throws NoSuchFieldException 
     * @throws SecurityException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testGrafikdatenBerechnen1()
            throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
        // Die Messpunkte werden im Objekt der zu testenden Klasse gespeichert.
        this.ortskurveModell.setMesspunkte(this.test_messpunkte);

        // Die Ortskurve wird im Objekt der zu testenden Klasse gespeichert.
        this.ortskurveModell.setOrtskurve(this.ortskurve);

        // Die zu testende Methode wird ausgefhrt.
        this.ortskurveModell.grafikdatenBerechnen();

        // Die Grafikdarstellung der Ortskurve wird gelesen.
        Field ortskurveGrafikFeld = OrtskurveModell.class.getDeclaredField("ortskurveGrafik");
        ortskurveGrafikFeld.setAccessible(true);
        OrtskurveGrafik ortskurveGrafik = (OrtskurveGrafik) ortskurveGrafikFeld.get(this.ortskurveModell);

        // Es wird berprft, ob die Grafikdarstellung der Ortskurve korrekt berechnet worden ist.
        assertEquals(275.0, ortskurveGrafik.getMittelpunktInPixeln().getX(), 275.0 / 1000);
        assertEquals(137.5, ortskurveGrafik.getMittelpunktInPixeln().getY(), 137.5 / 1000);
        assertEquals(114.58, ortskurveGrafik.getRadiusInPixeln(), 114.58 / 1000);

        // Die Grafikdarstellung der Messpunkte wird gelesen.
        Field messpunkteGrafikFeld = OrtskurveModell.class.getDeclaredField("messpunkteGrafik");
        messpunkteGrafikFeld.setAccessible(true);
        MesspunkteGrafik messpunkteGrafik = (MesspunkteGrafik) messpunkteGrafikFeld.get(this.ortskurveModell);

        // Es wird berprft, ob die Grafikdarstellung der Messpunkte korrekt berechnet worden ist.
        assertEquals(389.6, messpunkteGrafik.getMesspunkteInPixeln()[0].getX(), 389.6 / 1000);
        assertEquals(137.5, messpunkteGrafik.getMesspunkteInPixeln()[0].getY(), 137.5 / 1000);
        assertEquals(275.0, messpunkteGrafik.getMesspunkteInPixeln()[1].getX(), 275.0 / 1000);
        assertEquals(22.92, messpunkteGrafik.getMesspunkteInPixeln()[1].getY(), 22.92 / 1000);

        // Die Koordinatenachsen wird gelesen.
        Field koordinatenachsenFeld = OrtskurveModell.class.getDeclaredField("koordinatenachsen");
        koordinatenachsenFeld.setAccessible(true);
        Koordinatenachsen koordinatenachsen = (Koordinatenachsen) koordinatenachsenFeld.get(this.ortskurveModell);

        // Es wird berprft, ob die Koordinatenachsen korrekt berechnet worden sind.
        assertEquals(137.5, koordinatenachsen.getStartPunktXAchse().getX(), 137.5 / 1000);
        assertEquals(137.5, koordinatenachsen.getStartPunktXAchse().getY(), 137.5 / 1000);
        assertEquals(412.5, koordinatenachsen.getEndPunktXAchse().getX(), 412.5 / 1000);
        assertEquals(137.5, koordinatenachsen.getEndPunktXAchse().getY(), 137.5 / 1000);
        assertEquals(160.4, koordinatenachsen.getStartPunktYAchse().getX(), 160.4 / 1000);
        assertEquals(275.0, koordinatenachsen.getStartPunktYAchse().getY(), 275.0 / 1000);
        assertEquals(160.4, koordinatenachsen.getEndPunktYAchse().getX(), 160.4 / 1000);
        assertEquals(0.0, koordinatenachsen.getEndPunktYAchse().getY(), 0.0);
    }

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

    /**
     * Test fr die Methode {@link OrtskurveModell#grafikdatenBerechnen(Vector2D[])}.
     * 
     * @throws NoSuchFieldException 
     * @throws SecurityException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testGrafikdatenBerechnen2()
            throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
        // Die Messpunkte werden im Objekt der zu testenden Klasse gespeichert.
        this.ortskurveModell.setMesspunkte(this.test_messpunkte);

        // Die Ortskurve wird im Objekt der zu testenden Klasse gespeichert.
        this.ortskurveModell.setOrtskurve(this.ortskurve2d);

        // Die Ortskurve der 2d-Ausgleichsrechnung wird im Objekt der zu testenden Klasse gespeichert.
        this.ortskurveModell.setOptimalerAusgleichskreis(this.ortskurve);

        // Die zu testende Methode wird ausgefhrt.
        this.ortskurveModell.grafikdatenBerechnen();

        // Die Grafikdarstellung des optimalen Ausgleichskreises wird gelesen.
        Field feld = OrtskurveModell.class.getDeclaredField("optimalerAusgleichskreisGrafik");
        feld.setAccessible(true);
        OrtskurveGrafik optimalerAusgleichskreisGrafik = (OrtskurveGrafik) feld.get(this.ortskurveModell);

        // Es wird berprft, ob die Grafikdarstellung des optimalen Ausgleichskreises korrekt berechnet worden ist.
        assertEquals(275.0, optimalerAusgleichskreisGrafik.getMittelpunktInPixeln().getX(), 275.0 / 1000);
        assertEquals(114.6, optimalerAusgleichskreisGrafik.getMittelpunktInPixeln().getY(), 114.6 / 1000);
        assertEquals(91.67, optimalerAusgleichskreisGrafik.getRadiusInPixeln(), 91.67 / 1000);

        // Die Grafikdarstellung der Ortskurve der 2d-Ausgleichsrechnung wird gelesen.
        feld = OrtskurveModell.class.getDeclaredField("ortskurveGrafik");
        feld.setAccessible(true);
        OrtskurveGrafik ortskurveGrafik = (OrtskurveGrafik) feld.get(this.ortskurveModell);

        // Es wird berprft, ob die Grafikdarstellung der Ortskurve der 2d-Ausgleichsrechnung korrekt berechnet worden ist.
        assertEquals(275.0, ortskurveGrafik.getMittelpunktInPixeln().getX(), 275.0 / 1000);
        assertEquals(160.4, ortskurveGrafik.getMittelpunktInPixeln().getY(), 160.4 / 1000);
        assertEquals(91.67, ortskurveGrafik.getRadiusInPixeln(), 91.67 / 1000);

        // Die Grafikdarstellung der Messpunkte wird gelesen.
        Field messpunkteGrafikFeld = OrtskurveModell.class.getDeclaredField("messpunkteGrafik");
        messpunkteGrafikFeld.setAccessible(true);
        MesspunkteGrafik messpunkteGrafik = (MesspunkteGrafik) messpunkteGrafikFeld.get(this.ortskurveModell);

        // Es wird berprft, ob die Grafikdarstellung der Messpunkte korrekt berechnet worden ist.
        assertEquals(366.7, messpunkteGrafik.getMesspunkteInPixeln()[0].getX(), 366.7 / 1000);
        assertEquals(114.6, messpunkteGrafik.getMesspunkteInPixeln()[0].getY(), 114.6 / 1000);
        assertEquals(275.0, messpunkteGrafik.getMesspunkteInPixeln()[1].getX(), 275.0 / 1000);
        assertEquals(22.92, messpunkteGrafik.getMesspunkteInPixeln()[1].getY(), 22.92 / 1000);

        // Die Koordinatenachsen wird gelesen.
        Field koordinatenachsenFeld = OrtskurveModell.class.getDeclaredField("koordinatenachsen");
        koordinatenachsenFeld.setAccessible(true);
        Koordinatenachsen koordinatenachsen = (Koordinatenachsen) koordinatenachsenFeld.get(this.ortskurveModell);

        // Es wird berprft, ob die Koordinatenachsen korrekt berechnet worden sind.
        assertEquals(165.0, koordinatenachsen.getStartPunktXAchse().getX(), 165.0 / 1000);
        assertEquals(114.6, koordinatenachsen.getStartPunktXAchse().getY(), 114.6 / 1000);
        assertEquals(385.0, koordinatenachsen.getEndPunktXAchse().getX(), 385.0 / 1000);
        assertEquals(114.6, koordinatenachsen.getEndPunktXAchse().getY(), 114.6 / 1000);
        assertEquals(183.3, koordinatenachsen.getStartPunktYAchse().getX(), 183.3 / 1000);
        assertEquals(275.0, koordinatenachsen.getStartPunktYAchse().getY(), 275.0 / 1000);
        assertEquals(183.3, koordinatenachsen.getEndPunktYAchse().getX(), 183.3 / 1000);
        assertEquals(0.0, koordinatenachsen.getEndPunktYAchse().getY(), 0.0);
    }

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

    /**
     * Test fr die Methode {@link OrtskurveModell#getMesspunkteGrafik()}.
     * 
     * @throws NoSuchFieldException 
     * @throws SecurityException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testGetMesspunkteGrafik()
            throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
        // Die Grafikdarstellung der Ortskurve wird initialisiert.
        this.ortskurveModell.setMesspunkte(this.test_messpunkte);
        this.ortskurveModell.setOrtskurve(ortskurve);
        this.ortskurveModell.grafikdatenBerechnen();

        // Die Grafikdarstellung der Messpunkte wird gelesen.
        Field messpunkteGrafikFeld = OrtskurveModell.class.getDeclaredField("messpunkteGrafik");
        messpunkteGrafikFeld.setAccessible(true);
        MesspunkteGrafik messpunkteGrafik = (MesspunkteGrafik) messpunkteGrafikFeld.get(this.ortskurveModell);

        // Es wird berprft, ob die Grafikdarstellung des Messpunkte korrekt zurckgegeben wird. 
        assertEquals(messpunkteGrafik, this.ortskurveModell.getMesspunkteGrafik());
    }

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

    /**
     * Test fr die Methode {@link OrtskurveModell#getOrtskurveGrafik()}.
     * 
     * @throws NoSuchFieldException 
     * @throws SecurityException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testGetOrtskurveGrafik()
            throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
        // Die Grafikdarstellung der Ortskurve wird initialisiert.
        this.ortskurveModell.setMesspunkte(this.test_messpunkte);
        this.ortskurveModell.setOrtskurve(ortskurve);
        this.ortskurveModell.grafikdatenBerechnen();

        // Die Grafikdarstellung der Ortskurve wird gelesen.
        Field ortskurveGrafikFeld = OrtskurveModell.class.getDeclaredField("ortskurveGrafik");
        ortskurveGrafikFeld.setAccessible(true);
        OrtskurveGrafik ortskurveGrafik = (OrtskurveGrafik) ortskurveGrafikFeld.get(this.ortskurveModell);

        // Es wird berprft, ob die Grafikdarstellung der Ortskurve korrekt zurckgegeben wird. 
        assertEquals(ortskurveGrafik, this.ortskurveModell.getOrtskurveGrafik());
    }

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

    /**
     * Test fr die Methode {@link OrtskurveModell#getOptimalerAusgleichskreisGrafik()}.
     * 
     * @throws NoSuchFieldException 
     * @throws SecurityException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testGetOptimalerAusgleichskreisGrafik()
            throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
        // Die Grafikdarstellung der Ortskurve wird initialisiert.
        this.ortskurveModell.setMesspunkte(this.test_messpunkte);
        this.ortskurveModell.setOrtskurve(this.ortskurve2d);
        this.ortskurveModell.setOptimalerAusgleichskreis(this.ortskurve);
        this.ortskurveModell.grafikdatenBerechnen();

        // Die Grafikdarstellung der Ortskurve wird gelesen.
        Field feld = OrtskurveModell.class.getDeclaredField("optimalerAusgleichskreisGrafik");
        feld.setAccessible(true);
        OrtskurveGrafik optimalerAusgleichskreisGrafik = (OrtskurveGrafik) feld.get(this.ortskurveModell);

        // Es wird berprft, ob die Grafikdarstellung der Ortskurve korrekt zurckgegeben wird. 
        assertEquals(optimalerAusgleichskreisGrafik, this.ortskurveModell.getOptimalerAusgleichskreisGrafik());
    }

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

    /**
     * Test fr die Methode {@link OrtskurveModell#getKoordinatenachsen()}.
     * 
     * @throws NoSuchFieldException 
     * @throws SecurityException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testGetKoordinatenachsen()
            throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
        // Die Grafikdarstellung der Ortskurve wird initialisiert.
        this.ortskurveModell.setMesspunkte(this.test_messpunkte);
        this.ortskurveModell.setOrtskurve(ortskurve);
        this.ortskurveModell.grafikdatenBerechnen();

        // Die Grafikdarstellung der Ortskurve wird gelesen.
        Field koordinatenachsenFeld = OrtskurveModell.class.getDeclaredField("koordinatenachsen");
        koordinatenachsenFeld.setAccessible(true);
        Koordinatenachsen koordinatenachsen = (Koordinatenachsen) koordinatenachsenFeld.get(this.ortskurveModell);

        // Es wird berprft, ob die Grafikdarstellung der Ortskurve korrekt zurckgegeben wird. 
        assertEquals(koordinatenachsen, this.ortskurveModell.getKoordinatenachsen());
    }

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

    /**
     * Test fr die Methode {@link OrtskurveModell#getOptimalerAusgleichskreis()}.
     * 
     * @throws NoSuchFieldException 
     * @throws SecurityException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testGetOptimalerAusgleichskreis()
            throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
        // Die Ortskurve der 2d-Berechnung wird im Testobjekt gespeichert.
        Field messpunkteFeld = OrtskurveModell.class.getDeclaredField("optimalerAusgleichskreis");
        messpunkteFeld.setAccessible(true);
        messpunkteFeld.set(this.ortskurveModell, this.ortskurve);

        // Die zu testende Methode wird aufgerufen.
        Ortskurve optimalerAusgleichskreis = this.ortskurveModell.getOptimalerAusgleichskreis();

        // Es wird berprft, ob die Messpunkte korrekt zurckgegeben werden. 
        assertEquals(this.ortskurve, optimalerAusgleichskreis);
    }

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

    /**
     * Test fr die Methode {@link OrtskurveModell#setOptimalerAusgleichskreis(Ortskurve)}.
     */
    @Test
    public void testSetOptimalerAusgleichskreis() {
        // Die zu testende Methode wird ausgefhrt.
        this.ortskurveModell.setOptimalerAusgleichskreis(this.ortskurve);

        // Es wird berprft, ob die Messpunkte korrekt im Objekt der zu testenden Klasse gespeichert worden sind.
        assertEquals(this.ortskurve, this.ortskurveModell.getOptimalerAusgleichskreis());
    }

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

    /**
     * Test fr die Methode {@link OrtskurveModell#getMesspunkte()}.
     * 
     * @throws NoSuchFieldException 
     * @throws SecurityException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testGetMesspunkte()
            throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
        // Die Messpunkte werden im Objekt der zu testenden Klasse gespeichert.
        Field messpunkteFeld = OrtskurveModell.class.getDeclaredField("messpunkte");
        messpunkteFeld.setAccessible(true);
        messpunkteFeld.set(this.ortskurveModell, this.test_messpunkte);

        // Die zu testende Methode wird aufgerufen.
        Vector2D[] messpunkte = this.ortskurveModell.getMesspunkte();

        // Es wird berprft, ob die Messpunkte korrekt zurckgegeben werden. 
        assertEquals(this.test_messpunkte.length, messpunkte.length);
        for (int i = 0; i < this.test_messpunkte.length; i++) {
            assertEquals(this.test_messpunkte[i], messpunkte[i]);
        }
    }

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

    /**
     * Test fr die Methode {@link OrtskurveModell#setMesspunkte(Vector2D[])}.
     */
    @Test
    public void testSetMesspunkte() {
        // Die zu testende Methode wird ausgefhrt.
        this.ortskurveModell.setMesspunkte(this.test_messpunkte);

        // Es wird berprft, ob die Messpunkte korrekt im Objekt der zu testenden Klasse gespeichert worden sind.
        Vector2D[] messpunkte = this.ortskurveModell.getMesspunkte();
        assertEquals(this.test_messpunkte.length, messpunkte.length);
        for (int i = 0; i < this.test_messpunkte.length; i++) {
            assertEquals(this.test_messpunkte[i], messpunkte[i]);
        }
    }

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

    /**
     * Test der Methode {@link OrtskurveModell#randpunkteOrtskurveZusammenstellen(Ortskurve)}.
     * 
     * @throws SecurityException 
     * @throws NoSuchMethodException 
     * @throws InvocationTargetException 
     * @throws IllegalArgumentException 
     * @throws IllegalAccessException 
     */
    @Test
    public void testRandpunkteOrtskurveZusammenstellen() throws NoSuchMethodException, SecurityException,
            IllegalAccessException, IllegalArgumentException, InvocationTargetException {
        // Die zu testende Methode wird ausgefhrt.
        Method methode = OrtskurveModell.class.getDeclaredMethod("randpunkteOrtskurveZusammenstellen",
                Ortskurve.class);
        methode.setAccessible(true);
        @SuppressWarnings("unchecked")
        ArrayList<Vector2D> randpunkteOrtskurve = (ArrayList<Vector2D>) methode.invoke(this.ortskurveModell,
                this.ortskurve);

        // Es wird berprft, ob die Liste die korrekten Randpunkte enthlt.
        assertEquals(4, randpunkteOrtskurve.size());
        assertTrue(randpunkteOrtskurve.contains(new Vector2D(0, 0)));
        assertTrue(randpunkteOrtskurve.contains(new Vector2D(2, 0)));
        assertTrue(randpunkteOrtskurve.contains(new Vector2D(1, 1)));
        assertTrue(randpunkteOrtskurve.contains(new Vector2D(1, -1)));
    }
}