de.thkwalter.et.betriebspunkt.BetriebspunktTest.java Source code

Java tutorial

Introduction

Here is the source code for de.thkwalter.et.betriebspunkt.BetriebspunktTest.java

Source

/**
 *  Copyright 2014 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.betriebspunkt;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

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

import org.apache.commons.math3.complex.Complex;
import org.junit.Before;
import org.junit.Test;

/**
 * Diese Klasse enthlt Tests fr die Klasse {@link Betriebspunkt}.
 * 
 * @author Th. K. Walter
 */
public class BetriebspunktTest {
    /**
     * Ein Prfling der Klasse {@link Betriebspunkt}.
     */
    private Betriebspunkt betriebspunkt;

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

    /**
     * Diese Methode initialisiert die Tests.
     * 
     * @throws java.lang.Exception
     */
    @Before
    public void setUp() throws Exception {
        // Der Prfling wird erzeugt.
        this.betriebspunkt = new Betriebspunkt();
    }

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

    /**
     * Test des Konstruktors {@link Betriebspunkt#Betriebspunkt()}, der alle reellwertigen Gren mit {@link Double.NaN}
     * initialisiert.
     * 
     * @throws SecurityException 
     * @throws NoSuchFieldException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testBetriebspunkt_NaN()
            throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
        // Es wird berprft, ob der effektive Leiterstrom (in A) korrekt initialisiert worden ist.
        assertTrue(Double.isNaN(this.betriebspunkt.getI_L()));

        // Es wird berprft, ob die effektive Leiter-Leiterspannung (in A) korrekt initialisiert worden ist.
        assertTrue(Double.isNaN(this.betriebspunkt.getU_LL()));

        // Es wird berprft, ob die elektrische Leistung (in kW) korrekt initialisiert worden ist.
        assertTrue(Double.isNaN(this.betriebspunkt.getP_el()));

        // Es wird berprft, ob die Scheinleistung (in kVA) korrekt initialisiert worden ist.
        assertTrue(Double.isNaN(this.betriebspunkt.getP_s()));

        // Es wird berprft, ob die Phasenverschiebung zwischen Strangstrom und Strangspannung korrekt initialisiert worden 
        // ist.
        assertTrue(Double.isNaN(this.betriebspunkt.getCosPhi()));

        // Es wird berprft, ob der Schaltungstyp den Wert null besitzt.
        assertNull(this.betriebspunkt.getSchaltungstyp());

        // Es wird berprft, ob der komplexe Zeiger des Strangstroms (in A) den Wert null besitzt.
        assertTrue(Double.isNaN(this.betriebspunkt.getZ_i_s().getReal()));
        assertTrue(Double.isNaN(this.betriebspunkt.getZ_i_s().getImaginary()));
    }

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

    /**
     * Test des Konstruktors {@link Betriebspunkt#Betriebspunkt(double, double, double, Schaltungstyp)}, der auf Basis der 
     * Eingabewerte alle fehlenden Gren berechnet.
     */
    @Test
    public void testBetriebspunkt_rechnen() {
        // Der in diesem Test verwendete Prfling wird erzeugt.
        Betriebspunkt testBetriebspunkt = new Betriebspunkt(3.2546, 396.98, 1.9259, Schaltungstyp.STERN);

        // Es wird berprft, ob der effektive Leiterstrom (in A) korrekt initialisiert worden ist.
        assertEquals(3.2546, testBetriebspunkt.getI_L(), 0.0);

        // Es wird berprft, ob die effektive Leiter-Leiterspannung (in A) korrekt initialisiert worden ist.
        assertEquals(396.98, testBetriebspunkt.getU_LL(), 0.0);

        // Es wird berprft, ob die elektrische Leistung (in kW) korrekt initialisiert worden ist.
        assertEquals(1.9259, testBetriebspunkt.getP_el(), 0.0);

        // Es wird berprft, ob der Schaltungstyp korrekt initialisiert worden ist.
        assertEquals(Schaltungstyp.STERN, testBetriebspunkt.getSchaltungstyp());

        // Es wird berprft, ob die Scheinleistung (in kVA) korrekt berechnet worden ist.
        assertEquals(2.238, testBetriebspunkt.getP_s(), 2.238 / 1000.0);

        // Es wird berprft, ob die Phasenverschiebung zwischen Strangstrom und Strangspannung korrekt berechnet worden ist.
        assertEquals(0.8606, testBetriebspunkt.getCosPhi(), 0.8606 / 1000.0);

        // Es wird berprft, ob der komplexe Zeiger des Strangstroms (in A) korrekt berechnet worden ist..
        assertEquals(2.801, testBetriebspunkt.getZ_i_s().getReal(), 2.801 / 1000.0);
        assertEquals(-1.657, testBetriebspunkt.getZ_i_s().getImaginary(), 1.657 / 1000.0);
    }

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

