1 |
wilde |
5 |
# -------------------------------------------------------------------- |
2 |
|
|
# UnitTest für die Lohnsteuerberechnung in LST2005 |
3 |
|
|
# $Id$ |
4 |
|
|
# -------------------------------------------------------------------- |
5 |
|
|
# |
6 |
|
|
# Copyright (c) 2005 by Intevation GmbH |
7 |
|
|
# Authors: |
8 |
|
|
# Sascha Wilde <[email protected]> |
9 |
|
|
# |
10 |
|
|
# This program is free software under the GPL (>=v2) |
11 |
|
|
# Read the file COPYING coming with this package for details. |
12 |
|
|
|
13 |
|
|
"""Unit Test für die Lohnsteuerberechnung in LST2005. Benutzt die |
14 |
|
|
Daten aus der Prüftabelle zum offiziellen Programmablaufplan zur |
15 |
|
|
maschinellen Jahreslohnsteürberechnung 2005.""" |
16 |
|
|
|
17 |
|
|
# ACHTUNG: die Prüftabelle liefert nur Referenzwerte für die |
18 |
|
|
# Berechnung der Lohnsteuer auf ein Jahr, andere Berechnungßeiträume |
19 |
|
|
# werden nicht berücksichtigt. |
20 |
|
|
|
21 |
|
|
import unittest |
22 |
|
|
from LST2005 import * |
23 |
|
|
|
24 |
|
|
class TestGetLohnsteuer(unittest.TestCase): |
25 |
|
|
|
26 |
|
|
def SetUp(self): |
27 |
wilde |
27 |
"""Offizielle Prüftabelle und LStRechner2005 einrichten""" |
28 |
wilde |
5 |
self.prueftabelle = { |
29 |
|
|
5000 : [ 0.0, 0.0, 0.0, 0.0, 612.0, 750.0 ], |
30 |
|
|
7500 : [ 0.0, 0.0, 0.0, 0.0, 987.0, 1125.0 ], |
31 |
|
|
10000: [ 0.0, 0.0, 0.0, 0.0, 1362.0, 1739.0 ], |
32 |
|
|
12500: [ 232.0, 18.0, 0.0, 232.0, 2403.0, 2789.0 ], |
33 |
|
|
15000: [ 714.0, 444.0, 0.0, 714.0, 3400.0, 3722.0 ], |
34 |
|
|
17500: [ 1362.0, 1043.0, 0.0, 1362.0, 4266.0, 4576.0 ], |
35 |
|
|
20000: [ 2063.0, 1727.0, 0.0, 2063.0, 5126.0, 5458.0 ], |
36 |
|
|
22500: [ 2725.0, 2375.0, 264.0, 2725.0, 6044.0, 6398.0 ], |
37 |
|
|
25000: [ 3417.0, 3051.0, 628.0, 3417.0, 7020.0, 7394.0 ], |
38 |
|
|
27500: [ 4126.0, 3746.0, 1104.0, 4126.0, 8052.0, 8438.0 ], |
39 |
|
|
30000: [ 4860.0, 4465.0, 1634.0, 4860.0, 9102.0, 9488.0 ], |
40 |
|
|
32500: [ 5620.0, 5211.0, 2240.0, 5620.0, 10152.0, 10538.0 ], |
41 |
|
|
35000: [ 6408.0, 5984.0, 2952.0, 6408.0, 11202.0, 11588.0 ], |
42 |
|
|
37500: [ 7224.0, 6785.0, 3684.0, 7224.0, 12252.0, 12638.0 ], |
43 |
|
|
40000: [ 8068.0, 7614.0, 4364.0, 8068.0, 13302.0, 13688.0 ], |
44 |
|
|
42500: [ 8938.0, 8470.0, 5026.0, 8938.0, 14352.0, 14738.0 ], |
45 |
|
|
45000: [ 9836.0, 9354.0, 5700.0, 9836.0, 15402.0, 15788.0 ], |
46 |
|
|
47500: [ 10762.0, 10265.0, 6390.0, 10762.0, 16452.0, 16838.0 ], |
47 |
|
|
50000: [ 11715.0, 11203.0, 7094.0, 11715.0, 17502.0, 17888.0 ], |
48 |
|
|
52500: [ 12696.0, 12169.0, 7806.0, 12696.0, 18552.0, 18938.0 ], |
49 |
|
|
55000: [ 13704.0, 13163.0, 8524.0, 13704.0, 19602.0, 19988.0 ], |
50 |
|
|
57500: [ 14733.0, 14183.0, 9254.0, 14733.0, 20652.0, 21038.0 ], |
51 |
|
|
60000: [ 15763.0, 15213.0, 10000.0, 15763.0, 21702.0, 22088.0 ] |
52 |
|
|
} |
53 |
|
|
self.t = LStRechner2005() |
54 |
|
|
self.t.SetZeitraum(JAHR) |
55 |
|
|
|
56 |
|
|
def test_lohnsteuer(self): |
57 |
|
|
"""Testet GetLohnsteuer gegen die offizielle Prüftabelle""" |
58 |
|
|
self.SetUp() |
59 |
|
|
for lohn in self.prueftabelle.keys(): |
60 |
|
|
for stkl in range(1, 7): |
61 |
|
|
self.t.SetLohn(lohn) |
62 |
|
|
self.t.SetSteuerklasse(stkl) |
63 |
|
|
self.t.Calc() |
64 |
|
|
self.assertEquals(self.t.GetLohnsteuer(), |
65 |
|
|
self.prueftabelle[lohn][stkl - 1]) |
66 |
|
|
|
67 |
wilde |
27 |
def test_api_lohnaequi(self): |
68 |
|
|
"""Testet SetLohn GetLohn Äquivalenz""" |
69 |
|
|
self.SetUp() |
70 |
|
|
for val in (0, 1, 1234.56, 2000.01, 2000.10, 2000.30, 2000.50, 3000, |
71 |
|
|
3000.01, 50000, 70000, 90000, 1000000.01, 100000000000.01): |
72 |
|
|
self.t.SetLohn(val) |
73 |
|
|
self.assertEquals(self.t.GetLohn(), val) |
74 |
|
|
|
75 |
|
|
def test_api_zeitraumaequi(self): |
76 |
|
|
"""Testet SetZeitraum GetZeitraum Äquivalenz""" |
77 |
|
|
self.SetUp() |
78 |
|
|
for val in (JAHR, MONAT, WOCHE, TAG): |
79 |
|
|
self.t.SetZeitraum(val) |
80 |
|
|
self.assertEquals(self.t.GetZeitraum(), val) |
81 |
|
|
|
82 |
|
|
def test_api_steuerklasseaequi(self): |
83 |
|
|
"""Testet SetSteuerklasse GetSteuerklasse Äquivalenz""" |
84 |
|
|
self.SetUp() |
85 |
|
|
for val in (I, II, III, IV, V, VI): |
86 |
|
|
self.t.SetSteuerklasse(val) |
87 |
|
|
self.assertEquals(self.t.GetSteuerklasse(), val) |
88 |
|
|
|
89 |
|
|
def test_api_kirchensteueraequi(self): |
90 |
|
|
"""Testet SetKirchensteuer GetKirchensteuer Äquivalenz""" |
91 |
|
|
self.SetUp() |
92 |
|
|
for val in (0, 1, 5.5, 14.32, 8, 9, 50.50, 87.65, 100): |
93 |
|
|
self.t.SetKirchensteuerProzent(val) |
94 |
|
|
self.assertEquals(self.t.GetKirchensteuerProzent(), val) |
95 |
|
|
|
96 |
|
|
|
97 |
wilde |
5 |
if __name__ == "__main__": |
98 |
|
|
unittest.main() |