Skip to content

Commit 7120a6a

Browse files
committed
switch to JavApi 0.7.4 and more CodeCoverage
1 parent 21a8eb1 commit 7120a6a

File tree

6 files changed

+286
-122
lines changed

6 files changed

+286
-122
lines changed

Package.resolved

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ let package = Package(
1616
dependencies: [
1717
.package(
1818
url: "https://github.com/bastie/JavApi4Swift.git",
19-
from: "0.7.3"
19+
from: "0.7.4"
2020
)
2121
],
2222
targets: [

Sources/BMF2Code/BMF2Code.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import LStXML2Code
99
/// Quelletxtgenerator zur Nutzung des durch das BMF bereitgestellten Pseudo-Quelltext zur Berechnung der Lohnsteuerabzüge bei der Einkommensteuer.
1010
public struct BMF2Code {
1111
/// Interne Version
12-
public static let VERSION = "1.0.0"
12+
public static let VERSION = "1.0.1"
1313

1414

1515
// MARK: main entry point

Sources/BMF2Code/SwiftEncoding.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,10 @@ open class SwiftEncoding : AbstractTreeEncoding {
106106
}
107107

108108
// store for initalizer
109-
self.inputVars [name] = type
109+
// - BugFix: if default value exist, do not include in initalizer
110+
if defaultValueAdding.count == 0 {
111+
self.inputVars [name] = type
112+
}
110113

111114
output.append("\(modifier) var \(name) : \(type)\(defaultValueAdding)")
112115
result.append("\(output)\n")

Tests/LStXML2CodeTests/LStXML2CodeTests.swift

Lines changed: 257 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -4,83 +4,261 @@ import XCTest
44
import JavApi
55

66
final class LStXML2CodeTests: XCTestCase {
7-
func testExample() throws {
8-
let calculator = Lohnsteuer2023AbJuliBig(LZZ: 1,RE4: java.math.BigDecimal(2500000),STKL: 1)
9-
calculator.MAIN()
10-
/*
11-
print (
12-
"""
13-
BK = \(calculator.BK)
14-
BKS = \(calculator.BKS)
15-
BKV = \(calculator.BKV)
16-
LSTLZZ = \(calculator.LSTLZZ)
17-
SOLZLZZ = \(calculator.SOLZLZZ)
18-
SOLZS = \(calculator.SOLZS)
19-
SOLZV = \(calculator.SOLZV)
20-
STS = \(calculator.STS)
21-
STV = \(calculator.STV)
22-
VKVLZZ = \(calculator.VKVLZZ)
23-
VKVSONST = \(calculator.VKVSONST)
24-
VFRB = \(calculator.VFRB)
25-
VFRBS1 = \(calculator.VFRBS1)
26-
VFRBS2 = \(calculator.VFRBS2)
27-
WVFRB = \(calculator.WVFRB)
28-
WVFRBO = \(calculator.WVFRBO)
29-
WVFRBM = \(calculator.WVFRBM)
30-
""")
31-
*/
32-
33-
// must be set
34-
XCTAssertEqual(calculator.VFRB, 123000)
35-
XCTAssertEqual(calculator.LSTLZZ, 176700)
36-
XCTAssertEqual(calculator.WVFRB, 834700)
37-
// must be zero
38-
XCTAssertEqual(calculator.BK, 0)
39-
XCTAssertEqual(calculator.BKS, 0)
40-
XCTAssertEqual(calculator.BKV, 0)
41-
XCTAssertEqual(calculator.SOLZLZZ, 0)
42-
XCTAssertEqual(calculator.SOLZS, 0)
43-
XCTAssertEqual(calculator.SOLZV, 0)
44-
XCTAssertEqual(calculator.STS, 0)
45-
XCTAssertEqual(calculator.STV, 0)
46-
XCTAssertEqual(calculator.VKVLZZ, 0)
47-
XCTAssertEqual(calculator.VKVSONST, 0)
48-
XCTAssertEqual(calculator.VFRBS1, 0)
49-
XCTAssertEqual(calculator.VFRBS2, 0)
50-
XCTAssertEqual(calculator.WVFRBO, 0)
51-
XCTAssertEqual(calculator.WVFRBM, 0)
52-
}
7+
8+
func testAll () throws {
9+
try self._testBMFSample() // Coverage: 50,6%
10+
try self._testKRV1() // Coverage: 51,0%
11+
try self._testKRV2() // Coverage: 51,0%
12+
try self._testAJAHR1KRV2() // Coverage: 52,2%
13+
}
14+
15+
/// Dieser Test beinhaltet das Beispiel von der Webseite [Eingangsinterface des BMF Steuerrechner](https://www.bmf-steuerrechner.de/interface/einganginterface.xhtml)
16+
///
17+
/// - Note: Code Coverage of Lohnsteuer2023AbJuliBig: 50,6%
18+
func _testBMFSample() throws {
19+
let calculator = Lohnsteuer2023AbJuliBig(LZZ: 1,RE4: java.math.BigDecimal(2500000),STKL: 1)
20+
calculator.MAIN()
21+
/*
22+
print (
23+
"""
24+
BK = \(calculator.BK)
25+
BKS = \(calculator.BKS)
26+
BKV = \(calculator.BKV)
27+
LSTLZZ = \(calculator.LSTLZZ)
28+
SOLZLZZ = \(calculator.SOLZLZZ)
29+
SOLZS = \(calculator.SOLZS)
30+
SOLZV = \(calculator.SOLZV)
31+
STS = \(calculator.STS)
32+
STV = \(calculator.STV)
33+
VKVLZZ = \(calculator.VKVLZZ)
34+
VKVSONST = \(calculator.VKVSONST)
35+
VFRB = \(calculator.VFRB)
36+
VFRBS1 = \(calculator.VFRBS1)
37+
VFRBS2 = \(calculator.VFRBS2)
38+
WVFRB = \(calculator.WVFRB)
39+
WVFRBO = \(calculator.WVFRBO)
40+
WVFRBM = \(calculator.WVFRBM)
41+
""")
42+
*/
43+
44+
// must be set
45+
XCTAssertEqual(calculator.VFRB, 123000)
46+
XCTAssertEqual(calculator.LSTLZZ, 176700)
47+
XCTAssertEqual(calculator.WVFRB, 834700)
48+
// must be zero
49+
XCTAssertEqual(calculator.BK, 0)
50+
XCTAssertEqual(calculator.BKS, 0)
51+
XCTAssertEqual(calculator.BKV, 0)
52+
XCTAssertEqual(calculator.SOLZLZZ, 0)
53+
XCTAssertEqual(calculator.SOLZS, 0)
54+
XCTAssertEqual(calculator.SOLZV, 0)
55+
XCTAssertEqual(calculator.STS, 0)
56+
XCTAssertEqual(calculator.STV, 0)
57+
XCTAssertEqual(calculator.VKVLZZ, 0)
58+
XCTAssertEqual(calculator.VKVSONST, 0)
59+
XCTAssertEqual(calculator.VFRBS1, 0)
60+
XCTAssertEqual(calculator.VFRBS2, 0)
61+
XCTAssertEqual(calculator.WVFRBO, 0)
62+
XCTAssertEqual(calculator.WVFRBM, 0)
63+
}
64+
65+
/// - Note: Code Coverage of Lohnsteuer2023AbJuliBig: 50,6%
66+
func _testKRV0() throws {
67+
let calculator = Lohnsteuer2023AbJuliBig(KRV: 0, LZZ: 1,RE4: java.math.BigDecimal(2500000),STKL: 1)
68+
calculator.MAIN()
69+
/*
70+
print (
71+
"""
72+
BK = \(calculator.BK)
73+
BKS = \(calculator.BKS)
74+
BKV = \(calculator.BKV)
75+
LSTLZZ = \(calculator.LSTLZZ)
76+
SOLZLZZ = \(calculator.SOLZLZZ)
77+
SOLZS = \(calculator.SOLZS)
78+
SOLZV = \(calculator.SOLZV)
79+
STS = \(calculator.STS)
80+
STV = \(calculator.STV)
81+
VKVLZZ = \(calculator.VKVLZZ)
82+
VKVSONST = \(calculator.VKVSONST)
83+
VFRB = \(calculator.VFRB)
84+
VFRBS1 = \(calculator.VFRBS1)
85+
VFRBS2 = \(calculator.VFRBS2)
86+
WVFRB = \(calculator.WVFRB)
87+
WVFRBO = \(calculator.WVFRBO)
88+
WVFRBM = \(calculator.WVFRBM)
89+
""")
90+
*/
91+
92+
// must be set
93+
XCTAssertEqual(calculator.VFRB, 123000)
94+
XCTAssertEqual(calculator.LSTLZZ, 176700)
95+
XCTAssertEqual(calculator.WVFRB, 834700)
96+
// must be zero
97+
XCTAssertEqual(calculator.BK, 0)
98+
XCTAssertEqual(calculator.BKS, 0)
99+
XCTAssertEqual(calculator.BKV, 0)
100+
XCTAssertEqual(calculator.SOLZLZZ, 0)
101+
XCTAssertEqual(calculator.SOLZS, 0)
102+
XCTAssertEqual(calculator.SOLZV, 0)
103+
XCTAssertEqual(calculator.STS, 0)
104+
XCTAssertEqual(calculator.STV, 0)
105+
XCTAssertEqual(calculator.VKVLZZ, 0)
106+
XCTAssertEqual(calculator.VKVSONST, 0)
107+
XCTAssertEqual(calculator.VFRBS1, 0)
108+
XCTAssertEqual(calculator.VFRBS2, 0)
109+
XCTAssertEqual(calculator.WVFRBO, 0)
110+
XCTAssertEqual(calculator.WVFRBM, 0)
111+
}
112+
113+
/// - Note: Code Coverage of Lohnsteuer2023AbJuliBig: 50,6%
114+
func _testKRV1() throws {
115+
let calculator = Lohnsteuer2023AbJuliBig(KRV: 1, LZZ: 1,RE4: java.math.BigDecimal(2500000),STKL: 1)
116+
calculator.MAIN()
117+
/*
118+
print (
119+
"""
120+
BK = \(calculator.BK)
121+
BKS = \(calculator.BKS)
122+
BKV = \(calculator.BKV)
123+
LSTLZZ = \(calculator.LSTLZZ)
124+
SOLZLZZ = \(calculator.SOLZLZZ)
125+
SOLZS = \(calculator.SOLZS)
126+
SOLZV = \(calculator.SOLZV)
127+
STS = \(calculator.STS)
128+
STV = \(calculator.STV)
129+
VKVLZZ = \(calculator.VKVLZZ)
130+
VKVSONST = \(calculator.VKVSONST)
131+
VFRB = \(calculator.VFRB)
132+
VFRBS1 = \(calculator.VFRBS1)
133+
VFRBS2 = \(calculator.VFRBS2)
134+
WVFRB = \(calculator.WVFRB)
135+
WVFRBO = \(calculator.WVFRBO)
136+
WVFRBM = \(calculator.WVFRBM)
137+
""")
138+
*/
139+
140+
// must be set
141+
XCTAssertEqual(calculator.VFRB, 123000)
142+
XCTAssertEqual(calculator.LSTLZZ, 176700)
143+
XCTAssertEqual(calculator.WVFRB, 834700)
144+
// must be zero
145+
XCTAssertEqual(calculator.BK, 0)
146+
XCTAssertEqual(calculator.BKS, 0)
147+
XCTAssertEqual(calculator.BKV, 0)
148+
XCTAssertEqual(calculator.SOLZLZZ, 0)
149+
XCTAssertEqual(calculator.SOLZS, 0)
150+
XCTAssertEqual(calculator.SOLZV, 0)
151+
XCTAssertEqual(calculator.STS, 0)
152+
XCTAssertEqual(calculator.STV, 0)
153+
XCTAssertEqual(calculator.VKVLZZ, 0)
154+
XCTAssertEqual(calculator.VKVSONST, 0)
155+
XCTAssertEqual(calculator.VFRBS1, 0)
156+
XCTAssertEqual(calculator.VFRBS2, 0)
157+
XCTAssertEqual(calculator.WVFRBO, 0)
158+
XCTAssertEqual(calculator.WVFRBM, 0)
159+
}
160+
161+
162+
/// - Note: Code Coverage of Lohnsteuer2023AbJuliBig: 49,3%
163+
func _testKRV2() throws {
164+
let calculator = Lohnsteuer2023AbJuliBig(KRV: 2, LZZ: 1,RE4: java.math.BigDecimal(2500000),STKL: 1)
165+
calculator.MAIN()
166+
/*
167+
print (
168+
"""
169+
BK = \(calculator.BK)
170+
BKS = \(calculator.BKS)
171+
BKV = \(calculator.BKV)
172+
LSTLZZ = \(calculator.LSTLZZ)
173+
SOLZLZZ = \(calculator.SOLZLZZ)
174+
SOLZS = \(calculator.SOLZS)
175+
SOLZV = \(calculator.SOLZV)
176+
STS = \(calculator.STS)
177+
STV = \(calculator.STV)
178+
VKVLZZ = \(calculator.VKVLZZ)
179+
VKVSONST = \(calculator.VKVSONST)
180+
VFRB = \(calculator.VFRB)
181+
VFRBS1 = \(calculator.VFRBS1)
182+
VFRBS2 = \(calculator.VFRBS2)
183+
WVFRB = \(calculator.WVFRB)
184+
WVFRBO = \(calculator.WVFRBO)
185+
WVFRBM = \(calculator.WVFRBM)
186+
""")
187+
*/
188+
189+
// must be set
190+
XCTAssertEqual(calculator.VFRB, 123000)
191+
XCTAssertEqual(calculator.LSTLZZ, 236400)
192+
XCTAssertEqual(calculator.WVFRB, 1067200)
193+
// must be zero
194+
XCTAssertEqual(calculator.BK, 0)
195+
XCTAssertEqual(calculator.BKS, 0)
196+
XCTAssertEqual(calculator.BKV, 0)
197+
XCTAssertEqual(calculator.SOLZLZZ, 0)
198+
XCTAssertEqual(calculator.SOLZS, 0)
199+
XCTAssertEqual(calculator.SOLZV, 0)
200+
XCTAssertEqual(calculator.STS, 0)
201+
XCTAssertEqual(calculator.STV, 0)
202+
XCTAssertEqual(calculator.VKVLZZ, 0)
203+
XCTAssertEqual(calculator.VKVSONST, 0)
204+
XCTAssertEqual(calculator.VFRBS1, 0)
205+
XCTAssertEqual(calculator.VFRBS2, 0)
206+
XCTAssertEqual(calculator.WVFRBO, 0)
207+
XCTAssertEqual(calculator.WVFRBM, 0)
208+
}
209+
210+
211+
// https://www.bmf-steuerrechner.de/interface/2023AbJuliVersion1.xhtml?code=ext2023&AJAHR=1&KRV=2&LZZ=1&RE4=250000000&STKL=1
212+
/// - Note: Code Coverage of Lohnsteuer2023AbJuliBig: 49,1%
213+
func _testAJAHR1KRV2() throws {
214+
let calculator = Lohnsteuer2023AbJuliBig(
215+
AJAHR: 1,
216+
KRV: 2,
217+
LZZ: 1,
218+
RE4: java.math.BigDecimal(250000000),
219+
STKL: 1)
220+
calculator.MAIN()
221+
/*
222+
print (
223+
"""
224+
BK = \(calculator.BK)
225+
BKS = \(calculator.BKS)
226+
BKV = \(calculator.BKV)
227+
LSTLZZ = \(calculator.LSTLZZ)
228+
SOLZLZZ = \(calculator.SOLZLZZ)
229+
SOLZS = \(calculator.SOLZS)
230+
SOLZV = \(calculator.SOLZV)
231+
STS = \(calculator.STS)
232+
STV = \(calculator.STV)
233+
VKVLZZ = \(calculator.VKVLZZ)
234+
VKVSONST = \(calculator.VKVSONST)
235+
VFRB = \(calculator.VFRB)
236+
VFRBS1 = \(calculator.VFRBS1)
237+
VFRBS2 = \(calculator.VFRBS2)
238+
WVFRB = \(calculator.WVFRB)
239+
WVFRBO = \(calculator.WVFRBO)
240+
WVFRBM = \(calculator.WVFRBM)
241+
""")
242+
*/
243+
244+
// must be set
245+
XCTAssertEqual(calculator.VFRB, 123000)
246+
XCTAssertEqual(calculator.LSTLZZ, 110380200)
247+
XCTAssertEqual(calculator.WVFRB, 248267100)
248+
XCTAssertEqual(calculator.SOLZLZZ, 6070911)
249+
// must be zero
250+
XCTAssertEqual(calculator.BK, 0)
251+
XCTAssertEqual(calculator.BKS, 0)
252+
XCTAssertEqual(calculator.BKV, 0)
253+
XCTAssertEqual(calculator.SOLZS, 0)
254+
XCTAssertEqual(calculator.SOLZV, 0)
255+
XCTAssertEqual(calculator.STS, 0)
256+
XCTAssertEqual(calculator.STV, 0)
257+
XCTAssertEqual(calculator.VKVLZZ, 0)
258+
XCTAssertEqual(calculator.VKVSONST, 0)
259+
XCTAssertEqual(calculator.VFRBS1, 0)
260+
XCTAssertEqual(calculator.VFRBS2, 0)
261+
XCTAssertEqual(calculator.WVFRBO, 0)
262+
XCTAssertEqual(calculator.WVFRBM, 0)
263+
}
53264
}
54-
55-
/* result of
56-
http://www.bmf-steuerrechner.de/interface/2023AbJuliVersion1.xhtml?code=ext2023&LZZ=1&RE4=2500000&STKL=1
57-
58-
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
59-
<lohnsteuer jahr="2023">
60-
<information>Die Berechnung ist nach den PAP 2023 (ab Juli) erfolgt. Die Berechnung dient lediglich der Qualitätssicherung. Die Externe Schnittstelle des Lohn- und Einkommensteuerrechner ist also nur für die Überprüfung ihrer Rechnung bestimmt und nicht dazu bestimmt, die Berechnung über ihn abzuwickeln.</information>
61-
<eingaben>
62-
<eingabe name="LZZ" value="1" status="ok"/>
63-
<eingabe name="RE4" value="2500000" status="ok"/>
64-
<eingabe name="STKL" value="1" status="ok"/>
65-
</eingaben>
66-
<ausgaben>
67-
<ausgabe name="BK" value="0" type="STANDARD"/>
68-
<ausgabe name="BKS" value="0" type="STANDARD"/>
69-
<ausgabe name="BKV" value="0" type="STANDARD"/>
70-
<ausgabe name="LSTLZZ" value="176700" type="STANDARD"/>
71-
<ausgabe name="SOLZLZZ" value="0" type="STANDARD"/>
72-
<ausgabe name="SOLZS" value="0" type="STANDARD"/>
73-
<ausgabe name="SOLZV" value="0" type="STANDARD"/>
74-
<ausgabe name="STS" value="0" type="STANDARD"/>
75-
<ausgabe name="STV" value="0" type="STANDARD"/>
76-
<ausgabe name="VKVLZZ" value="0" type="STANDARD"/>
77-
<ausgabe name="VKVSONST" value="0" type="STANDARD"/>
78-
<ausgabe name="VFRB" value="123000" type="DBA"/>
79-
<ausgabe name="VFRBS1" value="0" type="DBA"/>
80-
<ausgabe name="VFRBS2" value="0" type="DBA"/>
81-
<ausgabe name="WVFRB" value="834700" type="DBA"/>
82-
<ausgabe name="WVFRBO" value="0" type="DBA"/>
83-
<ausgabe name="WVFRBM" value="0" type="DBA"/>
84-
</ausgaben>
85-
</lohnsteuer>
86-
*/

0 commit comments

Comments
 (0)