    /**
     * Test der Methode {@link Betriebspunkt#rechnen(Schaltungstyp)} fr den Fall, dass der Schaltungstyp DREIECK ist.
     * 
     * @throws SecurityException 
     * @throws NoSuchMethodException 
     * @throws InvocationTargetException 
     * @throws IllegalArgumentException 
     * @throws IllegalAccessException 
     */
    @Test
    public void testRechnen_Dreieck() throws NoSuchMethodException, SecurityException, IllegalAccessException,
            IllegalArgumentException, InvocationTargetException {
        // Der Betriebspunkt wird initialisiert.
        this.betriebspunkt.setI_L(3.2546);
        this.betriebspunkt.setU_LL(396.98);
        this.betriebspunkt.setP_el(1.9259);
        this.betriebspunkt.setSchaltungstyp(Schaltungstyp.DREIECK);

        // Die zu testende Methode wird aufgerufen
        Method rechnenMethode = Betriebspunkt.class.getDeclaredMethod("rechnen", (Class<?>[]) null);
        rechnenMethode.setAccessible(true);
        rechnenMethode.invoke(this.betriebspunkt, (Object[]) null);

        // Es wird berprft, ob die Scheinleistung (in kVA) korrekt berechnet worden ist.
        assertEquals(2.238, this.betriebspunkt.getP_s(), 2.238 / 1000.0);

        // Es wird berprft, ob die Phasenverschiebung zwischen Strangstrom und Strangspannung korrekt berechnet worden ist.
        assertEquals(0.8606, this.betriebspunkt.getCosPhi(), 0.8606 / 1000.0);

        // Es wird berprft, ob der komplexe Zeiger des Strangstroms (in A) korrekt berechnet worden ist..
        assertEquals(1.617, this.betriebspunkt.getZ_i_s().getReal(), 1.617 / 1000.0);
        assertEquals(-0.9569, this.betriebspunkt.getZ_i_s().getImaginary(), 0.9569 / 1000.0);
    }

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

    /**
     * Test der Methode {@link Betriebspunkt#rechnen(Schaltungstyp)} fr den Fall, dass der Schaltungstyp STERN ist.
     * 
     * @throws SecurityException 
     * @throws NoSuchMethodException 
     * @throws InvocationTargetException 
     * @throws IllegalArgumentException 
     * @throws IllegalAccessException 
     */
    @Test
    public void testRechnen_Stern() throws NoSuchMethodException, SecurityException, IllegalAccessException,
            IllegalArgumentException, InvocationTargetException {
        // Der Betriebspunkt wird initialisiert.
        this.betriebspunkt.setI_L(3.2546);
        this.betriebspunkt.setU_LL(396.98);
        this.betriebspunkt.setP_el(1.9259);
        this.betriebspunkt.setSchaltungstyp(Schaltungstyp.STERN);

        // Die zu testende Methode wird aufgerufen
        Method rechnenMethode = Betriebspunkt.class.getDeclaredMethod("rechnen", (Class<?>[]) null);
        rechnenMethode.setAccessible(true);
        rechnenMethode.invoke(this.betriebspunkt, (Object[]) null);

        // Es wird berprft, ob die Scheinleistung (in kVA) korrekt berechnet worden ist.
        assertEquals(2.238, this.betriebspunkt.getP_s(), 2.238 / 1000.0);

        // Es wird berprft, ob die Phasenverschiebung zwischen Strangstrom und Strangspannung korrekt berechnet worden ist.
        assertEquals(0.8606, this.betriebspunkt.getCosPhi(), 0.8606 / 1000.0);

        // Es wird berprft, ob der komplexe Zeiger des Strangstroms (in A) korrekt berechnet worden ist..
        assertEquals(2.801, this.betriebspunkt.getZ_i_s().getReal(), 2.801 / 1000.0);
        assertEquals(-1.657, this.betriebspunkt.getZ_i_s().getImaginary(), 1.657 / 1000.0);
    }

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

