2018-09-24 20:34:12 +00:00
|
|
|
package prog8tests
|
|
|
|
|
|
|
|
import org.junit.jupiter.api.Test
|
|
|
|
import org.junit.jupiter.api.TestInstance
|
2018-09-24 21:38:33 +00:00
|
|
|
import prog8.ast.DataType
|
|
|
|
import prog8.ast.ExpressionError
|
|
|
|
import prog8.ast.LiteralValue
|
|
|
|
import prog8.ast.Position
|
2018-10-13 16:15:09 +00:00
|
|
|
import prog8.compiler.intermediate.Value
|
2018-09-24 21:38:33 +00:00
|
|
|
import prog8.stackvm.VmExecutionException
|
2018-09-24 20:34:12 +00:00
|
|
|
import kotlin.test.*
|
|
|
|
|
|
|
|
|
2018-09-28 17:35:34 +00:00
|
|
|
private fun sameValueAndType(v1: Value, v2: Value): Boolean {
|
|
|
|
return v1.type==v2.type && v1==v2
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun sameValueAndType(lv1: LiteralValue, lv2: LiteralValue): Boolean {
|
|
|
|
return lv1.type==lv2.type && lv1==lv2
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2018-09-24 20:34:12 +00:00
|
|
|
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
|
|
|
class TestStackVmValue {
|
|
|
|
|
|
|
|
@Test
|
|
|
|
fun testIdentity() {
|
2018-10-10 07:21:20 +00:00
|
|
|
val v = Value(DataType.UWORD, 12345)
|
2018-09-24 20:34:12 +00:00
|
|
|
assertEquals(v, v)
|
|
|
|
assertFalse(v != v)
|
|
|
|
assertTrue(v<=v)
|
|
|
|
assertTrue(v>=v)
|
|
|
|
assertFalse(v<v)
|
|
|
|
assertFalse(v>v)
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertTrue(sameValueAndType(Value(DataType.UBYTE, 100), Value(DataType.UBYTE, 100)))
|
2018-09-24 20:34:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
fun testEqualsAndNotEquals() {
|
2018-10-10 07:21:20 +00:00
|
|
|
assertEquals(Value(DataType.UBYTE, 100), Value(DataType.UBYTE, 100))
|
|
|
|
assertEquals(Value(DataType.UBYTE, 100), Value(DataType.UWORD, 100))
|
|
|
|
assertEquals(Value(DataType.UBYTE, 100), Value(DataType.FLOAT, 100))
|
|
|
|
assertEquals(Value(DataType.UWORD, 254), Value(DataType.UBYTE, 254))
|
|
|
|
assertEquals(Value(DataType.UWORD, 12345), Value(DataType.UWORD, 12345))
|
|
|
|
assertEquals(Value(DataType.UWORD, 12345), Value(DataType.FLOAT, 12345))
|
|
|
|
assertEquals(Value(DataType.FLOAT, 100.0), Value(DataType.UBYTE, 100))
|
|
|
|
assertEquals(Value(DataType.FLOAT, 22239.0), Value(DataType.UWORD, 22239))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertEquals(Value(DataType.FLOAT, 9.99), Value(DataType.FLOAT, 9.99))
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertTrue(sameValueAndType(Value(DataType.UBYTE, 100), Value(DataType.UBYTE, 100)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.UBYTE, 100), Value(DataType.UWORD, 100)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.UBYTE, 100), Value(DataType.FLOAT, 100)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.UWORD, 254), Value(DataType.UBYTE, 254)))
|
|
|
|
assertTrue(sameValueAndType(Value(DataType.UWORD, 12345), Value(DataType.UWORD, 12345)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.UWORD, 12345), Value(DataType.FLOAT, 12345)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.FLOAT, 100.0), Value(DataType.UBYTE, 100)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.FLOAT, 22239.0), Value(DataType.UWORD, 22239)))
|
2018-09-28 17:35:34 +00:00
|
|
|
assertTrue(sameValueAndType(Value(DataType.FLOAT, 9.99), Value(DataType.FLOAT, 9.99)))
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertNotEquals(Value(DataType.UBYTE, 100), Value(DataType.UBYTE, 101))
|
|
|
|
assertNotEquals(Value(DataType.UBYTE, 100), Value(DataType.UWORD, 101))
|
|
|
|
assertNotEquals(Value(DataType.UBYTE, 100), Value(DataType.FLOAT, 101))
|
|
|
|
assertNotEquals(Value(DataType.UWORD, 245), Value(DataType.UBYTE, 246))
|
|
|
|
assertNotEquals(Value(DataType.UWORD, 12345), Value(DataType.UWORD, 12346))
|
|
|
|
assertNotEquals(Value(DataType.UWORD, 12345), Value(DataType.FLOAT, 12346))
|
|
|
|
assertNotEquals(Value(DataType.FLOAT, 9.99), Value(DataType.UBYTE, 9))
|
|
|
|
assertNotEquals(Value(DataType.FLOAT, 9.99), Value(DataType.UWORD, 9))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertNotEquals(Value(DataType.FLOAT, 9.99), Value(DataType.FLOAT, 9.0))
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertFalse(sameValueAndType(Value(DataType.UBYTE, 100), Value(DataType.UBYTE, 101)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.UBYTE, 100), Value(DataType.UWORD, 101)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.UBYTE, 100), Value(DataType.FLOAT, 101)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.UWORD, 245), Value(DataType.UBYTE, 246)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.UWORD, 12345), Value(DataType.UWORD, 12346)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.UWORD, 12345), Value(DataType.FLOAT, 12346)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.FLOAT, 9.99), Value(DataType.UBYTE, 9)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.FLOAT, 9.99), Value(DataType.UWORD, 9)))
|
2018-09-28 17:35:34 +00:00
|
|
|
assertFalse(sameValueAndType(Value(DataType.FLOAT, 9.99), Value(DataType.FLOAT, 9.0)))
|
2018-09-29 15:33:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
fun testEqualsAndNotEqualsHeapTypes()
|
|
|
|
{
|
|
|
|
assertTrue(sameValueAndType(Value(DataType.STR, 999), Value(DataType.STR, 999)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.STR, 999), Value(DataType.STR_P, 999)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.STR, 999), Value(DataType.STR, 222)))
|
2018-09-28 17:35:34 +00:00
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertTrue(sameValueAndType(Value(DataType.ARRAY_UB, 99), Value(DataType.ARRAY_UB, 99)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.ARRAY_UB, 99), Value(DataType.MATRIX_UB, 99)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.ARRAY_UB, 99), Value(DataType.ARRAY_UB, 22)))
|
2018-10-01 23:52:08 +00:00
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertTrue(sameValueAndType(Value(DataType.ARRAY_UW, 999), Value(DataType.ARRAY_UW, 999)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.ARRAY_UW, 999), Value(DataType.MATRIX_UB, 999)))
|
|
|
|
assertFalse(sameValueAndType(Value(DataType.ARRAY_UW, 999), Value(DataType.ARRAY_UW, 222)))
|
2018-10-01 23:52:08 +00:00
|
|
|
|
|
|
|
assertTrue(sameValueAndType(Value(DataType.ARRAY_F, 999), Value(DataType.ARRAY_F, 999)))
|
2018-10-10 07:21:20 +00:00
|
|
|
assertFalse(sameValueAndType(Value(DataType.ARRAY_F, 999), Value(DataType.ARRAY_UW, 999)))
|
2018-10-01 23:52:08 +00:00
|
|
|
assertFalse(sameValueAndType(Value(DataType.ARRAY_F, 999), Value(DataType.ARRAY_F, 222)))
|
2018-09-24 20:34:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
fun testGreaterThan(){
|
2018-10-10 07:21:20 +00:00
|
|
|
assertTrue(Value(DataType.UBYTE, 100) > Value(DataType.UBYTE, 99))
|
|
|
|
assertTrue(Value(DataType.UWORD, 254) > Value(DataType.UWORD, 253))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertTrue(Value(DataType.FLOAT, 100.0) > Value(DataType.FLOAT, 99.9))
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertTrue(Value(DataType.UBYTE, 100) >= Value(DataType.UBYTE, 100))
|
|
|
|
assertTrue(Value(DataType.UWORD, 254) >= Value(DataType.UWORD, 254))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertTrue(Value(DataType.FLOAT, 100.0) >= Value(DataType.FLOAT, 100.0))
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertFalse(Value(DataType.UBYTE, 100) > Value(DataType.UBYTE, 100))
|
|
|
|
assertFalse(Value(DataType.UWORD, 254) > Value(DataType.UWORD, 254))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertFalse(Value(DataType.FLOAT, 100.0) > Value(DataType.FLOAT, 100.0))
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertFalse(Value(DataType.UBYTE, 100) >= Value(DataType.UBYTE, 101))
|
|
|
|
assertFalse(Value(DataType.UWORD, 254) >= Value(DataType.UWORD, 255))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertFalse(Value(DataType.FLOAT, 100.0) >= Value(DataType.FLOAT, 100.1))
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
fun testLessThan() {
|
2018-10-10 07:21:20 +00:00
|
|
|
assertTrue(Value(DataType.UBYTE, 100) < Value(DataType.UBYTE, 101))
|
|
|
|
assertTrue(Value(DataType.UWORD, 254) < Value(DataType.UWORD, 255))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertTrue(Value(DataType.FLOAT, 100.0) < Value(DataType.FLOAT, 100.1))
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertTrue(Value(DataType.UBYTE, 100) <= Value(DataType.UBYTE, 100))
|
|
|
|
assertTrue(Value(DataType.UWORD, 254) <= Value(DataType.UWORD, 254))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertTrue(Value(DataType.FLOAT, 100.0) <= Value(DataType.FLOAT, 100.0))
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertFalse(Value(DataType.UBYTE, 100) < Value(DataType.UBYTE, 100))
|
|
|
|
assertFalse(Value(DataType.UWORD, 254) < Value(DataType.UWORD, 254))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertFalse(Value(DataType.FLOAT, 100.0) < Value(DataType.FLOAT, 100.0))
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertFalse(Value(DataType.UBYTE, 100) <= Value(DataType.UBYTE, 99))
|
|
|
|
assertFalse(Value(DataType.UWORD, 254) <= Value(DataType.UWORD, 253))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertFalse(Value(DataType.FLOAT, 100.0) <= Value(DataType.FLOAT, 99.9))
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
2018-10-05 14:57:13 +00:00
|
|
|
fun testNoDtConversion() {
|
|
|
|
assertFailsWith<VmExecutionException> {
|
2018-10-10 07:21:20 +00:00
|
|
|
Value(DataType.UWORD, 100).add(Value(DataType.UBYTE, 120))
|
2018-10-05 14:57:13 +00:00
|
|
|
}
|
|
|
|
assertFailsWith<VmExecutionException> {
|
2018-10-10 07:21:20 +00:00
|
|
|
Value(DataType.UBYTE, 100).add(Value(DataType.UWORD, 120))
|
2018-10-05 14:57:13 +00:00
|
|
|
}
|
|
|
|
assertFailsWith<VmExecutionException> {
|
2018-10-10 07:21:20 +00:00
|
|
|
Value(DataType.FLOAT, 100.22).add(Value(DataType.UWORD, 120))
|
2018-10-05 14:57:13 +00:00
|
|
|
}
|
|
|
|
assertFailsWith<VmExecutionException> {
|
2018-10-10 07:21:20 +00:00
|
|
|
Value(DataType.UWORD, 1002).add(Value(DataType.FLOAT, 120.22))
|
2018-10-05 14:57:13 +00:00
|
|
|
}
|
|
|
|
assertFailsWith<VmExecutionException> {
|
2018-10-10 07:21:20 +00:00
|
|
|
Value(DataType.FLOAT, 100.22).add(Value(DataType.UBYTE, 120))
|
2018-10-05 14:57:13 +00:00
|
|
|
}
|
|
|
|
assertFailsWith<VmExecutionException> {
|
2018-10-10 07:21:20 +00:00
|
|
|
Value(DataType.UBYTE, 12).add(Value(DataType.FLOAT, 120.22))
|
2018-10-05 14:57:13 +00:00
|
|
|
}
|
2018-09-24 20:34:12 +00:00
|
|
|
}
|
2018-09-24 23:02:01 +00:00
|
|
|
|
|
|
|
@Test
|
|
|
|
fun testNoAutoFloatConversion() {
|
|
|
|
assertFailsWith<VmExecutionException> {
|
2018-10-10 07:21:20 +00:00
|
|
|
Value(DataType.UBYTE, 233).add(Value(DataType.FLOAT, 1.234))
|
2018-09-24 23:02:01 +00:00
|
|
|
}
|
|
|
|
assertFailsWith<VmExecutionException> {
|
2018-10-10 07:21:20 +00:00
|
|
|
Value(DataType.UWORD, 233).add(Value(DataType.FLOAT, 1.234))
|
2018-09-24 23:02:01 +00:00
|
|
|
}
|
|
|
|
assertFailsWith<VmExecutionException> {
|
2018-10-10 07:21:20 +00:00
|
|
|
Value(DataType.UBYTE, 233).mul(Value(DataType.FLOAT, 1.234))
|
2018-09-24 23:02:01 +00:00
|
|
|
}
|
|
|
|
assertFailsWith<VmExecutionException> {
|
2018-10-10 07:21:20 +00:00
|
|
|
Value(DataType.UWORD, 233).mul(Value(DataType.FLOAT, 1.234))
|
2018-09-24 23:02:01 +00:00
|
|
|
}
|
|
|
|
assertFailsWith<VmExecutionException> {
|
2018-10-10 07:21:20 +00:00
|
|
|
Value(DataType.UBYTE, 233).div(Value(DataType.FLOAT, 1.234))
|
2018-09-24 23:02:01 +00:00
|
|
|
}
|
|
|
|
assertFailsWith<VmExecutionException> {
|
2018-10-10 07:21:20 +00:00
|
|
|
Value(DataType.UWORD, 233).div(Value(DataType.FLOAT, 1.234))
|
2018-09-24 23:02:01 +00:00
|
|
|
}
|
|
|
|
val result = Value(DataType.FLOAT, 233.333).add(Value(DataType.FLOAT, 1.234))
|
|
|
|
}
|
2018-09-24 20:34:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
|
|
|
class TestParserLiteralValue {
|
|
|
|
|
|
|
|
private val dummyPos = Position("test", 0,0,0)
|
|
|
|
|
|
|
|
@Test
|
|
|
|
fun testIdentity() {
|
2018-10-10 07:21:20 +00:00
|
|
|
val v = LiteralValue(DataType.UWORD, wordvalue = 12345, position = dummyPos)
|
2018-09-24 20:34:12 +00:00
|
|
|
assertEquals(v, v)
|
|
|
|
assertFalse(v != v)
|
|
|
|
assertTrue(v <= v)
|
|
|
|
assertTrue(v >= v)
|
|
|
|
assertFalse(v < v)
|
|
|
|
assertFalse(v > v)
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertTrue(sameValueAndType(LiteralValue(DataType.UWORD, wordvalue = 12345, position = dummyPos), LiteralValue(DataType.UWORD, wordvalue = 12345, position = dummyPos)))
|
2018-09-24 20:34:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
fun testEqualsAndNotEquals() {
|
2018-10-10 07:21:20 +00:00
|
|
|
assertEquals(LiteralValue(DataType.UBYTE, 100, position=dummyPos), LiteralValue(DataType.UBYTE, 100, position=dummyPos))
|
|
|
|
assertEquals(LiteralValue(DataType.UBYTE, 100, position=dummyPos), LiteralValue(DataType.UWORD, wordvalue=100, position=dummyPos))
|
|
|
|
assertEquals(LiteralValue(DataType.UBYTE, 100, position=dummyPos), LiteralValue(DataType.FLOAT, floatvalue=100.0, position=dummyPos))
|
|
|
|
assertEquals(LiteralValue(DataType.UWORD, wordvalue=254, position=dummyPos), LiteralValue(DataType.UBYTE, 254, position=dummyPos))
|
|
|
|
assertEquals(LiteralValue(DataType.UWORD, wordvalue=12345, position=dummyPos), LiteralValue(DataType.UWORD, wordvalue=12345, position=dummyPos))
|
|
|
|
assertEquals(LiteralValue(DataType.UWORD, wordvalue=12345, position=dummyPos), LiteralValue(DataType.FLOAT, floatvalue=12345.0, position=dummyPos))
|
|
|
|
assertEquals(LiteralValue(DataType.FLOAT, floatvalue=100.0, position=dummyPos), LiteralValue(DataType.UBYTE, 100, position=dummyPos))
|
|
|
|
assertEquals(LiteralValue(DataType.FLOAT, floatvalue=22239.0, position=dummyPos), LiteralValue(DataType.UWORD,wordvalue=22239, position=dummyPos))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertEquals(LiteralValue(DataType.FLOAT, floatvalue=9.99, position=dummyPos), LiteralValue(DataType.FLOAT, floatvalue=9.99, position=dummyPos))
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertTrue(sameValueAndType(LiteralValue(DataType.UBYTE, 100, position=dummyPos), LiteralValue(DataType.UBYTE, 100, position=dummyPos)))
|
|
|
|
assertFalse(sameValueAndType(LiteralValue(DataType.UBYTE, 100, position=dummyPos), LiteralValue(DataType.UWORD, wordvalue=100, position=dummyPos)))
|
|
|
|
assertFalse(sameValueAndType(LiteralValue(DataType.UBYTE, 100, position=dummyPos), LiteralValue(DataType.FLOAT, floatvalue=100.0, position=dummyPos)))
|
|
|
|
assertFalse(sameValueAndType(LiteralValue(DataType.UWORD, wordvalue=254, position=dummyPos), LiteralValue(DataType.UBYTE, 254, position=dummyPos)))
|
|
|
|
assertTrue(sameValueAndType(LiteralValue(DataType.UWORD, wordvalue=12345, position=dummyPos), LiteralValue(DataType.UWORD, wordvalue=12345, position=dummyPos)))
|
|
|
|
assertFalse(sameValueAndType(LiteralValue(DataType.UWORD, wordvalue=12345, position=dummyPos), LiteralValue(DataType.FLOAT, floatvalue=12345.0, position=dummyPos)))
|
|
|
|
assertFalse(sameValueAndType(LiteralValue(DataType.FLOAT, floatvalue=100.0, position=dummyPos), LiteralValue(DataType.UBYTE, 100, position=dummyPos)))
|
|
|
|
assertFalse(sameValueAndType(LiteralValue(DataType.FLOAT, floatvalue=22239.0, position=dummyPos), LiteralValue(DataType.UWORD,wordvalue=22239, position=dummyPos)))
|
2018-09-28 17:35:34 +00:00
|
|
|
assertTrue(sameValueAndType(LiteralValue(DataType.FLOAT, floatvalue=9.99, position=dummyPos), LiteralValue(DataType.FLOAT, floatvalue=9.99, position=dummyPos)))
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertNotEquals(LiteralValue(DataType.UBYTE, 100, position=dummyPos), LiteralValue(DataType.UBYTE, 101, position=dummyPos))
|
|
|
|
assertNotEquals(LiteralValue(DataType.UBYTE, 100, position=dummyPos), LiteralValue(DataType.UWORD, wordvalue=101, position=dummyPos))
|
|
|
|
assertNotEquals(LiteralValue(DataType.UBYTE, 100, position=dummyPos), LiteralValue(DataType.FLOAT, floatvalue=101.0, position=dummyPos))
|
|
|
|
assertNotEquals(LiteralValue(DataType.UWORD, wordvalue=245, position=dummyPos), LiteralValue(DataType.UBYTE, 246, position=dummyPos))
|
|
|
|
assertNotEquals(LiteralValue(DataType.UWORD, wordvalue=12345, position=dummyPos), LiteralValue(DataType.UWORD, wordvalue=12346, position=dummyPos))
|
|
|
|
assertNotEquals(LiteralValue(DataType.UWORD, wordvalue=12345, position=dummyPos), LiteralValue(DataType.FLOAT, floatvalue=12346.0, position=dummyPos))
|
|
|
|
assertNotEquals(LiteralValue(DataType.FLOAT, floatvalue=9.99, position=dummyPos), LiteralValue(DataType.UBYTE, 9, position=dummyPos))
|
|
|
|
assertNotEquals(LiteralValue(DataType.FLOAT, floatvalue=9.99, position=dummyPos), LiteralValue(DataType.UWORD, wordvalue=9, position=dummyPos))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertNotEquals(LiteralValue(DataType.FLOAT, floatvalue=9.99, position=dummyPos), LiteralValue(DataType.FLOAT, floatvalue=9.0, position=dummyPos))
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertFalse(sameValueAndType(LiteralValue(DataType.UBYTE, 100, position=dummyPos), LiteralValue(DataType.UBYTE, 101, position=dummyPos)))
|
|
|
|
assertFalse(sameValueAndType(LiteralValue(DataType.UBYTE, 100, position=dummyPos), LiteralValue(DataType.UWORD, wordvalue=101, position=dummyPos)))
|
|
|
|
assertFalse(sameValueAndType(LiteralValue(DataType.UBYTE, 100, position=dummyPos), LiteralValue(DataType.FLOAT, floatvalue=101.0, position=dummyPos)))
|
|
|
|
assertFalse(sameValueAndType(LiteralValue(DataType.UWORD, wordvalue=245, position=dummyPos), LiteralValue(DataType.UBYTE, 246, position=dummyPos)))
|
|
|
|
assertFalse(sameValueAndType(LiteralValue(DataType.UWORD, wordvalue=12345, position=dummyPos), LiteralValue(DataType.UWORD, wordvalue=12346, position=dummyPos)))
|
|
|
|
assertFalse(sameValueAndType(LiteralValue(DataType.UWORD, wordvalue=12345, position=dummyPos), LiteralValue(DataType.FLOAT, floatvalue=12346.0, position=dummyPos)))
|
|
|
|
assertFalse(sameValueAndType(LiteralValue(DataType.FLOAT, floatvalue=9.99, position=dummyPos), LiteralValue(DataType.UBYTE, 9, position=dummyPos)))
|
|
|
|
assertFalse(sameValueAndType(LiteralValue(DataType.FLOAT, floatvalue=9.99, position=dummyPos), LiteralValue(DataType.UWORD, wordvalue=9, position=dummyPos)))
|
2018-09-28 17:35:34 +00:00
|
|
|
assertFalse(sameValueAndType(LiteralValue(DataType.FLOAT, floatvalue=9.99, position=dummyPos), LiteralValue(DataType.FLOAT, floatvalue=9.0, position=dummyPos)))
|
|
|
|
|
|
|
|
assertTrue(sameValueAndType(LiteralValue(DataType.STR, strvalue = "hello", position=dummyPos), LiteralValue(DataType.STR, strvalue="hello", position=dummyPos)))
|
|
|
|
assertFalse(sameValueAndType(LiteralValue(DataType.STR, strvalue = "hello", position=dummyPos), LiteralValue(DataType.STR, strvalue="bye", position=dummyPos)))
|
2018-09-24 20:34:12 +00:00
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
val lvOne = LiteralValue(DataType.UBYTE, 1, position=dummyPos)
|
|
|
|
val lvTwo = LiteralValue(DataType.UBYTE, 2, position=dummyPos)
|
|
|
|
val lvThree = LiteralValue(DataType.UBYTE, 3, position=dummyPos)
|
|
|
|
val lvOneR = LiteralValue(DataType.UBYTE, 1, position=dummyPos)
|
|
|
|
val lvTwoR = LiteralValue(DataType.UBYTE, 2, position=dummyPos)
|
|
|
|
val lvThreeR = LiteralValue(DataType.UBYTE, 3, position=dummyPos)
|
|
|
|
val lv1 = LiteralValue(DataType.ARRAY_UB, arrayvalue = arrayOf(lvOne, lvTwo, lvThree), position=dummyPos)
|
|
|
|
val lv2 = LiteralValue(DataType.ARRAY_UB, arrayvalue = arrayOf(lvOneR, lvTwoR, lvThreeR), position=dummyPos)
|
2018-09-24 20:34:12 +00:00
|
|
|
assertFailsWith<ExpressionError> {
|
|
|
|
assertEquals(lv1, lv2)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
fun testGreaterThan(){
|
2018-10-10 07:21:20 +00:00
|
|
|
assertTrue(LiteralValue(DataType.UBYTE, 100, position=dummyPos) > LiteralValue(DataType.UBYTE, 99, position=dummyPos))
|
|
|
|
assertTrue(LiteralValue(DataType.UWORD, wordvalue=254, position=dummyPos) > LiteralValue(DataType.UWORD, wordvalue=253, position=dummyPos))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertTrue(LiteralValue(DataType.FLOAT, floatvalue=100.0, position=dummyPos) > LiteralValue(DataType.FLOAT, floatvalue=99.9, position=dummyPos))
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertTrue(LiteralValue(DataType.UBYTE, 100, position=dummyPos) >= LiteralValue(DataType.UBYTE, 100, position=dummyPos))
|
|
|
|
assertTrue(LiteralValue(DataType.UWORD, wordvalue=254, position=dummyPos) >= LiteralValue(DataType.UWORD,wordvalue= 254, position=dummyPos))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertTrue(LiteralValue(DataType.FLOAT, floatvalue=100.0, position=dummyPos) >= LiteralValue(DataType.FLOAT, floatvalue=100.0, position=dummyPos))
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertFalse(LiteralValue(DataType.UBYTE, 100, position=dummyPos) > LiteralValue(DataType.UBYTE, 100, position=dummyPos))
|
|
|
|
assertFalse(LiteralValue(DataType.UWORD, wordvalue=254, position=dummyPos) > LiteralValue(DataType.UWORD, wordvalue=254, position=dummyPos))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertFalse(LiteralValue(DataType.FLOAT, floatvalue=100.0, position=dummyPos) > LiteralValue(DataType.FLOAT, floatvalue=100.0, position=dummyPos))
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertFalse(LiteralValue(DataType.UBYTE, 100, position=dummyPos) >= LiteralValue(DataType.UBYTE, 101, position=dummyPos))
|
|
|
|
assertFalse(LiteralValue(DataType.UWORD, wordvalue=254, position=dummyPos) >= LiteralValue(DataType.UWORD,wordvalue= 255, position=dummyPos))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertFalse(LiteralValue(DataType.FLOAT, floatvalue=100.0, position=dummyPos) >= LiteralValue(DataType.FLOAT, floatvalue=100.1, position=dummyPos))
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
fun testLessThan() {
|
2018-10-10 07:21:20 +00:00
|
|
|
assertTrue(LiteralValue(DataType.UBYTE, 100, position=dummyPos) < LiteralValue(DataType.UBYTE, 101, position=dummyPos))
|
|
|
|
assertTrue(LiteralValue(DataType.UWORD, wordvalue=254, position=dummyPos) < LiteralValue(DataType.UWORD, wordvalue=255, position=dummyPos))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertTrue(LiteralValue(DataType.FLOAT, floatvalue=100.0, position=dummyPos) < LiteralValue(DataType.FLOAT, floatvalue=100.1, position=dummyPos))
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertTrue(LiteralValue(DataType.UBYTE, 100, position=dummyPos) <= LiteralValue(DataType.UBYTE, 100, position=dummyPos))
|
|
|
|
assertTrue(LiteralValue(DataType.UWORD, wordvalue=254, position=dummyPos) <= LiteralValue(DataType.UWORD,wordvalue= 254, position=dummyPos))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertTrue(LiteralValue(DataType.FLOAT, floatvalue=100.0, position=dummyPos) <= LiteralValue(DataType.FLOAT, floatvalue=100.0, position=dummyPos))
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertFalse(LiteralValue(DataType.UBYTE, 100, position=dummyPos) < LiteralValue(DataType.UBYTE, 100, position=dummyPos))
|
|
|
|
assertFalse(LiteralValue(DataType.UWORD, wordvalue=254, position=dummyPos) < LiteralValue(DataType.UWORD, wordvalue=254, position=dummyPos))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertFalse(LiteralValue(DataType.FLOAT, floatvalue=100.0, position=dummyPos) < LiteralValue(DataType.FLOAT, floatvalue=100.0, position=dummyPos))
|
|
|
|
|
2018-10-10 07:21:20 +00:00
|
|
|
assertFalse(LiteralValue(DataType.UBYTE, 100, position=dummyPos) <= LiteralValue(DataType.UBYTE, 99, position=dummyPos))
|
|
|
|
assertFalse(LiteralValue(DataType.UWORD,wordvalue= 254, position=dummyPos) <= LiteralValue(DataType.UWORD,wordvalue= 253, position=dummyPos))
|
2018-09-24 20:34:12 +00:00
|
|
|
assertFalse(LiteralValue(DataType.FLOAT,floatvalue= 100.0, position=dummyPos) <= LiteralValue(DataType.FLOAT, floatvalue=99.9, position=dummyPos))
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|