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 junit.framework.TestCase;
23  import java.util.ArrayList;
24  
25  import org.fhw.cabaweb.math.Vertrieb;
26  import org.fhw.cabaweb.data.dataobjects.GruppeWert;
27  import org.fhw.cabaweb.data.dataobjects.Marketingeffekt;
28  import org.fhw.cabaweb.data.dataobjects.Marktforschung;
29  import org.fhw.cabaweb.data.dataobjects.PreisAbsatz;
30  
31  /***
32   * Klasse f&uuml;r den Test der Vertriebsberechnungsfunktionen
33   *
34   * @author	<a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
35   * @version	Version 1.0 06-10.03.2004
36   */
37  public class VertriebTest extends TestCase
38  {
39      private ArrayList preisAbsatzTabelle;
40      private ArrayList marketingTabelle;
41      private ArrayList marktforschungTabelle;
42      private ArrayList absetzbareMengenTabelle;
43      private ArrayList fertigProdukteTabelle;
44      private ArrayList tatsaechlicherAbsatzTabelle;
45      private ArrayList umsatzTabelle;
46      private ArrayList wirksamerPreisTabelle;
47  
48  	public static void main(String args[])
49  	{
50          //      junit.swingui.TestRunner.run(VertriebTest.class);
51          junit.textui.TestRunner.run(VertriebTest.class);
52  	}
53  
54  	/*
55  	 * @see TestCase#setUp()
56  	 */
57  	protected void setUp() throws Exception
58  	{
59  		super.setUp();
60  
61  		preisAbsatzTabelle = new ArrayList();
62  		marketingTabelle = new ArrayList();
63  		marktforschungTabelle = new ArrayList();
64  		absetzbareMengenTabelle = new ArrayList();
65  		wirksamerPreisTabelle = new ArrayList();
66  		umsatzTabelle = new ArrayList();
67  		tatsaechlicherAbsatzTabelle = new ArrayList();
68  		fertigProdukteTabelle = new ArrayList();
69  
70  		preisAbsatzTabelle.add(0, new PreisAbsatz(4.50, 950000));
71  		preisAbsatzTabelle.add(1, new PreisAbsatz(5.00, 800000));
72  		preisAbsatzTabelle.add(2, new PreisAbsatz(5.50, 600000));
73  		preisAbsatzTabelle.add(3, new PreisAbsatz(6.00, 470000));
74  		preisAbsatzTabelle.add(4, new PreisAbsatz(6.50, 450000));
75  		preisAbsatzTabelle.add(5, new PreisAbsatz(7.00, 430000));
76  		preisAbsatzTabelle.add(6, new PreisAbsatz(7.50, 330000));
77  		preisAbsatzTabelle.add(7, new PreisAbsatz(8.00, 250000));
78  		preisAbsatzTabelle.add(8, new PreisAbsatz(8.50, 150000));
79  		preisAbsatzTabelle.add(9, new PreisAbsatz(9.00, 0));
80  
81  		marketingTabelle.add(0, new Marketingeffekt(0.00, -0.20));
82  		marketingTabelle.add(1, new Marketingeffekt(0.02, -0.10));
83  		marketingTabelle.add(2, new Marketingeffekt(0.04, 0.00));
84  		marketingTabelle.add(3, new Marketingeffekt(0.06, 0.04));
85  		marketingTabelle.add(4, new Marketingeffekt(0.08, 0.07));
86  		marketingTabelle.add(5, new Marketingeffekt(0.10, 0.09));
87  		marketingTabelle.add(6, new Marketingeffekt(0.12, 0.11));
88  		marketingTabelle.add(7, new Marketingeffekt(0.14, 0.13));
89  		marketingTabelle.add(8, new Marketingeffekt(0.17, 0.15));
90  		marketingTabelle.add(9, new Marketingeffekt(0.20, 0.17));
91  
92  		marktforschungTabelle.add(0, new Marktforschung(0, 0.0));
93  		marktforschungTabelle.add(1, new Marktforschung(1, 20000.0));
94  		marktforschungTabelle.add(2, new Marktforschung(2, 30000.0));
95  		marktforschungTabelle.add(3, new Marktforschung(3, 40000.0));
96  		marktforschungTabelle.add(4, new Marktforschung(4, 50000.0));
97  		marktforschungTabelle.add(5, new Marktforschung(5, 60000.0));
98  
99          absetzbareMengenTabelle.add(0, new GruppeWert(new Integer(1), new Double(400000.00)));
100 		absetzbareMengenTabelle.add(1, new GruppeWert(new Integer(2), new Double(200000.00)));
101 		absetzbareMengenTabelle.add(2, new GruppeWert(new Integer(3), new Double(400000.00)));
102 		absetzbareMengenTabelle.add(3, new GruppeWert(new Integer(4), new Double(200000.00)));
103 		absetzbareMengenTabelle.add(4, new GruppeWert(new Integer(5), new Double(400000.00)));
104 		absetzbareMengenTabelle.add(5, new GruppeWert(new Integer(6), new Double(200000.00)));
105 		absetzbareMengenTabelle.add(6, new GruppeWert(new Integer(7), new Double(400000.00)));
106 		absetzbareMengenTabelle.add(7, new GruppeWert(new Integer(8), new Double(200000.00)));
107 		absetzbareMengenTabelle.add(8, new GruppeWert(new Integer(9), new Double(400000.00)));
108 		absetzbareMengenTabelle.add(9, new GruppeWert(new Integer(10), new Double(200000.00)));
109 
110 		wirksamerPreisTabelle.add(0, new GruppeWert(new Integer(1), new Double(6.65)));
111 		wirksamerPreisTabelle.add(1, new GruppeWert(new Integer(2), new Double(5.85)));
112 		wirksamerPreisTabelle.add(2, new GruppeWert(new Integer(3), new Double(6.65)));
113 		wirksamerPreisTabelle.add(3, new GruppeWert(new Integer(4), new Double(5.85)));
114 		wirksamerPreisTabelle.add(4, new GruppeWert(new Integer(5), new Double(6.65)));
115 		wirksamerPreisTabelle.add(5, new GruppeWert(new Integer(6), new Double(5.85)));
116 		wirksamerPreisTabelle.add(6, new GruppeWert(new Integer(7), new Double(6.65)));
117 		wirksamerPreisTabelle.add(7, new GruppeWert(new Integer(8), new Double(5.85)));
118 		wirksamerPreisTabelle.add(8, new GruppeWert(new Integer(9), new Double(6.65)));
119 		wirksamerPreisTabelle.add(9, new GruppeWert(new Integer(10), new Double(5.85)));
120 
121 		umsatzTabelle.add(0, new GruppeWert(new Integer(1), new Double(4000000.00)));
122 		umsatzTabelle.add(1, new GruppeWert(new Integer(2), new Double(2000000.00)));
123 		umsatzTabelle.add(2, new GruppeWert(new Integer(3), new Double(4000000.00)));
124 		umsatzTabelle.add(3, new GruppeWert(new Integer(4), new Double(2000000.00)));
125 		umsatzTabelle.add(4, new GruppeWert(new Integer(5), new Double(4000000.00)));
126 		umsatzTabelle.add(5, new GruppeWert(new Integer(6), new Double(2000000.00)));
127 		umsatzTabelle.add(6, new GruppeWert(new Integer(7), new Double(4000000.00)));
128 		umsatzTabelle.add(7, new GruppeWert(new Integer(8), new Double(2000000.00)));
129 		umsatzTabelle.add(8, new GruppeWert(new Integer(9), new Double(4000000.00)));
130 		umsatzTabelle.add(9, new GruppeWert(new Integer(10), new Double(2000000.00)));
131 
132         tatsaechlicherAbsatzTabelle.add(0, new GruppeWert(new Integer(1), new Double(400000.00)));
133 		tatsaechlicherAbsatzTabelle.add(1, new GruppeWert(new Integer(2), new Double(100000.00)));
134 		tatsaechlicherAbsatzTabelle.add(2, new GruppeWert(new Integer(3), new Double(400000.00)));
135 		tatsaechlicherAbsatzTabelle.add(3, new GruppeWert(new Integer(4), new Double(100000.00)));
136 		tatsaechlicherAbsatzTabelle.add(4, new GruppeWert(new Integer(5), new Double(400000.00)));
137 		tatsaechlicherAbsatzTabelle.add(5, new GruppeWert(new Integer(6), new Double(100000.00)));
138 		tatsaechlicherAbsatzTabelle.add(6, new GruppeWert(new Integer(7), new Double(400000.00)));
139 		tatsaechlicherAbsatzTabelle.add(7, new GruppeWert(new Integer(8), new Double(100000.00)));
140 		tatsaechlicherAbsatzTabelle.add(8, new GruppeWert(new Integer(9), new Double(400000.00)));
141 		tatsaechlicherAbsatzTabelle.add(9, new GruppeWert(new Integer(10), new Double(100000.00)));
142 
143 		fertigProdukteTabelle.add(0, new GruppeWert(new Integer(1), new Double(400000.00)));
144 		fertigProdukteTabelle.add(1, new GruppeWert(new Integer(2), new Double(100000.00)));
145 		fertigProdukteTabelle.add(2, new GruppeWert(new Integer(3), new Double(400000.00)));
146 		fertigProdukteTabelle.add(3, new GruppeWert(new Integer(4), new Double(100000.00)));
147 		fertigProdukteTabelle.add(4, new GruppeWert(new Integer(5), new Double(400000.00)));
148 		fertigProdukteTabelle.add(5, new GruppeWert(new Integer(6), new Double(100000.00)));
149 		fertigProdukteTabelle.add(6, new GruppeWert(new Integer(7), new Double(400000.00)));
150 		fertigProdukteTabelle.add(7, new GruppeWert(new Integer(8), new Double(100000.00)));
151 		fertigProdukteTabelle.add(8, new GruppeWert(new Integer(9), new Double(400000.00)));
152 		fertigProdukteTabelle.add(9, new GruppeWert(new Integer(10), new Double(100000.00)));
153 	}
154 
155 	public void testInflationsIndex()
156 	{
157 		assertEquals(1.03, Vertrieb.inflationsIndex(1.0, 3.0), 0.0000000001);
158 		assertEquals(1.1639, Vertrieb.inflationsIndex(1.13, 3.0), 0.0000000001);
159 		assertEquals(1.03, Vertrieb.inflationsIndex(1, 3), 0.0000000001);
160 		assertEquals(1.1639, Vertrieb.inflationsIndex(1.13, 3), 0.0000000001);
161 		assertEquals(1.00, Vertrieb.inflationsIndex(1.0, 0.0), 0.0000000001);
162 		assertEquals(1.00, Vertrieb.inflationsIndex(1, 0), 0.0000000001);
163 	}
164 
165 	public void testLohnerhoehungsIndex()
166 	{
167 
168 		assertEquals(1.15, Vertrieb.lohnerhoehungsIndex(1.0, 15.0), 0.0000000001);
169 		assertEquals(1.3225, Vertrieb.lohnerhoehungsIndex(1.15, 15.0), 0.0000000001);
170 		assertEquals(1.15, Vertrieb.lohnerhoehungsIndex(1, 15), 0.0000000001);
171 		assertEquals(1.3225, Vertrieb.lohnerhoehungsIndex(1.15, 15), 0.0000000001);
172 		assertEquals(1.00, Vertrieb.lohnerhoehungsIndex(1.0, 0.0), 0.0000000001);
173 		assertEquals(1.00, Vertrieb.lohnerhoehungsIndex(1, 0), 0.0000000001);
174 	}
175 
176 	public void testRealerPreis()
177 	{
178 
179 		assertEquals(6.65, Vertrieb.realerPreis(6.65, 1.0), 0.0000000001);
180 		assertEquals(6.65, Vertrieb.realerPreis(6.65, 1), 0.0000000001);
181 		assertEquals(6.4563106796, Vertrieb.realerPreis(6.65, 1.03), 0.0000000001);
182 		assertEquals(5.8849557522, Vertrieb.realerPreis(6.65, 1.13), 0.0000000001);
183 	}
184 
185 	public void testWirksamerPreis()
186 	{
187 
188 		assertEquals(6.65, Vertrieb.wirksamerPreis(6.65, 6.65, 0.0, 0.0), 0.0000000001);
189 		assertEquals(6.4938258161, Vertrieb.wirksamerPreis(6.456310, 6.65, 0.0, 0.0), 0.0000000001);
190         /***@TODO Weitere Tests implementieren.*/
191 	}
192 
193 	public void testPafWirksamerPreis()
194 	{
195 
196 		assertEquals(4.50, Vertrieb.pafWirksamerPreis(1000000, preisAbsatzTabelle), 0.0000000001);
197 		assertEquals(6.00, Vertrieb.pafWirksamerPreis(470000, preisAbsatzTabelle), 0.0000000001);
198 		assertEquals(6.50, Vertrieb.pafWirksamerPreis(450000, preisAbsatzTabelle), 0.0000000001);
199 		assertEquals(6.65, Vertrieb.pafWirksamerPreis(444000, preisAbsatzTabelle), 0.0000000001);
200 		assertEquals(7.00, Vertrieb.pafWirksamerPreis(430000, preisAbsatzTabelle), 0.0000000001);
201 		assertEquals(7.25, Vertrieb.pafWirksamerPreis(380000, preisAbsatzTabelle), 0.0000000001);
202 		assertEquals(8.39, Vertrieb.pafWirksamerPreis(172000, preisAbsatzTabelle), 0.0000000001);
203 		assertEquals(9.00, Vertrieb.pafWirksamerPreis(0, preisAbsatzTabelle), 0.0000000001);
204 	}
205 
206 	public void testRealesMarketing()
207 	{
208 
209 		assertEquals(100000, Vertrieb.realesMarketing(100000, 1.0), 0.0000000001);
210 		assertEquals(200000, Vertrieb.realesMarketing(200000, 1), 0.0000000001);
211 		assertEquals(291262.1359223301, Vertrieb.realesMarketing(300000, 1.03), 0.0000000001);
212 		assertEquals(309734.5132743363, Vertrieb.realesMarketing(350000, 1.13), 0.0000000001);
213 	}
214 
215 	public void testWirksamesMarketing()
216 	{
217 
218 		assertEquals(100000, Vertrieb.wirksamesMarketing(0.0, 100000, 0.0), 0.0000000001);
219 		assertEquals(134000, Vertrieb.wirksamesMarketing(0.33, 200000, 0.0), 0.0000000001);
220 		assertEquals(175000, Vertrieb.wirksamesMarketing(0.25, 200000, 100000), 0.0000000001);
221 		assertEquals(167000, Vertrieb.wirksamesMarketing(0.33, 200000, 100000), 0.0000000001);
222 		assertEquals(218446.6019417476, Vertrieb.wirksamesMarketing(0.25, 291262.1359223301, 0), 0.0000000001);
223 		assertEquals(
224 			305116.4189363348,
225 			Vertrieb.wirksamesMarketing(0.25, 309734.5132743363, 291262.1359223301),
226 			0.0000000001);
227 	}
228 
229 	public void testWirksamerMarketingEffekt()
230 	{
231 
232         assertEquals(0, Vertrieb.wirksamerMarketingEffekt(0.0, 0.0, marketingTabelle), 0.0000000001);
233         assertEquals(187823.844, Vertrieb.wirksamerMarketingEffekt(0.031007, 3384000.0, marketingTabelle), 0.0000000001);
234         assertEquals(225600.0, Vertrieb.wirksamerMarketingEffekt(0.05, 3384000.0, marketingTabelle), 0.0000000001);
235         assertEquals(372240.0, Vertrieb.wirksamerMarketingEffekt(0.1, 3384000.0, marketingTabelle), 0.000000001);
236         assertEquals(0, Vertrieb.wirksamerMarketingEffekt(-0.5, 3384000.0, marketingTabelle), 0.0000000001);
237         assertEquals(0, Vertrieb.wirksamerMarketingEffekt(-0.2, 3384000.0, marketingTabelle), 0.0000000001);
238         assertEquals(676800.0, Vertrieb.wirksamerMarketingEffekt(0.2, 3384000.0, marketingTabelle), 0.0000000001);
239         assertEquals(676800.0, Vertrieb.wirksamerMarketingEffekt(0.5, 3384000.0, marketingTabelle), 0.0000000001);
240 	}
241 
242 	public void testMarketingEffekt()
243 	{
244 
245         assertEquals(-0.2, Vertrieb.marketingEffekt(0.0, 0.00, marketingTabelle), 0.0000000001);
246 		assertEquals(-0.0522458629, Vertrieb.marketingEffekt(100000.0, 3384000.00, marketingTabelle), 0.0000000001);
247         assertEquals(0.0608156028, Vertrieb.marketingEffekt(250000.0, 3384000.00, marketingTabelle), 0.0000000001);
248         /***@TODO Weitere Tests implementieren.*/
249 	}
250 
251 	public void testGrenzMarketingEffekt()
252 	{
253 
254 		assertEquals(0.0, Vertrieb.grenzMarketingEffekt(6.65, 6.65, 6.65, 0.0), 0.0000000001);
255 		assertEquals(0.0310077519, Vertrieb.grenzMarketingEffekt(6.65, 6.45, 6.65, 0.0), 0.0000000001);
256         /***@TODO Weitere Tests implementieren.*/
257 	}
258 
259 	public void testNominellesMarketing()
260 	{
261 
262 		assertEquals(0.0, Vertrieb.nominellesMarketing(0, 1.00), 0.0000000001);
263 		assertEquals(100000.0, Vertrieb.nominellesMarketing(100000, 1.00), 0.0000000001);
264 		assertEquals(103000.0, Vertrieb.nominellesMarketing(100000, 1.03), 0.0000000001);
265 		assertEquals(113000.0, Vertrieb.nominellesMarketing(100000, 1.13), 0.0000000001);
266 		assertEquals(252562.5, Vertrieb.nominellesMarketing(225000, 1.1225), 0.0000000001);
267 		assertEquals(999999999.0, Vertrieb.nominellesMarketing(999999999, 1.00), 0.0000000001);
268 	}
269 
270 	public void testPafAbsatz()
271 	{
272 
273 		assertEquals(950000.0, Vertrieb.pafAbsatz(4.00, preisAbsatzTabelle), 0.0000000001);
274 		assertEquals(444000.0, Vertrieb.pafAbsatz(6.65, preisAbsatzTabelle), 0.0000000001);
275 		assertEquals(450246.967356, Vertrieb.pafAbsatz(6.4938258161, preisAbsatzTabelle), 0.0000000001);
276 		assertEquals(0.0, Vertrieb.pafAbsatz(10.00, preisAbsatzTabelle), 0.0000000001);
277 	}
278 
279 	public void testGrenzMarketingKosten()
280 	{
281 		/* @param	konjunkturIndex
282 		    * @param	saisonIndex
283 		    * @param	absetzbareMenge
284 		    * @param	wirksamerPreis
285 		    * @param	realerPreisAktuell
286 		    * @param	realerPreisVorquartal
287 		    * @param	praeferenzeffekt
288 		    * @param	erloesVorquartal
289 		    * @param	wirksamesMarketingVorquartal
290 		    * @param	inflationsIndex
291 		    * @param	nachhall
292 		    * @param	wirksamesMarketing
293 		    * @param	korrektur
294 		    * @param	preisAbsatzTabelle
295 		    * @param	marketingTabelle
296 		    * @param	anzahlUnternehmen
297 		    */
298         assertEquals(
299             0.0,
300             Vertrieb.grenzMarketingKosten(
301                 0.0,
302                 0.0,
303                 0.0,
304                 0.0,
305                 0.0,
306                 0.0,
307                 0.0,
308                 0.0,
309                 0.0,
310                 0.0,
311                 0.0,
312                 0.0,
313                 0.0,
314                 preisAbsatzTabelle,
315                 marketingTabelle,
316                 0),
317             0.0000000001);
318         assertEquals(
319             -2.15142404,
320             Vertrieb.grenzMarketingKosten(
321                 1.0,
322                 1.0,
323                 508886.0,
324                 5.8504398827,
325                 6.65,
326                 6.65,
327                 0.0,
328                 2000000.0,
329                 300000.0,
330                 1.0,
331                 0.33,
332                 300000.0,
333                 1.0,
334                 preisAbsatzTabelle,
335                 marketingTabelle,
336                 1),
337             0.0000000001);
338         assertEquals(
339             -2.2282363784,
340             Vertrieb.grenzMarketingKosten(
341                 1.0,
342                 1.0,
343                 508886.0,
344                 5.8504398827,
345                 6.65,
346                 6.65,
347                 0.0,
348                 2000000.0,
349                 300000.0,
350                 1.0,
351                 0.33,
352                 300000.0,
353                 0.95,
354                 preisAbsatzTabelle,
355                 marketingTabelle,
356                 1),
357             0.0000000001);
358         assertEquals(
359             0.0,
360             Vertrieb.grenzMarketingKosten(
361                 1.0,
362                 1.0,
363                 508886.0,
364                 5.8504398827,
365                 6.65,
366                 6.65,
367                 0.0,
368                 2000000.0,
369                 300000.0,
370                 0.0,
371                 0.33,
372                 300000.0,
373                 0.95,
374                 preisAbsatzTabelle,
375                 marketingTabelle,
376                 1),
377             0.0000000001);
378         /***@TODO Weitere Tests implementieren.*/
379 	}
380 
381 	public void testMengeAbsetzbar()
382 	{
383 
384 		assertEquals(0.0, Vertrieb.mengeAbsetzbar(0.0, 1.0, 1.0, 1.0), 0.0000000001);
385 		assertEquals(444000.0, Vertrieb.mengeAbsetzbar(444000.0, 1.0, 1.0, 1.0), 0.0000000001);
386 		assertEquals(493284.0, Vertrieb.mengeAbsetzbar(444000.0, 1.01, 1.10, 1.0), 0.000000001);
387         /***@TODO Weitere Tests implementieren.*/
388 	}
389 
390 	public void testZusaetzlicherAbsatzDurchDefizitAndererUnternehmen()
391 	{
392 
393 		assertEquals(
394 			0.0,
395 			Vertrieb.zusaetzlicherAbsatzDurchDefizitAndererUnternehmen(0.0, absetzbareMengenTabelle, new Integer(1)),
396 			0.0000000001);
397 		assertEquals(
398 			666.6666666667,
399 			Vertrieb.zusaetzlicherAbsatzDurchDefizitAndererUnternehmen(10000.0, absetzbareMengenTabelle, new Integer(2)),
400 			0.0000000001);
401 		assertEquals(
402 			13333.32,
403 			Vertrieb.zusaetzlicherAbsatzDurchDefizitAndererUnternehmen(99999.90, absetzbareMengenTabelle, new Integer(3)),
404 			0.0000000001);
405 		assertEquals(
406 			0.0,
407 			Vertrieb.zusaetzlicherAbsatzDurchDefizitAndererUnternehmen(0.0, absetzbareMengenTabelle, new Integer(4)),
408 			0.0000000001);
409         assertEquals(
410             1333.3333333333,
411             Vertrieb.zusaetzlicherAbsatzDurchDefizitAndererUnternehmen(10000.0, absetzbareMengenTabelle, new Integer(5)),
412             0.0000000001);
413 
414         ArrayList tempAbsetzbareMengenTabelle = new ArrayList();
415         tempAbsetzbareMengenTabelle.add(0, new GruppeWert(new Integer(1), new Double(0.0)));
416 
417         assertEquals(
418             0.0,
419             Vertrieb.zusaetzlicherAbsatzDurchDefizitAndererUnternehmen(0.0, tempAbsetzbareMengenTabelle, new Integer(1)),
420             0.0000000001);
421 
422         tempAbsetzbareMengenTabelle.add(1, new GruppeWert(new Integer(1), new Double(0.0)));
423 
424         assertEquals(
425             0.0,
426             Vertrieb.zusaetzlicherAbsatzDurchDefizitAndererUnternehmen(0.0, tempAbsetzbareMengenTabelle, new Integer(1)),
427             0.0000000001);
428 	}
429 
430 	public void testMengeAbsetzbarInklusiveZusaetzlichemAbsatzDurchDefizitAndererUnternehmen()
431 	{
432 
433 		assertEquals(
434 			0.0,
435 			Vertrieb.mengeAbsetzbarInklusiveZusaetzlichemAbsatzDurchDefizitAndererUnternehmen(0.0, 1.0, 1.0, 1.0, 0.0),
436 			0.0000000001);
437 		assertEquals(
438 			445000.0,
439 			Vertrieb.mengeAbsetzbarInklusiveZusaetzlichemAbsatzDurchDefizitAndererUnternehmen(
440 				444000.0,
441 				1.0,
442 				1.0,
443 				1.0,
444 				1000.0),
445 			0.0000000001);
446 		assertEquals(
447 			504385.0,
448 			Vertrieb.mengeAbsetzbarInklusiveZusaetzlichemAbsatzDurchDefizitAndererUnternehmen(
449 				444000.0,
450 				1.03,
451 				1.1,
452 				1.0,
453 				1333.0),
454 			0.000000001);
455 		assertEquals(
456 			436017.0,
457 			Vertrieb.mengeAbsetzbarInklusiveZusaetzlichemAbsatzDurchDefizitAndererUnternehmen(
458 				444000.0,
459 				1.01,
460 				0.95,
461 				1.0,
462 				9999.0),
463 			0.0000000001);
464 	}
465 
466 	public void testMinderAbsatz()
467 	{
468 
469 		assertEquals(444000.0, Vertrieb.minderAbsatz(1.0, 1.0, 444000.0, 0.0), 0.0000000001);
470 		assertEquals(503052.0, Vertrieb.minderAbsatz(1.03, 1.1, 444000.0, 0.0), 0.000000001);
471 		assertEquals(291084.1799999999, Vertrieb.minderAbsatz(1.03, 0.95, 444000.0, 0.33), 0.0000000001);
472 	}
473 
474 	public void testFertigProdukteGesamt()
475 	{
476 
477 		assertEquals(0.0, Vertrieb.fertigProdukteGesamt(0.0, 0.0), 0.0000000001);
478 		assertEquals(444000.0, Vertrieb.fertigProdukteGesamt(444000.0, 0.0), 0.0000000001);
479 		assertEquals(455000.0, Vertrieb.fertigProdukteGesamt(444000.0, 11000.0), 0.0000000001);
480 	}
481 
482 	public void testDefizit()
483 	{
484 
485 		assertEquals(0.0, Vertrieb.defizit(0.0, 0.0), 0.0000000001);
486 		assertEquals(0.0, Vertrieb.defizit(444000.0, 400000.0), 0.0000000001);
487 		assertEquals(0.0, Vertrieb.defizit(444000.0, 444000.0), 0.0000000001);
488 		assertEquals(56000.0, Vertrieb.defizit(444000.0, 500000.0), 0.0000000001);
489 	}
490 
491 	public void testDefizitAndererUnternehmenGesamt()
492 	{
493 
494 		assertEquals(250000.0, Vertrieb.defizitAndererUnternehmenGesamt(fertigProdukteTabelle, absetzbareMengenTabelle, new Integer(1)), 0.0000000001);
495 	}
496 
497 	public void testTatsaechlicherAbsatz()
498 	{
499 
500 		assertEquals(0.0, Vertrieb.tatsaechlicherAbsatz(0.0, 0.0), 0.0000000001);
501 		assertEquals(-1.0, Vertrieb.tatsaechlicherAbsatz(-1.0, 0.0), 0.0000000001);
502 		assertEquals(-1.0, Vertrieb.tatsaechlicherAbsatz(-1.0, -1.0), 0.0000000001);
503 		assertEquals(-1.0, Vertrieb.tatsaechlicherAbsatz(0.0, -1.0), 0.0000000001);
504 		assertEquals(499999.0, Vertrieb.tatsaechlicherAbsatz(500000.0, 499999.0), 0.0000000001);
505 		assertEquals(499999.0, Vertrieb.tatsaechlicherAbsatz(499999.0, 500000.0), 0.0000000001);
506 	}
507 
508 	public void testLagerZugangFertigprodukteStueck()
509 	{
510 
511 		assertEquals(0.0, Vertrieb.lagerZugangFertigprodukteStueck(0.0, 0.0), 0.0000000001);
512 		assertEquals(0.0, Vertrieb.lagerZugangFertigprodukteStueck(444000.0, 400000.0), 0.0000000001);
513 		assertEquals(0.0, Vertrieb.lagerZugangFertigprodukteStueck(400000.0, 400000.0), 0.0000000001);
514 		assertEquals(56000.0, Vertrieb.lagerZugangFertigprodukteStueck(444000.0, 500000.0), 0.0000000001);
515 	}
516 
517 	public void testLagerAbgangFertigprodukteStueck()
518 	{
519 
520 		assertEquals(0.0, Vertrieb.lagerAbgangFertigprodukteStueck(0.0, 0.0, 0.0), 0.0000000001);
521 		assertEquals(0.0, Vertrieb.lagerAbgangFertigprodukteStueck(444000.0, 400000.0, 0.0), 0.0000000001);
522 		assertEquals(0.0, Vertrieb.lagerAbgangFertigprodukteStueck(400000.0, 400000.0, 0.0), 0.0000000001);
523 		assertEquals(0.0, Vertrieb.lagerAbgangFertigprodukteStueck(444000.0, 500000.0, 0.0), 0.0000000001);
524 		assertEquals(44000.0, Vertrieb.lagerAbgangFertigprodukteStueck(444000.0, 400000.0, 100000.0), 0.0000000001);
525 		assertEquals(0.0, Vertrieb.lagerAbgangFertigprodukteStueck(400000.0, 400000.0, 40000.0), 0.0000000001);
526         assertEquals(0.0, Vertrieb.lagerAbgangFertigprodukteStueck(444000.0, 500000.0, 50000.0), 0.0000000001);
527         assertEquals(10000.0, Vertrieb.lagerAbgangFertigprodukteStueck(500000.0, 444000.0, 10000.0), 0.0000000001);
528 	}
529 
530 	public void testLagerBestandFertigprodukteStueck()
531 	{
532 
533 		assertEquals(0.0, Vertrieb.lagerBestandFertigprodukteStueck(0.0, 0.0, 0.0), 0.0000000001);
534 		assertEquals(40000.0, Vertrieb.lagerBestandFertigprodukteStueck(40000.0, 0.0, 0.0), 0.0000000001);
535 		assertEquals(0.0, Vertrieb.lagerBestandFertigprodukteStueck(40000.0, 40000.0, 0.0), 0.0000000001);
536 		assertEquals(80000.0, Vertrieb.lagerBestandFertigprodukteStueck(40000.0, 0.0, 40000.0), 0.0000000001);
537 		assertEquals(40000.0, Vertrieb.lagerBestandFertigprodukteStueck(40000.0, 40000.0, 40000.0), 0.0000000001);
538 	}
539 
540 	public void testRohstoffKostenProGutesStueck()
541 	{
542 
543 		assertEquals(1.0, Vertrieb.rohstoffKostenProGutesStueck(1.0, 1.0, 0.0), 0.0000000001);
544 		assertEquals(1.0810810811, Vertrieb.rohstoffKostenProGutesStueck(1.0, 1.0, 7.5), 0.0000000001);
545 		assertEquals(1.3621621622, Vertrieb.rohstoffKostenProGutesStueck(1.2, 1.05, 7.5), 0.0000000001);
546         /***@TODO Weitere Tests implementieren.*/
547 	}
548 
549 	public void testLohnkostenProGutesStueck()
550 	{
551 
552 		assertEquals(0.8547008547, Vertrieb.lohnkostenProGutesStueck(5.0, 10.0, 10.0, 0.0), 0.0000000001);
553 		assertEquals(0.9754273504, Vertrieb.lohnkostenProGutesStueck(5.0, 11.0, 10.0, 50.0), 0.0000000001);
554 		assertEquals(1.9508547009, Vertrieb.lohnkostenProGutesStueck(10.0, 11.0, 10.0, 50.0), 0.0000000001);
555 		assertEquals(2.9262820513, Vertrieb.lohnkostenProGutesStueck(15.0, 11.0, 10.0, 50.0), 0.0000000001);
556 	}
557 
558 	public void testKostenProFertigprodukt()
559 	{
560 
561 		/* @param	lohnkostenMitErhoehung	Die Lohnkosten mit bereits eingerechneter Lohnerh&ouml;hung
562 		 * @param	fertigungszeitProGutesStueck	Die Fertigungszeit pro gutem St&uuml;ck
563 		 * @param	rohstoffverbrauchProStueck		Der Rohstoffverbrauch pro gutem St&uuml;ck
564 		 * @param	fehleranteil	Der Fehleranteil bei der Produktion
565 		 * @param	rohstofflagerWert	Der Wert der im Lager befindlichen Rohstoffe
566 		 * @param	rohstoffEinkaufExpressWert	Der Wert der per Express eingekauften Rohstoffe
567 		 * @param	rohstofflagerMenge	Die Lagermenge an Rohstoffen
568 		 */
569 		assertEquals(2.8715498938, Vertrieb.kostenProFertigprodukt(10.0, 5.0, 1.0, 7.5, 1.0, 1.0, 0.0), 0.0000000001);
570         /***@TODO Weitere Tests implementieren.*/
571 	}
572 
573 	public void testLagerZugangFertigprodukteEuro()
574 	{
575 
576 		assertEquals(0.0, Vertrieb.lagerZugangFertigprodukteEuro(0.0, 1.0), 0.0000000001);
577 		assertEquals(50000.0, Vertrieb.lagerZugangFertigprodukteEuro(50000.0, 1.0), 0.0000000001);
578 		assertEquals(52500.0, Vertrieb.lagerZugangFertigprodukteEuro(50000.0, 1.05), 0.0000000001);
579 	}
580 
581 	public void testDurchschnittlicherWertFertigprodukteLager()
582 	{
583 
584 		assertEquals(0.0, Vertrieb.durchschnittlicherWertFertigprodukteLager(0.0, 0.0), 0.0000000001);
585 		assertEquals(1.50, Vertrieb.durchschnittlicherWertFertigprodukteLager(44000.00, 66000.00), 0.0000000001);
586 		assertEquals(
587 			1.4444444444,
588 			Vertrieb.durchschnittlicherWertFertigprodukteLager(45000.00, 65000.00),
589 			0.0000000001);
590 	}
591 
592 	public void testLagerAbgangFertigprodukteEuro()
593 	{
594 
595 		assertEquals(0.0, Vertrieb.lagerAbgangFertigprodukteEuro(1.0, 0.0), 0.0000000001);
596 		assertEquals(44000.0, Vertrieb.lagerAbgangFertigprodukteEuro(1.0, 44000.0), 0.0000000001);
597 		assertEquals(190190.0, Vertrieb.lagerAbgangFertigprodukteEuro(4.3225, 44000.0), 0.0000000001);
598 	}
599 
600 	public void testLagerBestandFertigprodukteEuro()
601 	{
602 
603 		assertEquals(0.0, Vertrieb.lagerBestandFertigprodukteEuro(0.0, 0.0, 0.0), 0.0000000001);
604 		assertEquals(44000.0, Vertrieb.lagerBestandFertigprodukteEuro(44000.0, 0.0, 0.0), 0.0000000001);
605 		assertEquals(88000.0, Vertrieb.lagerBestandFertigprodukteEuro(44000.0, 44000.0, 0.0), 0.0000000001);
606 		assertEquals(22000.0, Vertrieb.lagerBestandFertigprodukteEuro(44000.0, 0.0, 22000.0), 0.0000000001);
607 		assertEquals(44000.0, Vertrieb.lagerBestandFertigprodukteEuro(44000.0, 44000.0, 44000.0), 0.0000000001);
608 	}
609 
610 	public void testLagerKostenFertigprodukte()
611 	{
612 
613 		assertEquals(0.0, Vertrieb.lagerKostenFertigprodukte(0.0, 0.0), 0.0000000001);
614 		assertEquals(44000.0, Vertrieb.lagerKostenFertigprodukte(44000.0, 1.0), 0.0000000001);
615 		assertEquals(66000.0, Vertrieb.lagerKostenFertigprodukte(44000.0, 1.5), 0.0000000001);
616 	}
617 
618 	public void testRohstoffLagerBestandEuro()
619 	{
620 
621 		assertEquals(0.0, Vertrieb.rohstoffLagerBestandEuro(0.0, 0.0), 0.0000000001);
622 		assertEquals(44000.0, Vertrieb.rohstoffLagerBestandEuro(44000.0, 1.0), 0.0000000001);
623 		assertEquals(66000.0, Vertrieb.rohstoffLagerBestandEuro(44000.0, 1.5), 0.0000000001);
624 	}
625 
626 	public void testMarktAnteil()
627 	{
628 		assertEquals(16.0, Vertrieb.marktAnteil(tatsaechlicherAbsatzTabelle, new Integer(1)), 0.0000000001);
629 		assertEquals(4.0, Vertrieb.marktAnteil(tatsaechlicherAbsatzTabelle, new Integer(2)), 0.0000000001);
630 
631         ArrayList tempTatsaechlicherAbsatzTabelle = new ArrayList();
632         tempTatsaechlicherAbsatzTabelle.add(0, new GruppeWert(new Integer(1), new Double(400000.0)));
633 
634         assertEquals(100.0, Vertrieb.marktAnteil(tempTatsaechlicherAbsatzTabelle, new Integer(1)), 0.0000000001);
635 
636         tempTatsaechlicherAbsatzTabelle.add(1, new GruppeWert(new Integer(2), new Double(0.0)));
637 
638         assertEquals(0.0, Vertrieb.marktAnteil(tempTatsaechlicherAbsatzTabelle, new Integer(2)), 0.0000000001);
639 
640         tempTatsaechlicherAbsatzTabelle.add(2, new GruppeWert(new Integer(3), new Double(400000.0)));
641 
642         assertEquals(50.0, Vertrieb.marktAnteil(tempTatsaechlicherAbsatzTabelle, new Integer(3)), 0.0000000001);
643 	}
644 
645 	public void testUmsatzAnteil()
646 	{
647 		assertEquals(13.3333333333, Vertrieb.umsatzAnteil(umsatzTabelle, new Integer(1)), 0.0000000001);
648         assertEquals(6.6666666667, Vertrieb.umsatzAnteil(umsatzTabelle, new Integer(2)), 0.0000000001);
649 
650         ArrayList tempUmsatzTabelle = new ArrayList();
651         tempUmsatzTabelle.add(0, new GruppeWert(new Integer(1), new Double(0.0)));
652 
653         assertEquals(100.0, Vertrieb.umsatzAnteil(tempUmsatzTabelle, new Integer(1)), 0.0000000001);
654 
655         tempUmsatzTabelle.add(1, new GruppeWert(new Integer(2), new Double(0.0)));
656 
657         assertEquals(0.0, Vertrieb.umsatzAnteil(tempUmsatzTabelle, new Integer(1)), 0.0000000001);
658 	}
659 
660 	public void testUmsatz()
661 	{
662 
663 		assertEquals(0.0, Vertrieb.umsatz(0.0, 0.0), 0.0000000001);
664 		assertEquals(0.0, Vertrieb.umsatz(0.0, 6.65), 0.0000000001);
665 		assertEquals(2952600.0, Vertrieb.umsatz(444000.0, 6.65), 0.0000000001);
666 		assertEquals(3325000.0, Vertrieb.umsatz(500000.0, 6.65), 0.0000000001);
667 	}
668 
669 	public void testMarktforschungskosten()
670 	{
671 
672 		assertEquals(0.0, Vertrieb.marktforschungskosten(marktforschungTabelle, 0), 0.0000000001);
673 		assertEquals(20000.0, Vertrieb.marktforschungskosten(marktforschungTabelle, 1), 0.0000000001);
674 		assertEquals(30000.0, Vertrieb.marktforschungskosten(marktforschungTabelle, 2), 0.0000000001);
675 	}
676 
677 	public void testKorrekturfaktor()
678 	{
679 
680 		assertEquals(0.8833173158, Vertrieb.korrekturfaktor(wirksamerPreisTabelle, new Integer(1)), 0.0000000001);
681 		assertEquals(1.0, Vertrieb.korrekturfaktor(wirksamerPreisTabelle, new Integer(2)), 0.0000000001);
682 		assertEquals(0.8833173158, Vertrieb.korrekturfaktor(wirksamerPreisTabelle, new Integer(3)), 0.0000000001);
683 	}
684 
685 	public void testSchaetzfehlerQualitaetssicherung()
686 	{
687 
688 		assertEquals(0.0, Vertrieb.schaetzfehlerQualitaetssicherung(0.0, 0.0, 0.0), 0.0000000001);
689 		assertEquals(0.0, Vertrieb.schaetzfehlerQualitaetssicherung(10000.0, 10000.0, 400000.0), 0.0000000001);
690 		assertEquals(0.0025, Vertrieb.schaetzfehlerQualitaetssicherung(11000.0, 10000.0, 400000.0), 0.0000000001);
691 		assertEquals(-0.125, Vertrieb.schaetzfehlerQualitaetssicherung(100000.0, 150000.0, 400000.0), 0.0000000001);
692 		assertEquals(0.125, Vertrieb.schaetzfehlerQualitaetssicherung(150000.0, 100000.0, 400000.0), 0.0000000001);
693 	}
694 }