From b4ac032fd71343398671160613b372853b027a11 Mon Sep 17 00:00:00 2001 From: Ian Farmer Date: Sat, 21 Jul 2007 04:08:28 +0000 Subject: [PATCH] Fix the NOT instruction. Includes test case. --- src/main/java/lua/CallFrame.java | 2 +- src/test/java/lua/LuaJTest.java | 4 ++++ src/test/res/boolean.lua | 31 +++++++++++++++++++++++++++++++ src/test/res/boolean.luac | Bin 0 -> 1061 bytes 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 src/test/res/boolean.lua create mode 100644 src/test/res/boolean.luac diff --git a/src/main/java/lua/CallFrame.java b/src/main/java/lua/CallFrame.java index 413d0387..90b3ace9 100644 --- a/src/main/java/lua/CallFrame.java +++ b/src/main/java/lua/CallFrame.java @@ -194,7 +194,7 @@ public class CallFrame { } case StackState.OP_NOT: { rkb = GETARG_RKB(i); - this.stack[base + a] = (rkb.luaAsBoolean() ? LBoolean.TRUE + this.stack[base + a] = (!rkb.luaAsBoolean() ? LBoolean.TRUE : LBoolean.FALSE); continue; } diff --git a/src/test/java/lua/LuaJTest.java b/src/test/java/lua/LuaJTest.java index f7740235..1f0c08dc 100644 --- a/src/test/java/lua/LuaJTest.java +++ b/src/test/java/lua/LuaJTest.java @@ -43,6 +43,10 @@ public class LuaJTest extends TestCase { runTest( "test7" ); } + public void testBoolean() throws IOException, InterruptedException { + runTest( "boolean" ); + } + public void testCompare() throws IOException, InterruptedException { runTest( "compare" ); } diff --git a/src/test/res/boolean.lua b/src/test/res/boolean.lua new file mode 100644 index 00000000..5209a69d --- /dev/null +++ b/src/test/res/boolean.lua @@ -0,0 +1,31 @@ +t = true +f = false +n = nil +s = "Hello" +z = 0 +one = 1 + +print(t) +print(f) + +print(not t) +print(not f) +print(not n) +print(not z) +print(not s) +print(not(not(t))) +print(not(not(z))) +print(not(not(n))) + +print(t and f) +print(t or f) +print(f and t) +print(f or t) + +print(f or one) +print(f or z) +print(f or n) + +print(t and one) +print(t and z) +print(t and n) diff --git a/src/test/res/boolean.luac b/src/test/res/boolean.luac new file mode 100644 index 0000000000000000000000000000000000000000..ac742c2c19404f72378c024357b59074af3ce090 GIT binary patch literal 1061 zcmZ{iOHRWu5QfLbCFT7P4?&^afGgCSN-WqQcHIRjNJvqFO1oj@qxDD}fqxt)8oO?) zFXQ<<9;b;Xuj}%Slrd&ZCq!gF+P1FB=DA*%Nc&6cC5D=rhIpID|JEw^bKDyU=vuhs-|a zUaGooJM-(mG#r*0+}ft<&EL!ye=on9l`r6Pq5`}H!{>zIwah5M+c0Cn0meN?7)y?k zOZdP_PLWH_kW0>yr(D3LT*9SX!R5Gy&w(?;=VpsrxEy!zIqu