    /**
     * Test der Methode {@link Betriebspunkt#getI_L()}.
     * 
     * @throws SecurityException 
     * @throws NoSuchFieldException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testGetI_L()
            throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
        // Der in diesem Test verwendete effektive Leiterstrom (in A) wird im Prfling gespeichert.
        Field i_L_Feld = Betriebspunkt.class.getDeclaredField("i_L");
        i_L_Feld.setAccessible(true);
        i_L_Feld.setDouble(this.betriebspunkt, 2.8769);

        // Es wird berprft, ob der effektive Leiterstrom (in A) korrekt zurckgegeben wird.
        assertEquals(2.8769, this.betriebspunkt.getI_L(), 0.0);
    }

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

    /**
     * Test der Methode {@link Betriebspunkt#setI_L(double)}. 
     */
    @Test
    public void testSetI_L() {
        // Die zu testende Methode wird aufgerufen.
        this.betriebspunkt.setI_L(2.8769);

        // Es wird berprft, ob der effektive Leiterstrom (in A) korrekt im Objekt gespeichert worden ist.
        assertEquals(2.8769, this.betriebspunkt.getI_L(), 0.0);
    }

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

    /**
     * Test der Methode {@link Betriebspunkt#getU_LL()}.
     * 
     * @throws SecurityException 
     * @throws NoSuchFieldException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testGetU_LL()
            throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
        // Die in diesem Test verwendete effektive Leiter-Leiterspannung (in V) wird im Prfling gespeichert.
        Field u_LLFeld = Betriebspunkt.class.getDeclaredField("u_LL");
        u_LLFeld.setAccessible(true);
        u_LLFeld.setDouble(this.betriebspunkt, 397.72);

        // Es wird berprft, ob die effektive Leiter-Leiterspannung (in A) korrekt zurckgegeben wird.
        assertEquals(397.72, this.betriebspunkt.getU_LL(), 0.0);
    }

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

    /**
     * Test der Methode {@link Betriebspunkt#setU_LL(double)}. 
     */
    @Test
    public void testSetU_LL() {
        // Die zu testende Methode wird aufgerufen.
        this.betriebspunkt.setU_LL(397.72);

        // Es wird berprft, ob die effektive Leiter-Leiterspannung (in A) korrekt im Objekt gespeichert worden ist.
        assertEquals(397.72, this.betriebspunkt.getU_LL(), 0.0);
    }

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

    /**
     * Test der Methode {@link Betriebspunkt#getP_el()}.
     * 
     * @throws SecurityException 
     * @throws NoSuchFieldException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testGetP_el()
            throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
        // Die in diesem Test verwendete elektrische Leistung (in kW) wird im Prfling gespeichert.
        Field p_elFeld = Betriebspunkt.class.getDeclaredField("p_el");
        p_elFeld.setAccessible(true);
        p_elFeld.setDouble(this.betriebspunkt, 1.6462);

        // Es wird berprft, ob die elektrische Leistung (in kW) korrekt zurckgegeben wird.
        assertEquals(1.6462, this.betriebspunkt.getP_el(), 0.0);
    }

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

    /**
     * Test der Methode {@link Betriebspunkt#setP_el(double)}. 
     */
    @Test
    public void testSetP_el() {
        // Die zu testende Methode wird aufgerufen.
        this.betriebspunkt.setP_el(1.6462);

        // Es wird berprft, ob die elektrische Leistung (in kW) korrekt im Objekt gespeichert worden ist.
        assertEquals(1.6462, this.betriebspunkt.getP_el(), 0.0);
    }

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

