Skip to content

Commit b35b128

Browse files
committed
Added more unit tests
1 parent c4d4037 commit b35b128

File tree

6 files changed

+47
-5
lines changed

6 files changed

+47
-5
lines changed

.github/workflows/main.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ jobs:
3131
run: |
3232
./gradlew test jacocoTestReport
3333
34+
- name: Generate JaCoCo Badge
35+
uses: cicirello/jacoco-badge-generator@v2
36+
with:
37+
generate-branches-badge: true
38+
jacoco-csv-file: build/reports/jacoco/test/jacocoTestReport.csv
39+
3440
- name: Upload Artifacts
3541
uses: actions/upload-artifact@v2
3642
with:

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ kotlin {
6565
tasks.jacocoTestReport {
6666
reports {
6767
xml.required.set(true)
68+
csv.required.set(true)
6869
}
6970
}
7071

src/main/kotlin/ConfigurationParser.kt

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import org.slf4j.LoggerFactory
12
import java.io.BufferedReader
23
import java.io.File
34
import java.io.StringReader
@@ -9,8 +10,13 @@ class ConfigurationParser {
910

1011
companion object {
1112
var fileName: String = ""
13+
var readFromResources: Boolean = false
14+
val logger = LoggerFactory.getLogger("ConfigurationParser")
1215
}
1316

17+
fun setReadFromResources(value: Boolean) {
18+
readFromResources = value
19+
}
1420

1521
fun setFileName(file: String) {
1622
fileName = file
@@ -19,16 +25,23 @@ class ConfigurationParser {
1925
try {
2026
val context = JAXBContext.newInstance(Device::class.java, Set::class.java, Random::class.java, Delay::class.java, Linear::class.java, Add::class.java, Sub::class.java, Csv::class.java, IfEqual::class.java, Parameters::class.java, Parameter::class.java)
2127
val unmarshaller = context.createUnmarshaller()
22-
if(fileName.isEmpty()) {
28+
if(fileName.isEmpty() ) {
2329
val reader = StringReader(this::class.java.classLoader.getResource("configuration.xml")!!.readText())
2430
val device = unmarshaller.unmarshal(reader) as Device
2531
return device
26-
}else{
27-
val bufferedReader: BufferedReader = File(fileName).bufferedReader()
28-
val device = unmarshaller.unmarshal(bufferedReader) as Device
29-
return device
32+
}else {
33+
if(readFromResources) {
34+
val reader = StringReader(this::class.java.classLoader.getResource(fileName)!!.readText())
35+
val device = unmarshaller.unmarshal(reader) as Device
36+
return device
37+
}else {
38+
val bufferedReader: BufferedReader = File(fileName).bufferedReader()
39+
val device = unmarshaller.unmarshal(bufferedReader) as Device
40+
return device
41+
}
3042
}
3143
} catch (e: JAXBException) {
44+
logger.error(e.message)
3245
e.printStackTrace()
3346
}
3447
return null
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import org.junit.jupiter.api.Test
2+
import org.junit.jupiter.api.assertThrows
3+
4+
class ConfigurationParserTest {
5+
6+
// When parser fails to load the xml due to missing device root section the following error will be printed followed by the stacktrace
7+
// 2024-07-23 21:21:04 ERROR ConfigurationParser - unexpected element (uri:"", local:"simulation"). Expected elements are <{}add>,<{}csv>,<{}delay>,<{}device>,<{}ifEqual>,<{}linear>,<{}random>,<{}set>,<{}sub>
8+
@Test
9+
fun `Parser must fail if device section is not present`() {
10+
val configuration = ConfigurationParser()
11+
configuration.setReadFromResources(true)
12+
configuration.setFileName("invalid_missing_device.xml")
13+
assertThrows<NullPointerException> { configuration.getConfiguredDevice() }
14+
}
15+
}

src/test/kotlin/EnvironmentVariablesTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ internal class EnvironmentVariablesTest {
55
@Test
66
fun `Command line parameter must match with parameters definition`() {
77
val configuration = ConfigurationParser()
8+
configuration.setFileName("configuration.xml")
9+
configuration.setReadFromResources(true)
810
val listParameters = mutableListOf<EnvParameter>()
911
listParameters.add(EnvParameter(
1012
"PARAM_INT16",
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="US-ASCII" ?>
2+
<!-- Invalid xml missing device root definition -->
3+
<simulation plcScanTime="1000">
4+
<delay>500</delay>
5+
</simulation>

0 commit comments

Comments
 (0)