Java tutorial
/** * 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.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import org.apache.commons.math3.geometry.euclidean.twod.Vector2D; import org.junit.Test; import de.thkwalter.jsf.ApplicationRuntimeException; /** * Diese Klasse enthlt Tests fr die Klasse {@link Startpunktbestimmung}. * * @author Th. K. Walter */ public class StartpunktbestimmungTest { /** * Test fr den Konstruktor {@link Startpunktbestimmung#Startpunktbestimmung(Vector2D[])}. * * @throws ApplicationRuntimeException */ @Test(expected = ApplicationRuntimeException.class) public void testStartpunktbestimmung1() throws ApplicationRuntimeException { // Es wird berprft, ob der Konstruktor eine Ausnahme wirft, wenn null bergeben wird. Startpunktbestimmung.startpunktBerechnen(null); } // ===================================================================================================================== // ===================================================================================================================== /** * Test fr den Konstruktor {@link Startpunktbestimmung#Startpunktbestimmung(Vector2D[])}. * * @throws ApplicationRuntimeException */ @Test(expected = ApplicationRuntimeException.class) public void testStartpunktbestimmung2() throws ApplicationRuntimeException { // Es wird berprft, ob der Konstruktor eine Ausnahme wirft, wenn weniger als drei Messpunkte bergeben werden. Startpunktbestimmung.startpunktBerechnen(new Vector2D[] { new Vector2D(0.0, 0.0), new Vector2D(1.0, 1.0) }); } // ===================================================================================================================== // ===================================================================================================================== /** * Test fr den Konstruktor {@link Startpunktbestimmung#Startpunktbestimmung(Vector2D[])}. */ @Test public void testStartpunktbestimmung3() { // Die Startpunktbestimmung wird mit genau drei Messpunkten durchgefhrt. double[] startparameter = Startpunktbestimmung.startpunktBerechnen( new Vector2D[] { new Vector2D(0.0, 0.0), new Vector2D(2.0, 2.0), new Vector2D(4.0, 0.0) }); // Es wird berprft, ob der Startpunkt korrekt bestimmt worden ist. assertEquals(2.0, startparameter[0], 2.0 / 1000); assertEquals(0.0, startparameter[1], 2.0 / 1000); assertEquals(2.0, startparameter[2], 2.0 / 1000); } // ===================================================================================================================== // ===================================================================================================================== /** * Test fr den Konstruktor {@link Startpunktbestimmung#Startpunktbestimmung(Vector2D[])}. */ @Test public void testStartpunktbestimmung4() { // Die Startpunktbestimmung wird mit genau drei Messpunkten durchgefhrt. double[] startparameter = Startpunktbestimmung.startpunktBerechnen(new Vector2D[] { new Vector2D(0.0, 0.0), new Vector2D(2.0, 2.0), new Vector2D(4.0, 0.0), new Vector2D(1.0, -1.0) }); // Es wird berprft, ob der Startpunkt korrekt bestimmt worden ist. assertEquals(2.0, startparameter[0], 2.0 / 1000); assertEquals(0.0, startparameter[1], 2.0 / 1000); assertEquals(2.0, startparameter[2], 2.0 / 1000); } // ===================================================================================================================== // ===================================================================================================================== /** * Test fr die Methode {@link Startpunktbestimmung#startpunktBestimmen(Vector2D[])}. * * @throws ApplicationRuntimeException * @throws NoSuchMethodException * @throws SecurityException * @throws InvocationTargetException * @throws IllegalAccessException * @throws IllegalArgumentException */ @Test public void testStartpunktBestimmen1() throws ApplicationRuntimeException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException { Vector2D[] messpunkteZurStartpunktbestimmung = new Vector2D[] { new Vector2D(0.0, 0.0), new Vector2D(2.0, 2.0), new Vector2D(4.0, 0.0) }; // Die zu testende Methode wird aufgerufen Method methode = Startpunktbestimmung.class.getDeclaredMethod("startpunktBestimmen", Vector2D[].class); methode.setAccessible(true); double[] startpunkt = (double[]) methode.invoke(Startpunktbestimmung.class, (Object) messpunkteZurStartpunktbestimmung); assertEquals(2.0, startpunkt[0], 2.0 / 1000); assertEquals(0.0, startpunkt[1], 2.0 / 1000); assertEquals(2.0, startpunkt[2], 2.0 / 1000); } // ===================================================================================================================== // ===================================================================================================================== /** * Test fr die Methode {@link Startpunktbestimmung#startpunktBestimmen()}. * * @throws ApplicationRuntimeException * @throws NoSuchMethodException * @throws SecurityException * @throws InvocationTargetException * @throws IllegalAccessException * @throws IllegalArgumentException */ @Test(expected = ApplicationRuntimeException.class) public void testStartpunktBestimmen2() throws Throwable { Vector2D[] messpunkteZurStartpunktbestimmung = new Vector2D[] { new Vector2D(1.0, 0.0), new Vector2D(2.0, 0.0), new Vector2D(3.0, 0.0) }; // Die zu testende Methode wird aufgerufen Method methode = Startpunktbestimmung.class.getDeclaredMethod("startpunktBestimmen", Vector2D[].class); methode.setAccessible(true); try { methode.invoke(Startpunktbestimmung.class, (Object) messpunkteZurStartpunktbestimmung); } catch (InvocationTargetException invocationTargetException) { throw invocationTargetException.getCause(); } } // ===================================================================================================================== // ===================================================================================================================== /** * Test fr die Methode {@link Startpunktbestimmung#messpunkteAuswaehlen(Vector2D[])}. * * @throws NoSuchMethodException * @throws SecurityException * @throws InvocationTargetException * @throws IllegalAccessException * @throws IllegalArgumentException * @throws NoSuchFieldException */ @Test public void testMesspunkteAuswaehlen1() throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, NoSuchFieldException { // Die Messpunkte, die fr den Test verwendet werden. Vector2D[] messpunkte = new Vector2D[] { new Vector2D(1.0, 1.0), new Vector2D(1.0, -1.0), new Vector2D(0.0, -0.1), new Vector2D(0.0, -0.2) }; // Die zu testende Methode wird aufgerufen Method methode = Startpunktbestimmung.class.getDeclaredMethod("messpunkteAuswaehlen", Vector2D[].class); methode.setAccessible(true); Vector2D[] messpunkteZurStartpunktbestimmung = (Vector2D[]) methode.invoke(Startpunktbestimmung.class, (Object) messpunkte); // Es wird geprft, ob die korrekten Messpunkt gefunden worden sind. assertEquals(messpunkte[0], messpunkteZurStartpunktbestimmung[0]); assertEquals(messpunkte[1], messpunkteZurStartpunktbestimmung[1]); assertEquals(messpunkte[2], messpunkteZurStartpunktbestimmung[2]); } // ===================================================================================================================== // ===================================================================================================================== /** * Test fr die Methode {@link Startpunktbestimmung#messpunkteAuswaehlen(Vector2D[])}. * * @throws NoSuchMethodException * @throws SecurityException * @throws InvocationTargetException * @throws IllegalAccessException * @throws IllegalArgumentException * @throws NoSuchFieldException */ @Test public void testMesspunkteAuswaehlen2() throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, NoSuchFieldException { // Die Messpunkte, die fr den Test verwendet werden. Vector2D[] messpunkte = new Vector2D[] { new Vector2D(1.1, 1.0), new Vector2D(0.0, 0.0), new Vector2D(2.0, 0.0), new Vector2D(1.2, 1.0) }; // Die zu testende Methode wird aufgerufen Method methode = Startpunktbestimmung.class.getDeclaredMethod("messpunkteAuswaehlen", Vector2D[].class); methode.setAccessible(true); Vector2D[] messpunkteZurStartpunktbestimmung = (Vector2D[]) methode.invoke(Startpunktbestimmung.class, (Object) messpunkte); // Es wird geprft, ob die korrekten Messpunkt gefunden worden sind. assertEquals(messpunkte[2], messpunkteZurStartpunktbestimmung[0]); assertEquals(messpunkte[1], messpunkteZurStartpunktbestimmung[1]); assertEquals(messpunkte[0], messpunkteZurStartpunktbestimmung[2]); } // ===================================================================================================================== // ===================================================================================================================== /** * Test fr die Methode {@link Startpunktbestimmung#mittlerenMesspunktBestimmen(ArrayList, double)}. * * @throws NoSuchMethodException * @throws SecurityException * @throws InvocationTargetException * @throws IllegalAccessException * @throws IllegalArgumentException * @throws NoSuchFieldException */ @Test public void testMittlerenMesspunktBestimmen1() throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, NoSuchFieldException { // Die Testdaten werden erzeugt. Vector2D messpunkt = new Vector2D(0.0, 0.1); ArrayList<YKomponenteMesspunkt> yListe = new ArrayList<YKomponenteMesspunkt>(); yListe.add(new YKomponenteMesspunkt(new Vector2D(1.0, 1.0))); yListe.add(new YKomponenteMesspunkt(new Vector2D(1.0, -1.0))); yListe.add(new YKomponenteMesspunkt(messpunkt)); // Die zu testende Methode wird aufgerufen Method methode = Startpunktbestimmung.class.getDeclaredMethod("mittlerenMesspunktBestimmen", ArrayList.class, double.class); methode.setAccessible(true); Vector2D mittlererMesspunkt = (Vector2D) methode.invoke(Startpunktbestimmung.class, yListe, 0.0); // Es wird geprft, ob der korrekte Messpunkt gefunden worden ist. assertEquals(messpunkt, mittlererMesspunkt); } // ===================================================================================================================== // ===================================================================================================================== /** * Test fr die Methode {@link Startpunktbestimmung#mittlerenMesspunktBestimmen(ArrayList, double)}. * * @throws NoSuchMethodException * @throws SecurityException * @throws InvocationTargetException * @throws IllegalAccessException * @throws IllegalArgumentException * @throws NoSuchFieldException */ @Test public void testMittlerenMesspunktBestimmen2() throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, NoSuchFieldException { // Die Testdaten werden erzeugt. Vector2D messpunkt = new Vector2D(1.9, 0.0); ArrayList<XKomponenteMesspunkt> xListe = new ArrayList<XKomponenteMesspunkt>(); xListe.add(new XKomponenteMesspunkt(new Vector2D(1.0, 0.0))); xListe.add(new XKomponenteMesspunkt(new Vector2D(3.0, 0.0))); xListe.add(new XKomponenteMesspunkt(messpunkt)); // Die zu testende Methode wird aufgerufen Method methode = Startpunktbestimmung.class.getDeclaredMethod("mittlerenMesspunktBestimmen", ArrayList.class, double.class); methode.setAccessible(true); Vector2D mittlererMesspunkt = (Vector2D) methode.invoke(Startpunktbestimmung.class, xListe, 2.0); // Es wird geprft, ob der korrekte Messpunkt gefunden worden ist. assertEquals(messpunkt, mittlererMesspunkt); } // ===================================================================================================================== // ===================================================================================================================== /** * Test fr die Methode {@link Startpunktbestimmung#maxMesspunktBestimmen(ArrayList)}. * * @throws NoSuchMethodException * @throws SecurityException * @throws InvocationTargetException * @throws IllegalAccessException * @throws IllegalArgumentException */ @Test public void testMaxMesspunktBestimmen1() throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException { // Die Testdaten werden erzeugt. Vector2D messpunkt1 = new Vector2D(1.0, 0.0); Vector2D messpunkt2 = new Vector2D(2.0, 0.0); ArrayList<XKomponenteMesspunkt> xListe = new ArrayList<XKomponenteMesspunkt>(); xListe.add(new XKomponenteMesspunkt(messpunkt1)); xListe.add(new XKomponenteMesspunkt(messpunkt2)); // Die zu testende Methode wird aufgerufen Method methode = Startpunktbestimmung.class.getDeclaredMethod("maxMesspunktBestimmen", ArrayList.class); methode.setAccessible(true); Vector2D maxXMesspunkt = (Vector2D) methode.invoke(Startpunktbestimmung.class, xListe); // Es wird berprft, ob der korrekte Messpunkt zurckgegeben wird. assertEquals(messpunkt2, maxXMesspunkt); // Es wird berprft, ob der korrekte Messpunkt aus der Liste entfernt worden ist. assertEquals(1, xListe.size()); assertEquals(messpunkt1, xListe.get(0).getMesspunkt()); } // ===================================================================================================================== // ===================================================================================================================== /** * Test fr die Methode {@link Startpunktbestimmung#maxMesspunktBestimmen(ArrayList)}. * * @throws NoSuchMethodException * @throws SecurityException * @throws InvocationTargetException * @throws IllegalAccessException * @throws IllegalArgumentException */ @Test public void testMaxMesspunktBestimmen2() throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException { // Die Testdaten werden erzeugt. Vector2D messpunkt1 = new Vector2D(0.0, 2.0); Vector2D messpunkt2 = new Vector2D(0.0, 1.0); ArrayList<YKomponenteMesspunkt> yListe = new ArrayList<YKomponenteMesspunkt>(); yListe.add(new YKomponenteMesspunkt(messpunkt1)); yListe.add(new YKomponenteMesspunkt(messpunkt2)); // Die zu testende Methode wird aufgerufen Method methode = Startpunktbestimmung.class.getDeclaredMethod("maxMesspunktBestimmen", ArrayList.class); methode.setAccessible(true); Vector2D maxYMesspunkt = (Vector2D) methode.invoke(Startpunktbestimmung.class, yListe); // Es wird berprft, ob der korrekte Messpunkt zurckgegeben wird. assertEquals(messpunkt1, maxYMesspunkt); // Es wird berprft, ob der korrekte Messpunkt aus der Liste entfernt worden ist. assertEquals(1, yListe.size()); assertEquals(messpunkt2, yListe.get(0).getMesspunkt()); } // ===================================================================================================================== // ===================================================================================================================== /** * Test fr die Methode {@link Startpunktbestimmung#minMesspunktBestimmen(ArrayList)}. * * @throws NoSuchMethodException * @throws SecurityException * @throws InvocationTargetException * @throws IllegalAccessException * @throws IllegalArgumentException */ @Test public void testMinMesspunktBestimmen1() throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException { // Die Testdaten werden erzeugt. Vector2D messpunkt1 = new Vector2D(1.0, 0.0); Vector2D messpunkt2 = new Vector2D(2.0, 0.0); ArrayList<XKomponenteMesspunkt> xListe = new ArrayList<XKomponenteMesspunkt>(); xListe.add(new XKomponenteMesspunkt(messpunkt1)); xListe.add(new XKomponenteMesspunkt(messpunkt2)); // Die zu testende Methode wird aufgerufen Method methode = Startpunktbestimmung.class.getDeclaredMethod("minMesspunktBestimmen", ArrayList.class); methode.setAccessible(true); Vector2D minXMesspunkt = (Vector2D) methode.invoke(Startpunktbestimmung.class, xListe); // Es wird berprft, ob der korrekte Messpunkt zurckgegeben wird. assertEquals(messpunkt1, minXMesspunkt); // Es wird berprft, ob der korrekte Messpunkt aus der Liste entfernt worden ist. assertEquals(1, xListe.size()); assertEquals(messpunkt2, xListe.get(0).getMesspunkt()); } // ===================================================================================================================== // ===================================================================================================================== /** * Test fr die Methode {@link Startpunktbestimmung#minMesspunktBestimmen(ArrayList)}. * * @throws NoSuchMethodException * @throws SecurityException * @throws InvocationTargetException * @throws IllegalAccessException * @throws IllegalArgumentException */ @Test public void testMinMesspunktBestimmen2() throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException { // Die Testdaten werden erzeugt. Vector2D messpunkt1 = new Vector2D(0.0, 2.0); Vector2D messpunkt2 = new Vector2D(0.0, 1.0); ArrayList<YKomponenteMesspunkt> yListe = new ArrayList<YKomponenteMesspunkt>(); yListe.add(new YKomponenteMesspunkt(messpunkt1)); yListe.add(new YKomponenteMesspunkt(messpunkt2)); // Die zu testende Methode wird aufgerufen Method methode = Startpunktbestimmung.class.getDeclaredMethod("minMesspunktBestimmen", ArrayList.class); methode.setAccessible(true); Vector2D minYMesspunkt = (Vector2D) methode.invoke(Startpunktbestimmung.class, yListe); // Es wird berprft, ob der korrekte Messpunkt zurckgegeben wird. assertEquals(messpunkt2, minYMesspunkt); // Es wird berprft, ob der korrekte Messpunkt aus der Liste entfernt worden ist. assertEquals(1, yListe.size()); assertEquals(messpunkt1, yListe.get(0).getMesspunkt()); } }