@@ -30,4 +30,26 @@ class SetOperationTest {
30
30
assertEquals(plcMemory.readHoldingRegister(configuration.getConfiguredDevice().configuration.registers.register[1 ].address.toInt(), 1 ).first(), 600 )
31
31
}
32
32
33
+ @Test
34
+ fun `Set must set a FLOAT32 value to a holding register variable` () {
35
+ val configuration = ConfigurationParser ()
36
+ configuration.setReadFromResources(true )
37
+ configuration.setFileName(" set_operation.xml" )
38
+ val plcMemory = PlcMemory (configuration)
39
+ val setOperation = SetOperation (configuration.getConfiguredDevice().configuration, plcMemory, EnvironmentVariables (listOf<EnvParameter >(),ConfigurationParser () ))
40
+ assertTrue(configuration.getConfiguredDevice().simulation.randomElements[2 ] is Set )
41
+ var value1 = plcMemory.readHoldingRegister(configuration.getConfiguredDevice().configuration.registers.register[2 ].address.toInt(), 2 ).first()
42
+ var value2 = plcMemory.readHoldingRegister(configuration.getConfiguredDevice().configuration.registers.register[2 ].address.toInt(), 2 )[1 ]
43
+ var intValue = (( value2.toInt() shl 16 ) or (value1.toInt() and 0xFFFF ))
44
+ var currentFloatValue = java.lang.Float .intBitsToFloat(intValue)
45
+ assertEquals(currentFloatValue, 500.0 .toFloat())
46
+ setOperation.setOperation(configuration.getConfiguredDevice().simulation.randomElements[2 ] as Set )
47
+ value1 = plcMemory.readHoldingRegister(configuration.getConfiguredDevice().configuration.registers.register[2 ].address.toInt(), 2 ).first()
48
+ value2 = plcMemory.readHoldingRegister(configuration.getConfiguredDevice().configuration.registers.register[2 ].address.toInt(), 2 )[1 ]
49
+ intValue = (( value2.toInt() shl 16 ) or (value1.toInt() and 0xFFFF ))
50
+ currentFloatValue = java.lang.Float .intBitsToFloat(intValue)
51
+ assertEquals(currentFloatValue, 600.0 .toFloat())
52
+ }
53
+
54
+
33
55
}
0 commit comments