    /**
     * Test der Methode {@link Betriebspunkt#getP_s()}.
     * 
     * @throws SecurityException 
     * @throws NoSuchFieldException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testGetP_s()
            throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
        // Die in diesem Test verwendete Scheinleistung (in kVA) wird im Prfling gespeichert.
        Field p_sFeld = Betriebspunkt.class.getDeclaredField("p_s");
        p_sFeld.setAccessible(true);
        p_sFeld.setDouble(this.betriebspunkt, 1.9820);

        // Es wird berprft, ob die Scheinleistung (in kVA) korrekt zurckgegeben wird.
        assertEquals(1.9820, this.betriebspunkt.getP_s(), 0.0);
    }

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

    /**
     * Test der Methode {@link Betriebspunkt#getCosPhi()}.
     * 
     * @throws SecurityException 
     * @throws NoSuchFieldException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testGetCosPhi()
            throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
        // Die in diesem Test verwendete Phasenverschiebung zwischen Strangstrom und Strangspannung wird im Prfling 
        // gespeichert.
        Field cosPhiFeld = Betriebspunkt.class.getDeclaredField("cosPhi");
        cosPhiFeld.setAccessible(true);
        cosPhiFeld.setDouble(this.betriebspunkt, 0.83062);

        // Es wird berprft, ob die Phasenverschiebung zwischen Strangstrom und Strangspannung korrekt zurckgegeben wird.
        assertEquals(0.83062, this.betriebspunkt.getCosPhi(), 0.0);
    }

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

    /**
     * Test der Methode {@link Betriebspunkt#getSchaltungstyp()}.
     * 
     * @throws SecurityException 
     * @throws NoSuchFieldException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testGetSchaltungstyp()
            throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
        // Die in diesem Test verwendete Schaltungstyp wird im Prfling gespeichert.
        Field schaltungstypFeld = Betriebspunkt.class.getDeclaredField("schaltungstyp");
        schaltungstypFeld.setAccessible(true);
        schaltungstypFeld.set(this.betriebspunkt, Schaltungstyp.DREIECK);

        // Es wird berprft, ob der Schaltungstyp korrekt zurckgegeben wird.
        assertEquals(Schaltungstyp.DREIECK, this.betriebspunkt.getSchaltungstyp());
    }

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

    /**
     * Test der Methode {@link Betriebspunkt#setSchaltungstyp(Schaltungstyp)}. 
     */
    @Test
    public void testSetSchaltungstyp()
            throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
        // Die zu testende Methode wird aufgerufen.
        this.betriebspunkt.setSchaltungstyp(Schaltungstyp.STERN);

        // Es wird berprft, ob der Schaltungstyp korrekt im Objekt gespeichert worden ist.
        assertEquals(Schaltungstyp.STERN, this.betriebspunkt.getSchaltungstyp());
    }

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

    /**
     * Test der Methode {@link Betriebspunkt#getZ_i_s()}.
     * 
     * @throws SecurityException 
     * @throws NoSuchFieldException 
     * @throws IllegalAccessException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void testZ_i_s()
            throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
        // Der in diesem Test verwendete komplexe Zeiger des Strangstroms (in A) wird erzeugt.
        Complex testZ_i_s = new Complex(2.3897, -1.6020);

        // Der in diesem Test verwendete komplexe Zeiger des Strangstroms (in A) wird im Prfling gespeichert.
        Field z_i_sFeld = Betriebspunkt.class.getDeclaredField("z_i_s");
        z_i_sFeld.setAccessible(true);
        z_i_sFeld.set(this.betriebspunkt, testZ_i_s);

        // Es wird berprft, ob der komplexe Zeiger des Strangstroms (in A) korrekt zurckgegeben wird.
        assertEquals(testZ_i_s, this.betriebspunkt.getZ_i_s());
    }
}