1   ////////////////////////////////////////////////////////////////////////////////
2   //CabaWeb
3   //Copyright (C) 2004  Thomas Vogt <Thomas.Vogt@TVC-Software.com>
4   //
5   //This library is free software; you can redistribute it and/or
6   //modify it under the terms of the GNU Lesser General Public
7   //License as published by the Free Software Foundation; either
8   //version 2.1 of the License, or (at your option) any later version.
9   //
10  //This library is distributed in the hope that it will be useful,
11  //but WITHOUT ANY WARRANTY; without even the implied warranty of
12  //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  //Lesser General Public License for more details.
14  //
15  //You should have received a copy of the GNU Lesser General Public
16  //License along with this library; if not, write to the Free Software
17  //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  ////////////////////////////////////////////////////////////////////////////////
19  
20  package org.fhw.cabaweb.junittests;
21  
22  import java.util.ArrayList;
23  import junit.framework.TestCase;
24  
25  import org.fhw.cabaweb.math.Produktion;
26  import org.fhw.cabaweb.data.dataobjects.Qualitaetssicherung;
27  import org.fhw.cabaweb.data.dataobjects.Verwaltungskosten;
28  
29  /***
30   * Klasse f&uuml;r den Test der Produktionsfunktionen
31   *
32   * @author  <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
33   * @version Version 1.0 26.03-05.04.2004
34   */
35  public class ProduktionTest extends TestCase
36  {
37      private ArrayList qualitaetssicherungTabelle;
38      private ArrayList verwaltungTabelle;
39  
40      public static void main(String[] args)
41      {
42          junit.textui.TestRunner.run(ProduktionTest.class);
43      }
44  
45      /*
46       * @see TestCase#setUp()
47       */
48      protected void setUp() throws Exception
49      {
50          super.setUp();
51  
52          qualitaetssicherungTabelle = new ArrayList();
53          verwaltungTabelle = new ArrayList();
54  
55          qualitaetssicherungTabelle.add(0, new Qualitaetssicherung(0.00, 30.0, 7.5));
56          qualitaetssicherungTabelle.add(1, new Qualitaetssicherung(0.05, 20.0, 5.0));
57          qualitaetssicherungTabelle.add(2, new Qualitaetssicherung(0.10, 12.0, 3.0));
58          qualitaetssicherungTabelle.add(3, new Qualitaetssicherung(0.15, 8.0, 2.0));
59          qualitaetssicherungTabelle.add(4, new Qualitaetssicherung(0.20, 5.0, 1.25));
60          qualitaetssicherungTabelle.add(5, new Qualitaetssicherung(0.25, 4.5, 1.13));
61          qualitaetssicherungTabelle.add(6, new Qualitaetssicherung(0.30, 4.0, 1.0));
62          qualitaetssicherungTabelle.add(7, new Qualitaetssicherung(0.35, 3.5, 0.88));
63          qualitaetssicherungTabelle.add(8, new Qualitaetssicherung(0.40, 3.0, 0.75));
64          qualitaetssicherungTabelle.add(9, new Qualitaetssicherung(0.45, 3.0, 0.75));
65  
66          verwaltungTabelle.add(0, new Verwaltungskosten(100.0, 500000.0));
67          verwaltungTabelle.add(1, new Verwaltungskosten(150.0, 550000.0));
68          verwaltungTabelle.add(2, new Verwaltungskosten(200.0, 600000.0));
69          verwaltungTabelle.add(3, new Verwaltungskosten(250.0, 700000.0));
70          verwaltungTabelle.add(4, new Verwaltungskosten(300.0, 800000.0));
71          verwaltungTabelle.add(5, new Verwaltungskosten(350.0, 1100000.0));
72          verwaltungTabelle.add(5, new Verwaltungskosten(400.0, 1500000.0));
73      }
74  
75      public void testQualitaetssicherungOptimal()
76      {
77          assertEquals(0.0, Produktion.qualitaetssicherungOptimal(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, qualitaetssicherungTabelle), 0.0000000001);
78          assertEquals(151668.8584818272, Produktion.qualitaetssicherungOptimal(500000.0, 153.114566139089, 51102.9411764706, 7.0, 10.0, 1.0, 2.0, 1.0, 1.013, 0.5, 1.3, qualitaetssicherungTabelle), 0.0000000001);
79      }
80  
81      public void testQualitaetssicherungNormal()
82      {
83          assertEquals(0.0, Produktion.qualitaetssicherungNormal(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, qualitaetssicherungTabelle), 0.0000000001);
84          assertEquals(279489.4978532532, Produktion.qualitaetssicherungNormal(500000.0, 153.114566139089, 51102.9411764706, 7.0, 10.0, 1.0, 2.0, 1.0, 1.013, 0.5, 1.3, 0.02, qualitaetssicherungTabelle), 0.0000000001);
85          assertEquals(312837.8378378374, Produktion.qualitaetssicherungNormal(500000.0, 153.114566139089, 51102.9411764706, 7.0, 10.0, 1.0, 2.0, 1.0, 1.013, 0.5, 1.3, 0.00, qualitaetssicherungTabelle), 0.0000000001);
86      }
87  
88      public void testHerstellKostenBewertung()
89      {
90          assertEquals(0.0, Produktion.herstellKostenBewertung(0.0, 0.0, 0.0, 0.0), 0.0000000001);
91          assertEquals(0.5, Produktion.herstellKostenBewertung(50000.0, 50000.0, 100000.0, 400000.0), 0.0000000001);
92          assertEquals(1.0, Produktion.herstellKostenBewertung(100000.0, 100000.0, 200000.0, 400000.0), 0.0000000001);
93          assertEquals(2.0, Produktion.herstellKostenBewertung(200000.0, 200000.0, 400000.0, 400000.0), 0.0000000001);
94          assertEquals(400000.0, Produktion.herstellKostenBewertung(100000.0, 100000.0, 200000.0, 0.0), 0.0000000001);
95      }
96  
97      public void testDefizitUndLagerQuotient()
98      {
99          assertEquals(0.0, Produktion.defizitUndLagerQuotient(0.0, 0.0, 0.0, 0.0), 0.0000000001);
100         assertEquals(-10.0, Produktion.defizitUndLagerQuotient(400000.0, 440000.0, 40000.0, 10000.0), 0.0000000001);
101         assertEquals(12.72727273, Produktion.defizitUndLagerQuotient(440000.0, 400000.0, 0.0, 100000.0), 0.0000000001);
102     }
103 
104     public void testZinssatzOptimal()
105     {
106         assertEquals(0.0, Produktion.zinssatzOptimal(0.0, 0.0, 0.0, 0.0, 0.0), 0.0000000001);
107         assertEquals(200.0, Produktion.zinssatzOptimal(100000.0, 12500.0, 12500.0, 12500.0, 12500.0), 0.0000000001);
108         assertEquals(20.0, Produktion.zinssatzOptimal(100000.0, 125000.0, 125000.0, 125000.0, 125000.0), 0.0000000001);
109         assertEquals(2.0, Produktion.zinssatzOptimal(100000.0, 1250000.0, 1250000.0, 1250000.0, 1250000.0), 0.0000000001);
110         assertEquals(0.0, Produktion.zinssatzOptimal(100000.0, -1250000.0, -1250000.0, -1250000.0, -1250000.0), 0.0000000001);
111     }
112 
113     public void testLiquiditaetsaenderungBeiGeplantemAbsatz()
114     {
115         assertEquals(0.0, Produktion.liquiditaetsaenderungBeiGeplantemAbsatz(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), 0.0000000001);
116         assertEquals(1000000.0, Produktion.liquiditaetsaenderungBeiGeplantemAbsatz(100000.0, 1000000.0, 500000.0, 500000.0, 6.65, 0.50, 10.0, 1.0), 0.0000000001);
117         assertEquals(1000000.0, Produktion.liquiditaetsaenderungBeiGeplantemAbsatz(0.0, 1000000.0, 500000.0, 500000.0, 6.65, 0.50, 10.0, 1.0), 0.0000000001);
118         assertEquals(713750.0, Produktion.liquiditaetsaenderungBeiGeplantemAbsatz(100000.0, 1000000.0, 500000.0, 450000.0, 6.65, 0.50, 10.0, 1.0), 0.0000000001);
119         assertEquals(642500.0, Produktion.liquiditaetsaenderungBeiGeplantemAbsatz(0.0, 1000000.0, 500000.0, 450000.0, 6.65, 0.50, 10.0, 1.0), 0.0000000001);
120     }
121 
122     public void testFehleranteil()
123     {
124         assertEquals(30.0, Produktion.fehleranteil(0.0, qualitaetssicherungTabelle), 0.0000000001);
125         assertEquals(20.0, Produktion.fehleranteil(0.05, qualitaetssicherungTabelle), 0.0000000001);
126         assertEquals(5.0, Produktion.fehleranteil(0.20, qualitaetssicherungTabelle), 0.0000000001);
127         assertEquals(3.0, Produktion.fehleranteil(0.45, qualitaetssicherungTabelle), 0.0000000001);
128     }
129 
130     public void testAbschreibungskosten()
131     {
132         assertEquals(0.0, Produktion.abschreibungskosten(0.0, 0.0), 0.0000000001);
133         assertEquals(10000.0, Produktion.abschreibungskosten(10000.0, 1.0), 0.0000000001);
134         assertEquals(5000.0, Produktion.abschreibungskosten(10000.0, 0.5), 0.0000000001);
135         assertEquals(20000.0, Produktion.abschreibungskosten(10000.0, 2.0), 0.0000000001);
136     }
137 
138     public void testAnlagenProjektierungsKosten()
139     {
140         assertEquals(0.0, Produktion.anlagenProjektierungsKosten(0.0, 0.0), 0.0000000001);
141         assertEquals(10000.0, Produktion.anlagenProjektierungsKosten(10000.0, 1.0), 0.0000000001);
142         assertEquals(5000.0, Produktion.anlagenProjektierungsKosten(10000.0, 0.5), 0.0000000001);
143         assertEquals(20000.0, Produktion.anlagenProjektierungsKosten(10000.0, 2.0), 0.0000000001);
144     }
145 
146     public void testRohstoffVerbrauchsKosten()
147     {
148         assertEquals(0.0, Produktion.rohstoffVerbrauchsKosten(0.0, 0.0, 0.0), 0.000000001);
149         assertEquals(400000.0, Produktion.rohstoffVerbrauchsKosten(400000.0, 1.0, 1.0), 0.000000001);
150         assertEquals(440000.0, Produktion.rohstoffVerbrauchsKosten(400000.0, 1.0, 1.1), 0.000000001);
151         assertEquals(484000.0, Produktion.rohstoffVerbrauchsKosten(400000.0, 1.1, 1.1), 0.000000001);
152     }
153 
154     public void testRohstoffLagerKosten()
155     {
156         assertEquals(0.0, Produktion.rohstoffLagerKosten(0.0, 0.0), 0.0000000001);
157         assertEquals(10000.0, Produktion.rohstoffLagerKosten(10000.0, 1.0), 0.0000000001);
158         assertEquals(5000.0, Produktion.rohstoffLagerKosten(10000.0, 0.5), 0.0000000001);
159         assertEquals(20000.0, Produktion.rohstoffLagerKosten(10000.0, 2.0), 0.0000000001);
160     }
161 
162     public void testRohstoffBestellungskosten()
163     {
164         assertEquals(0.0, Produktion.rohstoffBestellungskosten(0.0, 0.0, 0.0), 0.0000000001);
165         assertEquals(20000.0, Produktion.rohstoffBestellungskosten(10000.0, 10000.0, 1.0), 0.0000000001);
166         assertEquals(226000.0, Produktion.rohstoffBestellungskosten(100000.0, 100000.0, 1.13), 0.0000000001);
167     }
168 
169     public void testFertigungsZeitGutesStueck()
170     {
171         assertEquals(0.0, Produktion.fertigungsZeitGutesStueck(0.0, 0.0, 0.0, 0.0, 0.0), 0.0000000001);
172         assertEquals(7.35, Produktion.fertigungsZeitGutesStueck(400000.0, 40000.0, 400000.0, 7.0, 0.5), 0.0000000001);
173         assertEquals(2940000.0, Produktion.fertigungsZeitGutesStueck(400000.0, 40000.0, -400000.0, 7.0, 0.5), 0.0000000001);
174     }
175 
176     public void testFertigungszeitGesamt()
177     {
178         assertEquals(0.0, Produktion.fertigungszeitGesamt(0.0, 0.0, 0.0, 0.0), 0.0000000001);
179         assertEquals(49000.0, Produktion.fertigungszeitGesamt(400000.0, 40000.0, 7.0, 0.5), 0.0000000001);
180         assertEquals(50166.6666666667, Produktion.fertigungszeitGesamt(400000.0, 40000.0, 7.0, 0.75), 0.0000000001);
181     }
182 
183     public void testKapazitaetsauslastung()
184     {
185         assertEquals(0.0, Produktion.kapazitaetsauslastung(0.0, 0.0), 0.0000000001);
186         assertEquals(0.5, Produktion.kapazitaetsauslastung(25000.0, 50000.0), 0.0000000001); 
187         assertEquals(1.0, Produktion.kapazitaetsauslastung(50000.0, 50000.0), 0.0000000001);
188         assertEquals(1.5, Produktion.kapazitaetsauslastung(75000.0, 50000.0), 0.0000000001); 
189         assertEquals(2.0, Produktion.kapazitaetsauslastung(100000.0, 50000.0), 0.0000000001);
190         assertEquals(1.99998, Produktion.kapazitaetsauslastung(99999.0, 50000.0), 0.0000000001);
191     }
192 
193     public void testKapazitaetsbestandFolgequartal()
194     {
195         assertEquals(0.0, Produktion.kapazitaetsbestandFolgequartal(0.0, 0.0, 0.0, 0.0), 0.0000000001);
196         assertEquals(50020.0, Produktion.kapazitaetsbestandFolgequartal(50000.0, 1000000.0, 1000000.0, 100000.0), 0.0000000001);
197         assertEquals(2050000.0, Produktion.kapazitaetsbestandFolgequartal(50000.0, 1000000.0, 1000000.0, -100000.0), 0.0000000001);
198     }
199 
200     public void testAusschusskosten()
201     {
202         assertEquals(0.0, Produktion.ausschusskosten(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), 0.0000000001);
203         assertEquals(128378.37837825, Produktion.ausschusskosten(540540.540540, 0.075, 7.0, 10.0, 1.0, 2.0, 1.0, 153.114566), 0.0000000001);
204         assertEquals(152027.027026875, Produktion.ausschusskosten(540540.540540, 0.075, 7.0, 10.0, 1.0, 2.0, 1.0, 113.114566), 0.0000000001);
205     }
206 
207     public void testFehlerkosten()
208     {
209         assertEquals(0.0, Produktion.fehlerkosten(0.0, 0.0), 0.0000000001);
210         assertEquals(200000.0, Produktion.fehlerkosten(100000.0, 100000.0), 0.0000000001);
211         assertEquals(100000.0, Produktion.fehlerkosten(100000.0, 0.0), 0.0000000001);
212         assertEquals(100000.0, Produktion.fehlerkosten(0.0, 100000.0), 0.0000000001);
213     }
214 
215     public void testQualitaetskosten()
216     {
217         assertEquals(0.0, Produktion.qualitaetskosten(0.0, 0.0, 0.0, 0.0), 0.0000000001);
218         assertEquals(130000.0, Produktion.qualitaetskosten(400000.0, 1.0, 0.2, 50000.0), 0.0000000001);
219         assertEquals(131040.0, Produktion.qualitaetskosten(400000.0, 1.013, 0.2, 50000.0), 0.0000000001);
220     }
221 
222     public void testNacharbeitskosten()
223     {
224         assertEquals(0.0, Produktion.nacharbeitskosten(0.0, 0.0, 0.0, 0.0, 0.0, 0.0), 0.0000000001);
225         assertEquals(16406.25, Produktion.nacharbeitskosten(7.0, 10.0, 0.25, 0.5, 400000.0, 0.075), 0.0000000001);
226     }
227 
228     public void testAusschuss()
229     {
230         assertEquals(0.0, Produktion.ausschuss(0.0), 0.0000000001);
231         assertEquals(0.0125, Produktion.ausschuss(0.05), 0.0000000001);
232         assertEquals(0.025, Produktion.ausschuss(0.10), 0.0000000001);
233         assertEquals(0.0075, Produktion.ausschuss(0.03), 0.0000000001);
234     }
235 
236     public void testQualtaetssicherungReal()
237     {
238         assertEquals(0.0, Produktion.qualtaetssicherungReal(0.0, 0.0), 0.0000000001);
239         assertEquals(0.20, Produktion.qualtaetssicherungReal(0.20, 1.0), 0.0000000001);
240         assertEquals(0.1974333662, Produktion.qualtaetssicherungReal(0.20, 1.013), 0.0000000001);
241         assertEquals(0.1951219512, Produktion.qualtaetssicherungReal(0.20, 1.025), 0.0000000001);
242     }
243 
244     public void testProduktionsmengeNominal()
245     {
246         assertEquals(0.0, Produktion.produktionsmengeNominal(0.0, 0.0), 0.0000000001);
247         assertEquals(444444.4444444444, Produktion.produktionsmengeNominal(400000.0, 10.0), 0.0000000001);
248         assertEquals(421052.6315789474, Produktion.produktionsmengeNominal(400000.0, 5.0), 0.0000000001);
249     }
250 
251     public void testProduktionsmengeNacharbeitbar()
252     {
253         assertEquals(0.0, Produktion.produktionsmengeNacharbeitbar(0.0, 0.0), 0.0000000001);
254         assertEquals(15000.0, Produktion.produktionsmengeNacharbeitbar(400000.0, 5.0), 0.0000000001);
255         assertEquals(7500.0, Produktion.produktionsmengeNacharbeitbar(400000.0, 2.5), 0.0000000001);
256     }
257 
258     public void testProduktionsmengeAusschuss()
259     {
260         assertEquals(0.0, Produktion.produktionsmengeAusschuss(0.0, 0.0), 0.0000000001);
261         assertEquals(20000.0, Produktion.produktionsmengeAusschuss(400000.0, 5.0), 0.0000000001);
262         assertEquals(10000.0, Produktion.produktionsmengeAusschuss(400000.0, 2.5), 0.0000000001);
263     }
264 
265     public void testProduktionsmengeFehlerhaft()
266     {
267         assertEquals(0.0, Produktion.produktionsmengeFehlerhaft(0.0, 0.0), 0.0000000001);
268         assertEquals(20000.0, Produktion.produktionsmengeFehlerhaft(400000.0, 5.0), 0.0000000001);
269         assertEquals(10000.0, Produktion.produktionsmengeFehlerhaft(400000.0, 2.5), 0.0000000001);
270     }
271 
272     public void testAufarbeitungskosten()
273     {
274         assertEquals(0.0, Produktion.aufarbeitungskosten(0.0, 0), 0.0000000001);
275         assertEquals(0.0, Produktion.aufarbeitungskosten(45000.0, 0), 0.0000000001);
276         assertEquals(33750.0, Produktion.aufarbeitungskosten(45000.0, 1), 0.0000000001);
277         assertEquals(67500.0, Produktion.aufarbeitungskosten(45000.0, 2), 0.0000000001);
278     }
279 
280     public void testQualitaetssicherungGesamt()
281     {
282         assertEquals(0.0, Produktion.qualitaetssicherungGesamt(0.0, 0.0), 0.0000000001);
283         assertEquals(80000.0, Produktion.qualitaetssicherungGesamt(400000.0, 0.20), 0.0000000001);
284         assertEquals(60000.0, Produktion.qualitaetssicherungGesamt(400000.0, 0.15), 0.0000000001);
285         assertEquals(40000.0, Produktion.qualitaetssicherungGesamt(400000.0, 0.10), 0.0000000001);
286     }
287 
288     public void testFertigungsLohnKosten()
289     {
290         assertEquals(0.0, Produktion.fertigungsLohnKosten(0.0, 0.0, 0.0, 0.0, 0.0), 0.0000000001);
291         assertEquals(479791.6666666666, Produktion.fertigungsLohnKosten(400000.0, 7.0, 10.0, 0.5, 0.075), 0.0000000001);
292     }
293 
294     public void testUeberstundenzuschlaege()
295     {
296         assertEquals(0.0, Produktion.ueberstundenzuschlaege(0.0, 0.0, 0.0, 0.0), 0.0000000001);
297         assertEquals(0.0, Produktion.ueberstundenzuschlaege(99.0, 56000.0, 56000.0, 10.0), 0.0000000001);
298         assertEquals(5000.0, Produktion.ueberstundenzuschlaege(101.0, 57000.0, 56000.0, 10.0), 0.0000000001);
299         assertEquals(220000.0, Produktion.ueberstundenzuschlaege(149.0, 100000.0, 56000.0, 10.0), 0.0000000001);
300         assertEquals(0.0, Produktion.ueberstundenzuschlaege(151.0, 103000.0, 56000.0, 10.0), 0.0000000001);
301         assertEquals(215000.0, Produktion.ueberstundenzuschlaege(201.0, 155000.0, 56000.0, 10.0), 0.0000000001);
302         assertEquals(0.0, Produktion.ueberstundenzuschlaege(251.0, 210000.0, 56000.0, 10.0), 0.0000000001);
303     }
304 
305     public void testLohnindex()
306     {
307         assertEquals(0.0, Produktion.lohnindex(0.0, 0.0), 0.0000000001);
308         assertEquals(1.1, Produktion.lohnindex(1.0, 10.0), 0.0000000001);
309         assertEquals(1.1, Produktion.lohnindex(1.10, 0.0), 0.0000000001);
310         assertEquals(1.21, Produktion.lohnindex(1.10, 10.0), 0.0000000001);
311     }
312 
313     public void testLohnkostenNominal()
314     {
315         assertEquals(0.0, Produktion.lohnkostenNominal(0.0, 0.0), 0.0000000001);
316         assertEquals(10.0, Produktion.lohnkostenNominal(10.0, 1.0), 0.0000000001);
317         assertEquals(10.13, Produktion.lohnkostenNominal(10.0, 1.013), 0.0000000001);
318     }
319 
320     public void testVerwaltung()
321     {
322         assertEquals(0.0, Produktion.verwaltung(0.0, 0.0, verwaltungTabelle), 0.0000000001);
323         assertEquals(500000.0, Produktion.verwaltung(0.0, 1.0, verwaltungTabelle), 0.0000000001);
324         assertEquals(500000.0, Produktion.verwaltung(99.0, 1.0, verwaltungTabelle), 0.0000000001);
325         assertEquals(550000.0, Produktion.verwaltung(100.0, 1.0, verwaltungTabelle), 0.0000000001);
326         assertEquals(550000.0, Produktion.verwaltung(149.0, 1.0, verwaltungTabelle), 0.0000000001);
327         assertEquals(600000.0, Produktion.verwaltung(151.0, 1.0, verwaltungTabelle), 0.0000000001);
328     }
329 
330     public void testSchichtwechsel()
331     {
332         assertEquals(0.0, Produktion.schichtwechsel(0.0, 0.0, 0.0, 0.0), 0.0000000001);
333         assertEquals(0.0, Produktion.schichtwechsel(50000.0, 99.0, 99.0, 1.0), 0.0000000001);
334         assertEquals(0.0, Produktion.schichtwechsel(50000.0, 99.0, 100.0, 1.0), 0.0000000001);
335         assertEquals(0.0, Produktion.schichtwechsel(50000.0, 99.0, 101.0, 1.0), 0.0000000001);
336         assertEquals(50000.0, Produktion.schichtwechsel(50000.0, 99.0, 151.0, 1.0), 0.0000000001);
337         assertEquals(50000.0, Produktion.schichtwechsel(50000.0, 99.0, 201.0, 1.0), 0.0000000001);
338     }
339 
340     public void testSchicht()
341     {
342         assertEquals(1.0, Produktion.schicht(0.0), 0.0000000001);
343         assertEquals(1.0, Produktion.schicht(33.0), 0.0000000001);
344         assertEquals(1.0, Produktion.schicht(49.0), 0.0000000001);
345         assertEquals(1.0, Produktion.schicht(99.0), 0.0000000001);
346         assertEquals(1.0, Produktion.schicht(101.0), 0.0000000001);
347         assertEquals(1.0, Produktion.schicht(125.0), 0.0000000001);
348         assertEquals(1.0, Produktion.schicht(149.99), 0.0000000001);
349         assertEquals(2.0, Produktion.schicht(150.01), 0.0000000001);
350         assertEquals(2.0, Produktion.schicht(175.00), 0.0000000001);
351         assertEquals(2.0, Produktion.schicht(200.00), 0.0000000001);
352         assertEquals(2.0, Produktion.schicht(225.00), 0.0000000001);
353         assertEquals(2.0, Produktion.schicht(249.99), 0.0000000001);
354         assertEquals(3.0, Produktion.schicht(250.01), 0.0000000001);
355         assertEquals(3.0, Produktion.schicht(349.99), 0.0000000001);
356         assertEquals(4.0, Produktion.schicht(350.01), 0.0000000001);
357         assertEquals(4.0, Produktion.schicht(449.99), 0.0000000001);
358         assertEquals(5.0, Produktion.schicht(450.01), 0.0000000001);
359         assertEquals(5.0, Produktion.schicht(549.99), 0.0000000001);
360         assertEquals(6.0, Produktion.schicht(550.01), 0.0000000001);
361     }
362 
363     public void testRohstoffverbrauch()
364     {
365         assertEquals(0.0, Produktion.rohstoffverbrauch(0.0, 0.0), 0.0000000001);
366         assertEquals(400000.0, Produktion.rohstoffverbrauch(400000.0, 1.0), 0.0000000001);
367         assertEquals(480000.0, Produktion.rohstoffverbrauch(400000.0, 1.2), 0.0000000001);
368     }
369 
370     public void testRohstoffLagerBestand()
371     {
372         assertEquals(0.0, Produktion.rohstoffLagerBestand(0.0, 0.0, 0.0), 0.0000000001);
373         assertEquals(1100000.0, Produktion.rohstoffLagerBestand(1000000.0, 400000.0, 500000.0), 0.0000000001);
374         assertEquals(0.0, Produktion.rohstoffLagerBestand(1000000.0, 1000000.0, 0.0), 0.0000000001);
375         assertEquals(100000.0, Produktion.rohstoffLagerBestand(1000000.0, 900000.0, 0.0), 0.0000000001);
376     }
377 
378     public void testRohstoffpreis()
379     {
380         assertEquals(0.0, Produktion.rohstoffpreis(0.0, 0.0), 0.0000000001);
381         assertEquals(1.0, Produktion.rohstoffpreis(1.0, 1.0), 0.0000000001);
382         assertEquals(1.013, Produktion.rohstoffpreis(1.0, 1.013), 0.0000000001);
383         assertEquals(1.06365, Produktion.rohstoffpreis(1.05, 1.013), 0.0000000001);
384     }
385 
386     public void testRohstoffwert()
387     {
388         assertEquals(0.0, Produktion.rohstoffwert(0.0, 0.0, 0.0, 0.0, 0.0), 0.0000000001);
389         assertEquals(1.0, Produktion.rohstoffwert(0.0, 1000000.0, 1100000.0, 0.0, 1.0), 0.0000000001);
390         assertEquals(1.15, Produktion.rohstoffwert(0.0, 1000000.0, 1100000.0, 0.0, 1.15), 0.0000000001);
391         assertEquals(1.0, Produktion.rohstoffwert(1000000.0, 1000000.0, 500000.0, 1.0, 1.0), 0.0000000001);
392         assertEquals(1.1, Produktion.rohstoffwert(1000000.0, 1000000.0, 500000.0, 1.0, 1.15), 0.0000000001);
393     }
394 
395     public void testFertigungszeitGesamtFertigungsLohnKosten()
396     {
397         assertEquals(0.0, Produktion.fertigungszeitGesamtFertigungsLohnKosten(0.0, 0.0, 0.0), 0.0000000001);
398         assertEquals(52733.3333333333, Produktion.fertigungszeitGesamtFertigungsLohnKosten(400000.0, 7.0, 40000.0), 0.0000000001);
399     }
400 
401     public void testNormalkapazitaet()
402     {
403         assertEquals(0.0, Produktion.normalkapazitaet(0.0, 0.0), 0.0000000001);
404         assertEquals(51000.0, Produktion.normalkapazitaet(99.0, 51000.0), 0.0000000001);
405         assertEquals(51000.0, Produktion.normalkapazitaet(101.0, 51000.0), 0.0000000001);
406         assertEquals(102000.0, Produktion.normalkapazitaet(150.0, 51000.0), 0.0000000001);
407     }
408 
409     public void testFertigungszeitOhneUeberstundenOhneNacharbeit()
410     {
411         assertEquals(0.0, Produktion.fertigungszeitOhneUeberstundenOhneNacharbeit(0.0, 0.0), 0.0000000001);
412         assertEquals(46666.6666666667, Produktion.fertigungszeitOhneUeberstundenOhneNacharbeit(400000.0, 7.0), 0.0000000001);
413         assertEquals(51333.3333333333, Produktion.fertigungszeitOhneUeberstundenOhneNacharbeit(440000.0, 7.0), 0.0000000001);
414     }
415 
416     public void testFertigungsLohnKostenOhneUeberstundenOhneNacharbeit()
417     {
418         assertEquals(0.0, Produktion.fertigungsLohnKostenOhneUeberstundenOhneNacharbeit(0.0, 0.0), 0.0000000001);
419         assertEquals(510000.0, Produktion.fertigungsLohnKostenOhneUeberstundenOhneNacharbeit(51000.0, 10.0), 0.0000000001);
420         assertEquals(765000.0, Produktion.fertigungsLohnKostenOhneUeberstundenOhneNacharbeit(76500.0, 10.0), 0.0000000001);
421     }
422 
423     public void testUeberstundenzuschlaegeFLK()
424     {
425         assertEquals(0.0, Produktion.ueberstundenzuschlaegeFertigungsLohnKosten(0.0, 0.0, 0.0), 0.0000000001);
426         assertEquals(0.0, Produktion.ueberstundenzuschlaegeFertigungsLohnKosten(51000.0, 51000.0, 10.0), 0.0000000001);
427         assertEquals(
428             125000.0,
429             Produktion.ueberstundenzuschlaegeFertigungsLohnKosten(76000.0, 51000.0, 10.0),
430             0.0000000001);
431         assertEquals(
432             127500.0,
433             Produktion.ueberstundenzuschlaegeFertigungsLohnKosten(76500.0, 51000.0, 10.0),
434             0.0000000001);
435         assertEquals(0.0, Produktion.ueberstundenzuschlaegeFertigungsLohnKosten(77000.0, 51000.0, 10.0), 0.0000000001);
436         assertEquals(0.0, Produktion.ueberstundenzuschlaegeFertigungsLohnKosten(102000.0, 51000.0, 10.0), 0.0000000001);
437         assertEquals(
438             5000.0,
439             Produktion.ueberstundenzuschlaegeFertigungsLohnKosten(103000.0, 51000.0, 10.0),
440             0.0000000001);
441         assertEquals(
442             127500.0,
443             Produktion.ueberstundenzuschlaegeFertigungsLohnKosten(127500.0, 51000.0, 10.0),
444             0.0000000001);
445         assertEquals(0.0, Produktion.ueberstundenzuschlaegeFertigungsLohnKosten(128000.0, 51000.0, 10.0), 0.0000000001);
446         assertEquals(0.0, Produktion.ueberstundenzuschlaegeFertigungsLohnKosten(153000.0, 51000.0, 10.0), 0.0000000001);
447         assertEquals(
448             2500.0,
449             Produktion.ueberstundenzuschlaegeFertigungsLohnKosten(153500.0, 51000.0, 10.0),
450             0.0000000001);
451     }
452 
453     public void testNacharbeitsZeitOhneUeberstunden()
454     {
455         assertEquals(0.0, Produktion.nacharbeitsZeitOhneUeberstunden(0.0, 0.0, 0.0), 0.0000000001);
456         assertEquals(10000.0, Produktion.nacharbeitsZeitOhneUeberstunden(40000.0, 10.0, 0.5), 0.0000000001);
457     }
458 
459     public void testNacharbeitslohnkostenOhneUeberstunden()
460     {
461         assertEquals(0.0, Produktion.nacharbeitslohnkostenOhneUeberstunden(0.0, 0.0), 0.0000000001);
462         assertEquals(50000.0, Produktion.nacharbeitslohnkostenOhneUeberstunden(5000.0, 10.0), 0.0000000001);
463         assertEquals(100000.0, Produktion.nacharbeitslohnkostenOhneUeberstunden(10000.0, 10.0), 0.0000000001);
464     }
465 
466     public void testUeberstundenzuschlagNacharbeit()
467     {
468         assertEquals(0.0, Produktion.ueberstundenzuschlagNacharbeit(0.0, 0.0, 0.0, 0.0, 0.0, 0.0), 0.0000000001);
469         assertEquals(
470             0.0,
471             Produktion.ueberstundenzuschlagNacharbeit(1500000.0, 25500.0, 51000.0, 5000.0, 51000.0, 10.0),
472             0.0000000001);
473         assertEquals(
474             0.0,
475             Produktion.ueberstundenzuschlagNacharbeit(15000.0, 51000.0, 51000.0, 5000.0, 51000.0, 10.0),
476             0.0000000001);
477         assertEquals(
478             0.0,
479             Produktion.ueberstundenzuschlagNacharbeit(1500000.0, 61000.0, 51000.0, 5000.0, 51000.0, 10.0),
480             0.0000000001);
481         assertEquals(
482             0.0,
483             Produktion.ueberstundenzuschlagNacharbeit(1500000.0, 76500.0, 51000.0, 5000.0, 51000.0, 10.0),
484             0.0000000001);
485         assertEquals(
486             0.0,
487             Produktion.ueberstundenzuschlagNacharbeit(1500000.0, 102000.0, 51000.0, 5000.0, 51000.0, 10.0),
488             0.0000000001);
489         assertEquals(
490             25000.0,
491             Produktion.ueberstundenzuschlagNacharbeit(1500000.0, 127500.0, 51000.0, 5000.0, 51000.0, 10.0),
492             0.0000000001);
493         assertEquals(
494             0.0,
495             Produktion.ueberstundenzuschlagNacharbeit(1500000.0, 153000.0, 51000.0, 5000.0, 51000.0, 10.0),
496             0.0000000001);
497         assertEquals(
498             25000.0,
499             Produktion.ueberstundenzuschlagNacharbeit(1500000.0, 178500.0, 51000.0, 5000.0, 51000.0, 10.0),
500             0.0000000001);
501         assertEquals(
502             0.0,
503             Produktion.ueberstundenzuschlagNacharbeit(1500000.0, 204000.0, 51000.0, 5000.0, 51000.0, 10.0),
504             0.0000000001);
505         /***@TODO Tests implementieren*/
506         /* @param   nacharbeitslohnkostenOhneUeberstunden
507         * @param    fertigungszeitGesamt
508         * @param    fertigungszeitOhneUeberstundenOhneNacharbeit
509         * @param    nacharbeitsZeitOhneUeberstunden
510         * @param    normalkapazitaet
511         * @param    lohnkosten*/
512     }
513 
514     public void testLohnkosten()
515     {
516         assertEquals(0.0, Produktion.lohnkosten(0.0, 0.0), 0.0000000001);
517         assertEquals(200000.0, Produktion.lohnkosten(100000.0, 100000.0), 0.0000000001);
518     }
519 
520     public void testFertigungsLohnKostenGesamt()
521     {
522         assertEquals(0.0, Produktion.fertigungsLohnKostenGesamt(0.0, 0.0, 0.0, 0.0), 0.0000000001);
523         assertEquals(400000.0, Produktion.fertigungsLohnKostenGesamt(100000.0, 100000.0, 100000.0, 100000.0), 0.0000000001);
524     }
525 }