Skip to content

Commit 9e27d7e

Browse files
committed
fix(ISSUE-17): add possibility of toggling boolean values
1 parent 854c8bb commit 9e27d7e

File tree

4 files changed

+42
-3
lines changed

4 files changed

+42
-3
lines changed

src/main/kotlin/operations/ToggleOperation.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ class ToggleOperation(private val configuration: Configuration,private val memor
1515
}
1616

1717
fun toggleOperation(element: Toggle) {
18-
SubOperation.logger.info("Toggle symbol ${element.symbol}")
19-
var value = processValue(element.symbol)
20-
var variable = configuration.registers.getVarConfiguration(element.symbol)
18+
logger.info("Toggle symbol ${element.symbol}")
19+
val variable = configuration.registers.getVarConfiguration(element.symbol)
2120
if (variable == null) {
2221
SubOperation.logger.error("Symbol ${element.symbol} not found during Set execution")
2322
throw CancellationException("Error - Sub")

src/test/kotlin/ConfigurationParserTest.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import org.junit.jupiter.api.Test
22
import org.junit.jupiter.api.assertThrows
3+
import kotlin.test.assertTrue
34

45
class ConfigurationParserTest {
56

@@ -12,4 +13,12 @@ class ConfigurationParserTest {
1213
configuration.setFileName("invalid_missing_device.xml")
1314
assertThrows<NullPointerException> { configuration.getConfiguredDevice() }
1415
}
16+
17+
@Test
18+
fun `Parse must be able to parse toggle operations`() {
19+
val configuration = ConfigurationParser()
20+
configuration.setReadFromResources(true)
21+
configuration.setFileName("toggle_operation.xml")
22+
assertTrue(configuration.getConfiguredDevice().simulation.randomElements[0] is Toggle)
23+
}
1524
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import operations.ToggleOperation
2+
import org.junit.jupiter.api.Test
3+
import kotlin.test.assertEquals
4+
import kotlin.test.assertTrue
5+
6+
class ToggleOperationTest {
7+
8+
@Test
9+
fun `Toggle must invert the boolean value`() {
10+
val configuration = ConfigurationParser()
11+
configuration.setReadFromResources(true)
12+
configuration.setFileName("toggle_operation.xml")
13+
val plcMemory = PlcMemory(configuration)
14+
val toggleOperation = ToggleOperation(configuration.getConfiguredDevice().configuration, plcMemory, EnvironmentVariables(listOf<EnvParameter>(),ConfigurationParser() ))
15+
assertTrue(configuration.getConfiguredDevice().simulation.randomElements[0] is Toggle)
16+
assertEquals(plcMemory.readCoilStatus(configuration.getConfiguredDevice().configuration.registers.register.first().address.toInt(), 1).first(), false)
17+
toggleOperation.toggleOperation(configuration.getConfiguredDevice().simulation.randomElements[0] as Toggle)
18+
assertEquals(plcMemory.readCoilStatus(configuration.getConfiguredDevice().configuration.registers.register.first().address.toInt(), 1).first(), true)
19+
}
20+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="US-ASCII" ?>
2+
<device ip="0.0.0.0" port="502">
3+
<configuration initializeUndefinedRegisters="true" initialValue="0">
4+
<registers>
5+
<register addressType="COIL" address="0" symbol="RELAYON">0</register>
6+
</registers>
7+
</configuration>
8+
<simulation plcScanTime="1000">
9+
<toggle symbol="RELAYON" />
10+
</simulation>
11+
</device>

0 commit comments

Comments
 (0)