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.Finanzierung;
26  import org.fhw.cabaweb.data.dataobjects.ForschungUndEntwicklung;
27  import org.fhw.cabaweb.data.dataobjects.ProduktartAbhaengigkeiten;
28  import org.fhw.cabaweb.data.dataobjects.Verwaltungskosten;
29  
30  /***
31   * Klasse f&uuml;r den Test der Finanzierungsfunktionen
32   *
33   * @author	<a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
34   * @version	Version 1.0 11.-22.03.2004
35   */
36  public class FinanzierungTest extends TestCase
37  {
38  	private ArrayList forschungUndEntwicklungTabelle;
39  	private ArrayList produktArtAbhaengigkeitenTabelle;
40  	private ArrayList verwaltungTabelle;
41  
42  	public static void main(String args[])
43  	{
44  		//		junit.swingui.TestRunner.run(PasswordTest.class);
45  		junit.textui.TestRunner.run(PasswordTest.class);
46  	}
47  
48  	/*
49  	 * @see TestCase#setUp()
50  	 */
51  	protected void setUp() throws Exception
52  	{
53  		super.setUp();
54  
55  		produktArtAbhaengigkeitenTabelle = new ArrayList();
56  		forschungUndEntwicklungTabelle = new ArrayList();
57  		verwaltungTabelle = new ArrayList();
58  
59  		produktArtAbhaengigkeitenTabelle.add(0, new ProduktartAbhaengigkeiten(1, 0.0, 7.0, 2.0));
60  		produktArtAbhaengigkeitenTabelle.add(1, new ProduktartAbhaengigkeiten(2, 3.0, 7.5, 1.8));
61  		produktArtAbhaengigkeitenTabelle.add(2, new ProduktartAbhaengigkeiten(3, 5.0, 8.0, 1.6));
62  		produktArtAbhaengigkeitenTabelle.add(3, new ProduktartAbhaengigkeiten(4, 7.0, 8.5, 1.4));
63  		produktArtAbhaengigkeitenTabelle.add(4, new ProduktartAbhaengigkeiten(5, 9.0, 9.0, 1.2));
64  		produktArtAbhaengigkeitenTabelle.add(5, new ProduktartAbhaengigkeiten(6, 5.0, 9.5, 1.1));
65  		produktArtAbhaengigkeitenTabelle.add(6, new ProduktartAbhaengigkeiten(7, 10.0, 10.0, 1.0));
66  		produktArtAbhaengigkeitenTabelle.add(7, new ProduktartAbhaengigkeiten(8, 8.0, 10.5, 1.1));
67  		produktArtAbhaengigkeitenTabelle.add(8, new ProduktartAbhaengigkeiten(9, 12.0, 11.0, 1.2));
68  		produktArtAbhaengigkeitenTabelle.add(9, new ProduktartAbhaengigkeiten(10, 14.0, 11.5, 1.3));
69  
70  		forschungUndEntwicklungTabelle.add(0, new ForschungUndEntwicklung(0.0, -1));
71  		forschungUndEntwicklungTabelle.add(1, new ForschungUndEntwicklung(150000.0, 0));
72  		forschungUndEntwicklungTabelle.add(2, new ForschungUndEntwicklung(180000.0, 1));
73  		forschungUndEntwicklungTabelle.add(3, new ForschungUndEntwicklung(200000.0, 2));
74  		forschungUndEntwicklungTabelle.add(4, new ForschungUndEntwicklung(350000.0, 3));
75  		forschungUndEntwicklungTabelle.add(5, new ForschungUndEntwicklung(550000.0, 4));
76  		forschungUndEntwicklungTabelle.add(6, new ForschungUndEntwicklung(800000.0, 5));
77  		forschungUndEntwicklungTabelle.add(7, new ForschungUndEntwicklung(1000000.0, 6));
78  		forschungUndEntwicklungTabelle.add(8, new ForschungUndEntwicklung(1200000.0, 7));
79  		forschungUndEntwicklungTabelle.add(9, new ForschungUndEntwicklung(1400000.0, 8));
80  
81  		verwaltungTabelle.add(0, new Verwaltungskosten(100.0, 500000.0));
82  		verwaltungTabelle.add(1, new Verwaltungskosten(150.0, 550000.0));
83  		verwaltungTabelle.add(2, new Verwaltungskosten(200.0, 600000.0));
84  		verwaltungTabelle.add(3, new Verwaltungskosten(250.0, 700000.0));
85  		verwaltungTabelle.add(4, new Verwaltungskosten(300.0, 800000.0));
86  		verwaltungTabelle.add(5, new Verwaltungskosten(350.0, 1100000.0));
87  		verwaltungTabelle.add(5, new Verwaltungskosten(400.0, 1500000.0));
88  	}
89  
90  	public void testRealeForschungUndEntwicklung()
91  	{
92  		
93          assertEquals(0.0, Finanzierung.realeForschungUndEntwicklung(0.0, 1.0), 0.0000000001);
94  		assertEquals(232213.4387351779, Finanzierung.realeForschungUndEntwicklung(235000.0, 1.012), 0.0000000001);
95  	}
96  
97  	public void testWirksameForschungUndEntwicklung()
98  	{
99  
100 		assertEquals(0.0, Finanzierung.wirksameForschungUndEntwicklung(0.0, 0.0, 0.0), 0.0000000001);
101 		assertEquals(232000.0, Finanzierung.wirksameForschungUndEntwicklung(0.0, 0.0, 232000.0), 0.0000000001);
102 		assertEquals(155440.0, Finanzierung.wirksameForschungUndEntwicklung(0.33, 0.0, 232000.0), 0.0000000001);
103 		assertEquals(232000.0, Finanzierung.wirksameForschungUndEntwicklung(0.33, 232000.0, 232000.0), 0.0000000001);
104 		assertEquals(76560.0, Finanzierung.wirksameForschungUndEntwicklung(0.33, 232000.0, 0.0), 0.0000000001);
105 	}
106 
107 	public void testPraeferenzEffekt()
108 	{
109 
110 		assertEquals(0.0, Finanzierung.praeferenzEffekt(produktArtAbhaengigkeitenTabelle, 1), 0.0000000001);
111 		assertEquals(0.03, Finanzierung.praeferenzEffekt(produktArtAbhaengigkeitenTabelle, 2), 0.0000000001);
112 		assertEquals(0.05, Finanzierung.praeferenzEffekt(produktArtAbhaengigkeitenTabelle, 3), 0.0000000001);
113 		assertEquals(0.14, Finanzierung.praeferenzEffekt(produktArtAbhaengigkeitenTabelle, 10), 0.0000000001);
114 	}
115 
116 	public void testNominelleFertigunsstueckZeit()
117 	{
118 
119 		assertEquals(7.0, Finanzierung.nominelleFertigunsstueckZeit(produktArtAbhaengigkeitenTabelle, 1), 0.0000000001);
120 		assertEquals(7.5, Finanzierung.nominelleFertigunsstueckZeit(produktArtAbhaengigkeitenTabelle, 2), 0.0000000001);
121 		assertEquals(8.0, Finanzierung.nominelleFertigunsstueckZeit(produktArtAbhaengigkeitenTabelle, 3), 0.0000000001);
122 		assertEquals(
123 			11.50,
124 			Finanzierung.nominelleFertigunsstueckZeit(produktArtAbhaengigkeitenTabelle, 10),
125 			0.0000000001);
126 	}
127 
128 	public void testRohstoffVerbrauchProStueck()
129 	{
130 
131 		assertEquals(2.0, Finanzierung.rohstoffVerbrauchProStueck(produktArtAbhaengigkeitenTabelle, 1), 0.0000000001);
132 		assertEquals(1.8, Finanzierung.rohstoffVerbrauchProStueck(produktArtAbhaengigkeitenTabelle, 2), 0.0000000001);
133 		assertEquals(1.6, Finanzierung.rohstoffVerbrauchProStueck(produktArtAbhaengigkeitenTabelle, 3), 0.0000000001);
134 		assertEquals(1.3, Finanzierung.rohstoffVerbrauchProStueck(produktArtAbhaengigkeitenTabelle, 10), 0.0000000001);
135 	}
136 
137 	public void testProduktArt()
138 	{
139 
140 		assertEquals(1, Finanzierung.produktArt(0.0, forschungUndEntwicklungTabelle, 1, 10));
141 		assertEquals(1, Finanzierung.produktArt(149999.0, forschungUndEntwicklungTabelle, 1, 10));
142 		assertEquals(2, Finanzierung.produktArt(0.0, forschungUndEntwicklungTabelle, 3, 10));
143 		assertEquals(2, Finanzierung.produktArt(1.0, forschungUndEntwicklungTabelle, 3, 10));
144 		assertEquals(2, Finanzierung.produktArt(149999.0, forschungUndEntwicklungTabelle, 3, 10));
145 		assertEquals(3, Finanzierung.produktArt(150001.0, forschungUndEntwicklungTabelle, 3, 10));
146 		assertEquals(4, Finanzierung.produktArt(180001.0, forschungUndEntwicklungTabelle, 3, 10));
147 		assertEquals(9, Finanzierung.produktArt(1400001.0, forschungUndEntwicklungTabelle, 1, 10));
148 		assertEquals(10, Finanzierung.produktArt(1400001.0, forschungUndEntwicklungTabelle, 5, 10));
149 		assertEquals(10, Finanzierung.produktArt(150001.0, forschungUndEntwicklungTabelle, 10, 10));
150 		assertEquals(9, Finanzierung.produktArt(0.0, forschungUndEntwicklungTabelle, 10, 10));
151 	}
152 
153 	public void testDurchschnittlicherZinssatz()
154 	{
155 
156 		assertEquals(0.0, Finanzierung.durchschnittlicherZinssatz(0.0, 0.0, 7784000.0, 0.0), 0.0000000001);
157 		assertEquals(3.0, Finanzierung.durchschnittlicherZinssatz(3.0, 3.0, 7784000.0, 0.0), 0.0000000001);
158 		assertEquals(2.0, Finanzierung.durchschnittlicherZinssatz(3.0, 2.0, 7784000.0, 0.0), 0.0000000001);
159 		assertEquals(3.0, Finanzierung.durchschnittlicherZinssatz(2.0, 3.0, 7784000.0, 0.0), 0.0000000001);
160 		assertEquals(3.0, Finanzierung.durchschnittlicherZinssatz(3.0, 3.0, 5784000.0, 2000000.0), 0.0000000001);
161 		assertEquals(2.25, Finanzierung.durchschnittlicherZinssatz(3.0, 2.0, 6000000.0, 2000000.0), 0.0000000001);
162 		assertEquals(2.75, Finanzierung.durchschnittlicherZinssatz(2.0, 3.0, 6000000.0, 2000000.0), 0.0000000001);
163 		assertEquals(-220000, Finanzierung.durchschnittlicherZinssatz(2.0, 3.0, -6000000.0, -2000000.0), 0.0000000001);
164 	}
165 
166 	public void testZinssatzUeberziehungsKredit()
167 	{
168 
169 		assertEquals(3.0, Finanzierung.zinssatzUeberziehungsKredit(0.0, 0.0, 3.0), 0.0000000001);
170 		assertEquals(5.2092085857, Finanzierung.zinssatzUeberziehungsKredit(0.0, 8000000.0, 3.0), 0.0000000001);
171 		assertEquals(2.4554635815, Finanzierung.zinssatzUeberziehungsKredit(500000.0, 8000000.0, 3.0), 0.0000000001);
172 	}
173 
174 	public void testGrenzZinssatzUeberziehungskredit()
175 	{
176 
177 		assertEquals(3.0004999583, Finanzierung.grenzZinssatzUeberziehungskredit(0.0, 0.0, 3.0), 0.0000000001);
178 		assertEquals(6.2636410649, Finanzierung.grenzZinssatzUeberziehungskredit(0.0, 8000000.0, 3.0), 0.0000000001);
179 		assertEquals(
180 			3.5098960607,
181 			Finanzierung.grenzZinssatzUeberziehungskredit(500000.0, 8000000.0, 3.0),
182 			0.0000000001);
183 	}
184 
185 	public void testZinskostenUeberziehungskredit()
186 	{
187 
188 		assertEquals(0.0, Finanzierung.zinskostenUeberziehungskredit(0.0, 0.03), 0.0000000001);
189 		assertEquals(150000.0, Finanzierung.zinskostenUeberziehungskredit(5000000.0, 0.03), 0.0000000001);
190 		assertEquals(250000.0, Finanzierung.zinskostenUeberziehungskredit(10000000.0, 0.025), 0.0000000001);
191 	}
192 
193 	public void testZinskostenBankkredit()
194 	{
195 
196 		assertEquals(0.0, Finanzierung.zinskostenBankkredit(0.0, 0.03), 0.0000000001);
197 		assertEquals(150000.0, Finanzierung.zinskostenBankkredit(5000000.0, 0.03), 0.0000000001);
198 	}
199 
200 	public void testZinsenZuviel()
201 	{
202 
203 		assertEquals(0.0, Finanzierung.zinsenZuviel(0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0), 0.0000000001);
204 		assertEquals(
205 			201903.66078,
206 			Finanzierung.zinsenZuviel(-0.0, 3.0, 7741609.575, 0.0, -7741609.575, 8764076.174, 464825.946),
207 			0.0000000001);
208 	}
209 
210 	public void testUeberziehungsKreditOptimal()
211 	{
212 
213 		assertEquals(0.0, Finanzierung.ueberziehungsKreditOptimal(0.0, 3.0), 0.0000000001);
214 		assertEquals(2597000.0, Finanzierung.ueberziehungsKreditOptimal(200000.0, 3.0), 0.0000000001);
215 	}
216 
217 	public void testUeberziehungsKreditAenderungOptimal()
218 	{
219 
220 		assertEquals(0.0, Finanzierung.ueberziehungsKreditAenderungOptimal(0.0, 0.0), 0.0000000001);
221 		assertEquals(1691000.0, Finanzierung.ueberziehungsKreditAenderungOptimal(2597000.0, 906000.0), 0.0000000001);
222 	}
223 
224 	public void testVereinbarterKreditAenderungOptimal()
225 	{
226 
227 		assertEquals(0.0, Finanzierung.vereinbarterKreditAenderungOptimal(0.0, 0.0), 0.0000000001);
228 		assertEquals(-2597000.0, Finanzierung.vereinbarterKreditAenderungOptimal(0.0, 2597000.0), 0.0000000001);
229 		assertEquals(+1000000.0, Finanzierung.vereinbarterKreditAenderungOptimal(3597000.0, 2597000.0), 0.0000000001);
230 	}
231 
232 	public void testBruttoDividende()
233 	{
234 
235 		assertEquals(0.0, Finanzierung.bruttoDividende(0.0, 0.0), 0.0000000001);
236 	}
237 
238 	public void testSteuernAufBruttoDividende()
239 	{
240 
241 		assertEquals(0.0, Finanzierung.steuernAufBruttoDividende(0.0, 0.0), 0.0000000001);
242 	}
243 
244 	public void testNettoDividende()
245 	{
246 
247 		assertEquals(0.0, Finanzierung.nettoDividende(0.0, 0.0), 0.0000000001);
248 	}
249 
250 	public void testRestbetragVorSteuern()
251 	{
252 
253 		assertEquals(0.0, Finanzierung.restbetragVorSteuern(0.0, 0.0), 0.0000000001);
254 	}
255 
256 	public void testSteuernAufRestbetrag()
257 	{
258 
259 		assertEquals(0.0, Finanzierung.steuernAufRestbetrag(0.0, 0.0), 0.0000000001);
260 	}
261 
262 	public void testRuecklagenzufuehrung()
263 	{
264 
265 		assertEquals(0.0, Finanzierung.ruecklagenzufuehrung(0.0, 0.0), 0.0000000001);
266 	}
267 
268 	public void testAnlageVermoegen()
269 	{
270 
271 		assertEquals(0.0, Finanzierung.anlageVermoegen(0.0, 0.0, 0.0), 0.0000000001);
272 		assertEquals(6250000.0, Finanzierung.anlageVermoegen(5000000.0, 250000.0, 1000000.0), 0.0000000001);
273 		assertEquals(5750000.0, Finanzierung.anlageVermoegen(5000000.0, -250000.0, 1000000.0), 0.0000000001);
274 	}
275 
276 	public void testKasse()
277 	{
278 
279 		assertEquals(0.0, Finanzierung.kasse(0.0, 0.0, 0.0, 0.0, 0.0, 0.0), 0.0000000001);
280 		assertEquals(
281 			3000000.0,
282 			Finanzierung.kasse(0.0, 1000000.0, 500000.0, 2500000.0, 500000.0, -500000.0),
283 			0.0000000001);
284 		assertEquals(0.0, Finanzierung.kasse(0.0, 0.0, 1000000.0, 0.0, 350000.0, -250000.0), 0.0000000001);
285 	}
286 
287 	public void testKapitalerhoehung()
288 	{
289 
290 		assertEquals(0.0, Finanzierung.kapitalerhoehung(0.0, 0.0), 0.0000000001);
291 		assertEquals(200000.0, Finanzierung.kapitalerhoehung(250000.0, 100000.0), 0.0000000001);
292 		assertEquals(200000.0, Finanzierung.kapitalerhoehung(100000.0, 250000.0), 0.0000000001);
293 		assertEquals(0.0, Finanzierung.kapitalerhoehung(0.0, 10000000.0), 0.0000000001);
294 		assertEquals(10.0, Finanzierung.kapitalerhoehung(5.0, 10000000.0), 0.0000000001);
295 	}
296 
297 	public void testAktiva()
298 	{
299 
300 		assertEquals(0.0, Finanzierung.aktiva(0.0, 0.0, 0.0, 0.0, 0.0), 0.0000000001);
301 		assertEquals(500000.0, Finanzierung.aktiva(100000.0, 100000.0, 100000.0, 100000.0, 100000.0), 0.0000000001);
302 		assertEquals(400000.0, Finanzierung.aktiva(50000.0, 100000.0, 50000.0, 100000.0, 100000.0), 0.0000000001);
303 	}
304 
305 	public void testPassiva()
306 	{
307 
308 		assertEquals(0.0, Finanzierung.passiva(0.0, 0.0, 0.0, 0.0), 0.0000000001);
309 		assertEquals(400000.0, Finanzierung.passiva(100000.0, 100000.0, 100000.0, 100000.0), 0.0000000001);
310 		assertEquals(300000.0, Finanzierung.passiva(50000.0, 100000.0, 50000.0, 100000.0), 0.0000000001);
311 	}
312 
313 	public void testEigenKapital()
314 	{
315 
316 		assertEquals(0.0, Finanzierung.eigenKapital(0.0, 0.0, 0.0, 0.0), 0.0000000001);
317 		assertEquals(700000.0, Finanzierung.eigenKapital(1000000.0, 100000.0, 100000.0, 100000.0), 0.0000000001);
318 		assertEquals(-300000.0, Finanzierung.eigenKapital(0.0, 100000.0, 100000.0, 100000.0), 0.0000000001);
319 	}
320 
321 	public void testUnverzinslicheVerbindlichkeiten()
322 	{
323 
324 		assertEquals(0.0, Finanzierung.unverzinslicheVerbindlichkeiten(0.0, 0.0, 0.0, 0.0, 0.0, 0.0), 0.0000000001);
325 		assertEquals(
326 			600000.0,
327 			Finanzierung.unverzinslicheVerbindlichkeiten(100000.0, 100000.0, 100000.0, 100000.0, 100000.0, 100000.0),
328 			0.0000000001);
329 		assertEquals(
330 			450000.0,
331 			Finanzierung.unverzinslicheVerbindlichkeiten(100000.0, 50000.0, 100000.0, 50000.0, 100000.0, 50000.0),
332 			0.0000000001);
333 	}
334 
335 	public void testUeberziehungsKredit()
336 	{
337 
338 		assertEquals(0.0, Finanzierung.ueberziehungsKredit(0.0, 0.0, 0.0, 0.0, 0.0, 0.0), 0.0000000001);
339 		assertEquals(
340 			17775.0,
341 			Finanzierung.ueberziehungsKredit(9999.0, 8888.0, 100000.0, 99999.0, 100000.0, 1111.0),
342 			0.0000000001);
343 		assertEquals(
344 			117775.0,
345 			Finanzierung.ueberziehungsKredit(9999.0, 8888.0, -100000.0, 99999.0, 0.0, 1111.0),
346 			0.0000000001);
347 		assertEquals(
348 			0.0,
349 			Finanzierung.ueberziehungsKredit(-9999.0, -8888.0, 100000.0, -99999.0, 100000.0, -1111.0),
350 			0.0000000001);
351 	}
352 
353 	public void testVereinbartKredit()
354 	{
355 
356 		assertEquals(0.0, Finanzierung.vereinbartKredit(0.0, 0.0), 0.0000000001);
357 		assertEquals(200000.0, Finanzierung.vereinbartKredit(100000.0, 100000.0), 0.0000000001);
358 		assertEquals(0.0, Finanzierung.vereinbartKredit(100000.0, -100000.0), 0.0000000001);
359 		assertEquals(0.0, Finanzierung.vereinbartKredit(0.0, -100000.0), 0.0000000001);
360 	}
361 
362 	public void testErfolgVorSteuern()
363 	{
364 
365 		assertEquals(
366 			0.0,
367 			Finanzierung.erfolgVorSteuern(
368 				0.0,
369 				0.0,
370 				0.0,
371 				0.0,
372 				0.0,
373 				0.0,
374 				0.0,
375 				0.0,
376 				0.0,
377 				0.0,
378 				0.0,
379 				0.0,
380 				0.0,
381 				0.0,
382 				0.0,
383 				0.0,
384 				0.0,
385 				0.0,
386 				0.0,
387 				0.0,
388 				0.0,
389 				0.0,
390 				0.0),
391 			0.0000000001);
392 		assertEquals(
393 			4300000.0,
394 			Finanzierung.erfolgVorSteuern(
395 				100000.0,
396 				100000.0,
397 				100000.0,
398 				600000.0,
399 				100000.0,
400 				100000.0,
401 				100000.0,
402 				100000.0,
403 				600000.0,
404 				100000.0,
405 				100000.0,
406 				100000.0,
407 				100000.0,
408 				600000.0,
409 				100000.0,
410 				100000.0,
411 				100000.0,
412 				100000.0,
413 				600000.0,
414 				100000.0,
415 				100000.0,
416 				100000.0,
417 				100000.0),
418 			0.0000000001);
419 	}
420 
421 	public void testLiquiditaetswirksamerErfolgOhneZinsen()
422 	{
423 
424 		assertEquals(
425 			0.0,
426 			Finanzierung.liquiditaetswirksamerErfolgOhneZinsen(
427 				0.0,
428 				0.0,
429 				0.0,
430 				0.0,
431 				0.0,
432 				0.0,
433 				0.0,
434 				0.0,
435 				0.0,
436 				0.0,
437 				0.0,
438 				0.0,
439 				0.0,
440 				0.0,
441 				0.0,
442 				0.0,
443 				0.0),
444 			0.0000000001);
445 		assertEquals(
446 			3200000.0,
447 			Finanzierung.liquiditaetswirksamerErfolgOhneZinsen(
448 				100000.0,
449 				100000.0,
450 				100000.0,
451 				100000.0,
452 				600000.0,
453 				100000.0,
454 				100000.0,
455 				100000.0,
456 				100000.0,
457 				600000.0,
458 				100000.0,
459 				100000.0,
460 				100000.0,
461 				100000.0,
462 				600000.0,
463 				100000.0,
464 				100000.0),
465 			0.0000000001);
466 	}
467 
468 	public void testZusaetzlicherKapitalbedarf()
469 	{
470 
471 		assertEquals(0.0, Finanzierung.zusaetzlicherKapitalbedarf(0.0, 0.0), 0.0000000001);
472 		assertEquals(400000.0, Finanzierung.zusaetzlicherKapitalbedarf(1000000.0, 600000.0), 0.0000000001);
473 		assertEquals(-100000.0, Finanzierung.zusaetzlicherKapitalbedarf(500000.0, 600000.0), 0.0000000001);
474 	}
475 
476 	public void testLiquiditaetswirksamerErfolg()
477 	{
478 
479 		assertEquals(
480 			0.0,
481 			Finanzierung.liquiditaetswirksamerErfolg(
482 				0.0,
483 				0.0,
484 				0.0,
485 				0.0,
486 				0.0,
487 				0.0,
488 				0.0,
489 				0.0,
490 				0.0,
491 				0.0,
492 				0.0,
493 				0.0,
494 				0.0,
495 				0.0,
496 				0.0,
497 				0.0,
498 				0.0,
499 				0.0,
500 				0.0),
501 			0.0000000001);
502 		assertEquals(
503 			3400000.0,
504 			Finanzierung.liquiditaetswirksamerErfolg(
505 				100000.0,
506 				100000.0,
507 				100000.0,
508 				100000.0,
509 				600000.0,
510 				100000.0,
511 				100000.0,
512 				100000.0,
513 				100000.0,
514 				600000.0,
515 				100000.0,
516 				100000.0,
517 				100000.0,
518 				100000.0,
519 				600000.0,
520 				100000.0,
521 				100000.0,
522 				100000.0,
523 				100000.0),
524 			0.0000000001);
525 	}
526 
527 	public void testLiquiditaetsaenderung()
528 	{
529 
530 		assertEquals(0.0, Finanzierung.liquiditaetsaenderung(0.0, 0.0, 0.0, 0.0, 0.0), 0.0000000001);
531 		assertEquals(
532 			500000.0,
533 			Finanzierung.liquiditaetsaenderung(100000.0, 100000.0, 100000.0, 100000.0, 100000.0),
534 			0.0000000001);
535 	}
536 
537 	public void testVollkosten()
538 	{
539 
540 		assertEquals(0.0, Finanzierung.vollkosten(0.0, 0.0, 0.0), 0.0000000001);
541 		assertEquals(3.0, Finanzierung.vollkosten(1.0, 1.0, 1.0), 0.0000000001);
542 	}
543 
544 	public void testHerstellEinzelKosten()
545 	{
546 
547 		assertEquals(0.0, Finanzierung.herstellEinzelKosten(0.0, 0.0, 0.0), 0.0000000001);
548 		assertEquals(3.0, Finanzierung.herstellEinzelKosten(1.0, 1.0, 1.0), 0.0000000001);
549 	}
550 
551 	public void testVertriebskosten()
552 	{
553 
554 		assertEquals(0.0, Finanzierung.vertriebskosten(0.0, 0.0, 0.0), 0.0000000001);
555 		assertEquals(3.0, Finanzierung.vertriebskosten(1.0, 1.0, 1.0), 0.0000000001);
556 	}
557 
558 	public void testHerstellGemeinKosten()
559 	{
560 
561 		assertEquals(0.0, Finanzierung.herstellGemeinKosten(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), 0.0000000001);
562 		assertEquals(
563 			700000.0,
564 			Finanzierung.herstellGemeinKosten(100000.0, 100000.0, 100000.0, 100000.0, 100000.0, 100000.0, 100000.0),
565 			0.0000000001);
566 	}
567 
568 	public void testVertriebsKostenMarketing()
569 	{
570 
571 		assertEquals(0.0, Finanzierung.vertriebsKostenMarketing(0.0, 0.0), 0.0000000001);
572 		assertEquals(100000.0, Finanzierung.vertriebsKostenMarketing(100000.0, -10000.0), 0.0000000001);
573 		assertEquals(10.0, Finanzierung.vertriebsKostenMarketing(100000.0, 10000.0), 0.0000000001);
574 	}
575 
576 	public void testVertriebsKostenLagerungFertigprodukte()
577 	{
578 
579 		assertEquals(0.0, Finanzierung.vertriebsKostenLagerungFertigprodukte(0.0, 0.0), 0.0000000001);
580 		assertEquals(100000.0, Finanzierung.vertriebsKostenLagerungFertigprodukte(100000.0, -10000.0), 0.0000000001);
581 		assertEquals(10.0, Finanzierung.vertriebsKostenLagerungFertigprodukte(100000.0, 10000.0), 0.0000000001);
582 	}
583 
584 	public void testVertriebsKostenBeratungUndMarktforschung()
585 	{
586 
587 		assertEquals(0.0, Finanzierung.vertriebsKostenBeratungUndMarktforschung(0.0, 0.0, 0.0), 0.0000000001);
588 		assertEquals(
589 			100000.0,
590 			Finanzierung.vertriebsKostenBeratungUndMarktforschung(50000.0, 50000.0, -10000.0),
591 			0.0000000001);
592 		assertEquals(
593 			10.0,
594 			Finanzierung.vertriebsKostenBeratungUndMarktforschung(50000.0, 50000.0, 10000.0),
595 			0.0000000001);
596 	}
597 
598 	public void testHerstellEinzelKostenLoehne()
599 	{
600 
601 		assertEquals(0.0, Finanzierung.herstellEinzelKostenLoehne(0.0, 0.0), 0.0000000001);
602 		assertEquals(100000.0, Finanzierung.herstellEinzelKostenLoehne(100000.0, -10000.0), 0.0000000001);
603 		assertEquals(10.0, Finanzierung.herstellEinzelKostenLoehne(100000.0, 10000.0), 0.0000000001);
604 	}
605 
606 	public void testHerstellEinzelKostenUeberstunden()
607 	{
608 
609 		assertEquals(0.0, Finanzierung.herstellEinzelKostenUeberstunden(0.0, 0.0), 0.0000000001);
610 		assertEquals(100000.0, Finanzierung.herstellEinzelKostenUeberstunden(100000.0, -10000.0), 0.0000000001);
611 		assertEquals(10.0, Finanzierung.herstellEinzelKostenUeberstunden(100000.0, 10000.0), 0.0000000001);
612 	}
613 
614 	public void testHerstellEinzelKostenRohstoffe()
615 	{
616 
617 		assertEquals(0.0, Finanzierung.herstellEinzelKostenRohstoffe(0.0, 0.0), 0.0000000001);
618 		assertEquals(100000.0, Finanzierung.herstellEinzelKostenRohstoffe(100000.0, -10000.0), 0.0000000001);
619 		assertEquals(10.0, Finanzierung.herstellEinzelKostenRohstoffe(100000.0, 10000.0), 0.0000000001);
620 	}
621 
622 	public void testHerstellGemeinKostenRohstoffe()
623 	{
624 
625 		assertEquals(0.0, Finanzierung.herstellGemeinKostenRohstoffe(0.0, 0.0, 0.0), 0.0000000001);
626 		assertEquals(100000.0, Finanzierung.herstellGemeinKostenRohstoffe(50000.0, 50000.0, -10000.0), 0.0000000001);
627 		assertEquals(10.0, Finanzierung.herstellGemeinKostenRohstoffe(50000.0, 50000.0, 10000.0), 0.0000000001);
628 	}
629 
630 	public void testHerstellGemeinKostenAbschreibungUndAnlagenprojektierung()
631 	{
632 
633 		assertEquals(
634 			0.0,
635 			Finanzierung.herstellGemeinKostenAbschreibungUndAnlagenprojektierung(0.0, 0.0, 0.0),
636 			0.0000000001);
637 		assertEquals(
638 			100000.0,
639 			Finanzierung.herstellGemeinKostenAbschreibungUndAnlagenprojektierung(50000.0, 50000.0, -10000.0),
640 			0.0000000001);
641 		assertEquals(
642 			10.0,
643 			Finanzierung.herstellGemeinKostenAbschreibungUndAnlagenprojektierung(50000.0, 50000.0, 10000.0),
644 			0.0000000001);
645 	}
646 
647 	public void testHerstellGemeinKostenQualitaetssicherung()
648 	{
649 
650 		assertEquals(0.0, Finanzierung.herstellGemeinKostenQualitaetssicherung(0.0, 0.0), 0.0000000001);
651 		assertEquals(100000.0, Finanzierung.herstellGemeinKostenQualitaetssicherung(100000.0, -10000.0), 0.0000000001);
652 		assertEquals(10.0, Finanzierung.herstellGemeinKostenQualitaetssicherung(100000.0, 10000.0), 0.0000000001);
653 	}
654 
655 	public void testHerstellGemeinKostenSchichtwechsel()
656 	{
657 
658 		assertEquals(0.0, Finanzierung.herstellGemeinKostenSchichtwechsel(0.0, 0.0), 0.0000000001);
659 		assertEquals(100000.0, Finanzierung.herstellGemeinKostenSchichtwechsel(100000.0, -10000.0), 0.0000000001);
660 		assertEquals(10.0, Finanzierung.herstellGemeinKostenSchichtwechsel(100000.0, 10000.0), 0.0000000001);
661 	}
662 
663 	public void testHerstellGemeinKostenForschungUndEntwicklung()
664 	{
665 
666 		assertEquals(0.0, Finanzierung.herstellGemeinKostenForschungUndEntwicklung(0.0, 0.0), 0.0000000001);
667 		assertEquals(
668 			100000.0,
669 			Finanzierung.herstellGemeinKostenForschungUndEntwicklung(100000.0, -10000.0),
670 			0.0000000001);
671 		assertEquals(10.0, Finanzierung.herstellGemeinKostenForschungUndEntwicklung(100000.0, 10000.0), 0.0000000001);
672 	}
673 
674 	public void testHerstellGemeinKostenZinsen()
675 	{
676 
677 		assertEquals(0.0, Finanzierung.herstellGemeinKostenZinsen(0.0, 0.0, 0.0), 0.0000000001);
678 		assertEquals(100000.0, Finanzierung.herstellGemeinKostenZinsen(50000.0, 50000.0, -10000.0), 0.0000000001);
679 		assertEquals(10.0, Finanzierung.herstellGemeinKostenZinsen(50000.0, 50000.0, 10000.0), 0.0000000001);
680 	}
681 
682 	public void testHerstellGemeinKostenVerwaltung()
683 	{
684 
685 		assertEquals(0.0, Finanzierung.herstellGemeinKostenVerwaltung(0.0, 0.0), 0.0000000001);
686 		assertEquals(100000.0, Finanzierung.herstellGemeinKostenVerwaltung(100000.0, -10000.0), 0.0000000001);
687 		assertEquals(10.0, Finanzierung.herstellGemeinKostenVerwaltung(100000.0, 10000.0), 0.0000000001);
688 	}
689 
690 	public void testGewinn()
691 	{
692 
693 		assertEquals(0.0, Finanzierung.gewinn(0.0, 0.0), 0.0000000001);
694 		assertEquals(90000.0, Finanzierung.gewinn(100000.0, -10000.0), 0.0000000001);
695 		assertEquals(110000.0, Finanzierung.gewinn(100000.0, 10000.0), 0.0000000001);
696 	}
697 
698 	public void testProduktionInDerLetztenZone()
699 	{
700 
701 		assertEquals(400000.0, Finanzierung.produktionInDerLetztenZone(0.0, 400000.0), 0.0000000001);
702 		assertEquals(400000.0, Finanzierung.produktionInDerLetztenZone(99.99, 400000.0), 0.0000000001);
703 		assertEquals(39.9960004, Finanzierung.produktionInDerLetztenZone(100.01, 400000.0), 0.0000000001);
704 		assertEquals(133315.5543702914, Finanzierung.produktionInDerLetztenZone(149.99, 400000.0), 0.0000000001);
705 		assertEquals(26.6648890074, Finanzierung.produktionInDerLetztenZone(150.01, 400000.0), 0.0000000001);
706 		assertEquals(99984.9992499625, Finanzierung.produktionInDerLetztenZone(199.99, 400000.0), 0.0000000001);
707 		assertEquals(19.99900005, Finanzierung.produktionInDerLetztenZone(200.01, 400000.0), 0.0000000001);
708 		assertEquals(79987.1994879795, Finanzierung.produktionInDerLetztenZone(249.99, 400000.0), 0.0000000001);
709 		assertEquals(15.9993600256, Finanzierung.produktionInDerLetztenZone(250.01, 400000.0), 0.0000000001);
710 		assertEquals(66655.5551851729, Finanzierung.produktionInDerLetztenZone(299.99, 400000.0), 0.0000000001);
711 		assertEquals(13.3328889037, Finanzierung.produktionInDerLetztenZone(300.01, 400000.0), 0.0000000001);
712 	}
713 
714 	public void testGrenzHerstellKosten()
715 	{
716 
717 		assertEquals(0.0, Finanzierung.grenzHerstellKosten(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), 0.0000000001);
718 		assertEquals(6.0, Finanzierung.grenzHerstellKosten(0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), 0.0000000001);
719 		assertEquals(6.0, Finanzierung.grenzHerstellKosten(100.01, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), 0.0000000001);
720 		assertEquals(9.0, Finanzierung.grenzHerstellKosten(0.0, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5), 0.0000000001);
721 	}
722 
723 	public void testGrenzHerstellKostenLoehne()
724 	{
725 
726 		assertEquals(0.0, Finanzierung.grenzHerstellKostenLoehne(0.0, 0.0, 0.0), 0.0000000001);
727 		assertEquals(2.0, Finanzierung.grenzHerstellKostenLoehne(100.01, 800000.0, 400000.0), 0.0000000001);
728 		assertEquals(2.0, Finanzierung.grenzHerstellKostenLoehne(199.99, 800000.0, 400000.0), 0.0000000001);
729 		assertEquals(2.0, Finanzierung.grenzHerstellKostenLoehne(200.01, 800000.0, 400000.0), 0.0000000001);
730 	}
731 
732 	public void testGrenzHerstellKostenUeberstunden()
733 	{
734 
735 		assertEquals(0.0, Finanzierung.grenzHerstellKostenUeberstunden(0.0, 0.0, 0.0), 0.0000000001);
736 		assertEquals(0.0, Finanzierung.grenzHerstellKostenUeberstunden(99.99, 100000.0, 400000.0), 0.0000000001);
737 		assertEquals(1000.0, Finanzierung.grenzHerstellKostenUeberstunden(100.01, 100000.0, 100.0), 0.0000000001);
738 	}
739 
740 	public void testGrenzHerstellKostenRohstoffe()
741 	{
742 
743 		assertEquals(0.0, Finanzierung.grenzHerstellKostenRohstoffe(0.0, 0.0, 0.0), 0.0000000001);
744 		assertEquals(1.0, Finanzierung.grenzHerstellKostenRohstoffe(99.99, 100000.0, 100000.0), 0.0000000001);
745 		assertEquals(2.0, Finanzierung.grenzHerstellKostenRohstoffe(101.01, 400000.0, 200000.0), 0.0000000001);
746 	}
747 
748 	public void testGrenzHerstellKostenQualitaetssicherung()
749 	{
750 
751 		assertEquals(0.0, Finanzierung.grenzHerstellKostenQualitaetssicherung(0.0, 0.0, 0.0), 0.0000000001);
752 		assertEquals(1.0, Finanzierung.grenzHerstellKostenQualitaetssicherung(99.99, 100000.0, 100000.0), 0.0000000001);
753 		assertEquals(
754 			2.0,
755 			Finanzierung.grenzHerstellKostenQualitaetssicherung(100.01, 400000.0, 200000.0),
756 			0.0000000001);
757 	}
758 
759 	public void testGrenzHerstellKostenSchichtwechsel()
760 	{
761         assertEquals(0.0, Finanzierung.grenzHerstellKostenSchichtwechsel(0.0, 0.0, 0.0), 0.0000000001);
762 		assertEquals(0.0, Finanzierung.grenzHerstellKostenSchichtwechsel(99.99, 100000.0, 100000.0), 0.0000000001);
763 		assertEquals(1.0, Finanzierung.grenzHerstellKostenSchichtwechsel(100.01, 100000.0, 100000.0), 0.0000000001);
764 		assertEquals(100000.0, Finanzierung.grenzHerstellKostenSchichtwechsel(150.00, 100000.0, 0.0), 0.0000000001);
765 		assertEquals(
766 			100000.0,
767 			Finanzierung.grenzHerstellKostenSchichtwechsel(150.00, 100000.0, -10000.0),
768 			0.0000000001);
769 	}
770 
771 	public void testGrenzHerstellKostenVerwaltung()
772 	{
773 
774 		assertEquals(
775 			0.0,
776 			Finanzierung.grenzHerstellKostenVerwaltung(1.0, 99.99, 500000.0, 400000.0, verwaltungTabelle),
777 			0.0000000001);
778 		assertEquals(
779 			250.0,
780 			Finanzierung.grenzHerstellKostenVerwaltung(1.0, 100.01, 550000.0, 200.0, verwaltungTabelle),
781 			0.0000000001);
782 		assertEquals(
783 			1000.0,
784 			Finanzierung.grenzHerstellKostenVerwaltung(1.0, 200.01, 700000.0, 100.0, verwaltungTabelle),
785 			0.0000000001);
786 		assertEquals(
787 			2.0,
788 			Finanzierung.grenzHerstellKostenVerwaltung(1.0, 199.99, 600000.0, 25000.0, verwaltungTabelle),
789 			0.0000000001);
790 	}
791 
792 	public void testGrenzGewinn()
793 	{
794 		assertEquals(0.0, Finanzierung.grenzGewinn(0.0, 0.0, 0.0), 0.0000000001);
795 		assertEquals(-0.10, Finanzierung.grenzGewinn(6.65, -2.15, -4.60), 0.0000000001);
796 		assertEquals(-0.20, Finanzierung.grenzGewinn(6.65, -2.25, -4.60), 0.0000000001);
797 		assertEquals(1.89, Finanzierung.grenzGewinn(6.65, -1.22, -3.54), 0.0000000001);
798 	}
799 
800 }