diff --git a/txscript/data/script_tests.json b/txscript/data/script_tests.json index 4aae767806..880b9ccb4d 100644 --- a/txscript/data/script_tests.json +++ b/txscript/data/script_tests.json @@ -918,23 +918,79 @@ ["2147483648 1", "ROTL 1 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "ROTL must fail with input value >4 bytes"], ["1 2147483648", "ROTL TRUE", "NONE", "ERR_OUT_OF_RANGE", "ROTL must fail with rotation count >4 bytes"], +["NUMERIC opcode tests"], -["0x52", "0x5f ADD 0x60 EQUAL", "NONE", "ERR_EVAL_FALSE", "0x51 through 0x60 push 1 through 16 onto stack"], +["1ADD test coverage"], +["1 1ADD", "2 EQUAL", "NONE", "OK"], +["1ADD", "1 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "1ADD requires an input parameter"], +["2147483648 1ADD", "1", "NONE", "ERR_OUT_OF_RANGE", "Exceed 4 bytes parameter limit"], -["1 2 0 IF AND ELSE 1 ENDIF", "NOP", "NONE", "OK"], -["1 2 0 IF OR ELSE 1 ENDIF", "NOP", "NONE", "OK"], -["1 2 0 IF XOR ELSE 1 ENDIF", "NOP", "NONE", "OK"], -["2 0 IF 2MUL ELSE 1 ENDIF", "NOP", "NONE", "OK"], -["2 0 IF 2DIV ELSE 1 ENDIF", "NOP", "NONE", "OK"], -["2 2 0 IF MUL ELSE 1 ENDIF", "NOP", "NONE", "OK"], -["2 2 0 IF DIV ELSE 1 ENDIF", "NOP", "NONE", "OK"], -["2 2 0 IF MOD ELSE 1 ENDIF", "NOP", "NONE", "OK"], -["2 2 0 IF LSHIFT ELSE 1 ENDIF", "NOP", "NONE", "OK"], -["2 2 0 IF RSHIFT ELSE 1 ENDIF", "NOP", "NONE", "OK"], +["1SUB test coverage"], +["111 1SUB", "110 EQUAL", "NONE", "OK"], + +["1SUB", "-1 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "1SUB requires an input parameter"], +["2147483648 1SUB", "1", "NONE", "ERR_OUT_OF_RANGE", "Exceed 4 bytes parameter limit"], + +["2MUL test coverage"], +["2", "2MUL 1", "NONE", "OK", "2MUL is NOP"], + +["2DIV test coverage"], +["2", "2DIV 1", "NONE", "OK", "2DIV is NOP"], + +["NEGATE test coverage"], +["2", "NEGATE -2 EQUAL", "NONE", "OK"], +["", "NEGATE -2 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "NEGATE requires an input parameter"], +["2147483648", "NEGATE -2147483648 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "Exceed 4 bytes parameter limit"], + +["ABS test coverage"], +["0 ABS", "0 EQUAL", "NONE", "OK"], +["16 ABS", "16 EQUAL", "NONE", "OK"], +["-16 ABS", "-16 NEGATE EQUAL", "NONE", "OK"], +["", " ABS 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "ABS requires an input parameter"], +["2147483648 ABS", "2147483648 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "Exceed 4 bytes parameter limit"], + +["NOT test coverage"], +["0 NOT", "NOP", "NONE", "OK"], +["1 NOT", "0 EQUAL", "NONE", "OK"], +["11 NOT", "0 EQUAL", "NONE", "OK"], +["-11 NOT", "0 EQUAL", "NONE", "OK"], +["", "NOT 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "NOT requires an input parameter"], +["2147483648", "NOT 0 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "Exceed 4 bytes parameter limit"], + +["0NOTEQUAL test coverage"], +["0 0NOTEQUAL", "0 EQUAL", "NONE", "OK"], +["1 0NOTEQUAL", "1 EQUAL", "NONE", "OK"], +["111 0NOTEQUAL", "1 EQUAL", "NONE", "OK"], +["-111 0NOTEQUAL", "1 EQUAL", "NONE", "OK"], +["", "0NOTEQUAL 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "0NOTEQUAL requires an input parameter"], +["2147483648", "0NOTEQUAL 0 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "Exceed 4 bytes parameter limit"], + +["ADD test coverage"], +["2 -2 ADD", "0 EQUAL", "NONE", "OK"], +["2147483647 -2147483647 ADD", "0 EQUAL", "NONE", "OK"], +["-1 -1 ADD", "-2 EQUAL", "NONE", "OK"], +["", "ADD 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "ADD requires an two input parameters"], +["0", "ADD 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "ADD requires an two input parameters"], +["2147483648 1", "ADD 2147483649 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "Exceed 4 bytes parameter limit"], + +["SUB test coverage"], +["2 -2 SUB", "4 EQUAL", "NONE", "OK"], +["2147483647 2147483647 SUB", "0 EQUAL", "NONE", "OK"], +["2147483647 2147483647 SUB", "0 EQUAL", "NONE", "OK"], +["111 1 ADD 12 SUB", "100 EQUAL", "NONE", "OK"], +["-1 1 SUB", "-2 EQUAL", "NONE", "OK"], +["", "SUB 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "SUB requires an two input parameters"], +["0", "SUB 0 EQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "SUB requires an two input parameters"], +["2147483648 1", "SUB 2147483647 EQUAL", "NONE", "ERR_OUT_OF_RANGE", "Exceed 4 bytes parameter limit"], +["MUL test coverage"], ["2 DUP MUL", "4 EQUAL", "NONE", "OK"], +["2 0 MUL", "0 EQUAL", "NONE", "OK"], +["", "MUL", "NONE", "ERR_INVALID_STACK_OPERATION", "MUL requires two input parameters"], +["2", "MUL", "NONE", "ERR_INVALID_STACK_OPERATION", "MUL requires two input parameters"], +["2147483648 2", "MUL", "NONE", "ERR_OUT_OF_RANGE", "Exceed 4 bytes parameter limit"], -["Division related test coverage"], +["DIV test coverage"], ["7 3", "DIV 2 EQUAL", "NONE", "OK", "DIV must perform integer division (7 / 3)"], ["8 3", "DIV 2 EQUAL", "NONE", "OK", "DIV must perform integer division (8 / 3)"], ["6 3", "DIV 2 EQUAL", "NONE", "OK", "DIV must support a positive dividend and divisor"], @@ -951,7 +1007,7 @@ ["2147483648 1073741824", "DIV TRUE", "NONE", "ERR_OUT_OF_RANGE", "DIV must fail with dividend >4 bytes"], ["1 2147483648", "DIV TRUE", "NONE", "ERR_OUT_OF_RANGE", "DIV must fail with divisor >4 bytes"], -["Modular division related test coverage"], +["MOD test coverage"], ["7 3", "MOD 1 EQUAL", "NONE", "OK", "MOD must produce expected result (7%3)"], ["8 3", "MOD 2 EQUAL", "NONE", "OK", "MOD must produce expected result (8%3)"], ["6 3", "MOD 0 EQUAL", "NONE", "OK", "MOD must support a positive dividend and divisor"], @@ -967,7 +1023,7 @@ ["2147483648 1073741824", "MOD TRUE", "NONE", "ERR_OUT_OF_RANGE", "MOD must fail with dividend >4 bytes"], ["1 2147483648", "MOD TRUE", "NONE", "ERR_OUT_OF_RANGE", "MOD must fail with divisor >4 bytes"], -["Left bit shift related test coverage"], +["LSHIFT test coverage"], ["1 1", "LSHIFT 2 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 1"], ["1 2", "LSHIFT 4 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 2"], ["1 3", "LSHIFT 8 EQUAL", "NONE", "OK", "LSHIFT 0x1 << 3"], @@ -1011,7 +1067,7 @@ ["2147483648 1", "LSHIFT TRUE", "NONE", "ERR_OUT_OF_RANGE", "LSHIFT must fail with input value >4 bytes"], ["1 2147483648", "LSHIFT TRUE", "NONE", "ERR_OUT_OF_RANGE", "LSHIFT must fail with shift count >4 bytes"], -["Right bit shift related test coverage"], +["RSHIFT test coverage"], ["1073741825 1", "RSHIFT 536870912 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 1"], ["1073741825 2", "RSHIFT 268435456 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 2"], ["1073741825 3", "RSHIFT 134217728 EQUAL", "NONE", "OK", "RSHIFT 0x40000001 >> 3"], @@ -1059,109 +1115,107 @@ ["2147483648 1", "RSHIFT TRUE", "NONE", "ERR_OUT_OF_RANGE", "RSHIFT must fail with input value >4 bytes"], ["1 2147483648", "RSHIFT TRUE", "NONE", "ERR_OUT_OF_RANGE", "RSHIFT must fail with shift count >4 bytes"], -["0x4f 1000 ADD","999 EQUAL", "NONE", "OK"], -["0", "IF 0x50 ENDIF 1", "NONE", "OK", "0x50 is reserved (ok if not executed)"], -["0x51", "0x5f ADD 0x60 EQUAL", "NONE", "OK", "0x51 through 0x60 push 1 through 16 onto stack"], -["1","NOP", "NONE", "OK"], -["0", "IF VER ELSE 1 ENDIF", "NONE", "OK", "VER non-functional (ok if not executed)"], -["0", "IF RESERVED ELSE 1 ENDIF", "NONE", "OK", "RESERVED ok in un-executed IF"], - - -["0 IFDUP", "DEPTH 1 EQUALVERIFY 0 EQUAL", "NONE", "OK"], -["1 IFDUP", "DEPTH 2 EQUALVERIFY 1 EQUALVERIFY 1 EQUAL", "NONE", "OK"], -["0x05 0x0100000000 IFDUP", "DEPTH 2 EQUALVERIFY 0x05 0x0100000000 EQUAL", "NONE", "OK", "IFDUP dups non ints"], -["0 DROP", "DEPTH 0 EQUAL", "NONE", "OK"], -["0", "DUP 1 ADD 1 EQUALVERIFY 0 EQUAL", "NONE", "OK"], -["0 1", "NIP", "NONE", "OK"], -["1 0", "OVER DEPTH 3 EQUALVERIFY", "NONE", "OK"], -["22 21 20", "0 PICK 20 EQUALVERIFY DEPTH 3 EQUAL", "NONE", "OK"], -["22 21 20", "1 PICK 21 EQUALVERIFY DEPTH 3 EQUAL", "NONE", "OK"], -["22 21 20", "2 PICK 22 EQUALVERIFY DEPTH 3 EQUAL", "NONE", "OK"], -["22 21 20", "0 ROLL 20 EQUALVERIFY DEPTH 2 EQUAL", "NONE", "OK"], -["22 21 20", "1 ROLL 21 EQUALVERIFY DEPTH 2 EQUAL", "NONE", "OK"], -["22 21 20", "2 ROLL 22 EQUALVERIFY DEPTH 2 EQUAL", "NONE", "OK"], -["22 21 20", "ROT 22 EQUAL", "NONE", "OK"], -["22 21 20", "ROT DROP 20 EQUAL", "NONE", "OK"], -["22 21 20", "ROT DROP DROP 21 EQUAL", "NONE", "OK"], -["22 21 20", "ROT ROT 21 EQUAL", "NONE", "OK"], -["22 21 20", "ROT ROT ROT 20 EQUAL", "NONE", "OK"], -["25 24 23 22 21 20", "2ROT 24 EQUAL", "NONE", "OK"], -["25 24 23 22 21 20", "2ROT DROP 25 EQUAL", "NONE", "OK"], -["25 24 23 22 21 20", "2ROT 2DROP 20 EQUAL", "NONE", "OK"], -["25 24 23 22 21 20", "2ROT 2DROP DROP 21 EQUAL", "NONE", "OK"], -["25 24 23 22 21 20", "2ROT 2DROP 2DROP 22 EQUAL", "NONE", "OK"], -["25 24 23 22 21 20", "2ROT 2DROP 2DROP DROP 23 EQUAL", "NONE", "OK"], -["25 24 23 22 21 20", "2ROT 2ROT 22 EQUAL", "NONE", "OK"], -["25 24 23 22 21 20", "2ROT 2ROT 2ROT 20 EQUAL", "NONE", "OK"], -["1 0", "SWAP 1 EQUALVERIFY 0 EQUAL", "NONE", "OK"], -["0 1", "TUCK DEPTH 3 EQUALVERIFY SWAP 2DROP", "NONE", "OK"], -["13 14", "2DUP ROT EQUALVERIFY EQUAL", "NONE", "OK"], -["-1 0 1 2", "3DUP DEPTH 7 EQUALVERIFY ADD ADD 3 EQUALVERIFY 2DROP 0 EQUALVERIFY", "NONE", "OK"], -["1 2 3 5", "2OVER ADD ADD 8 EQUALVERIFY ADD ADD 6 EQUAL", "NONE", "OK"], -["1 3 5 7", "2SWAP ADD 4 EQUALVERIFY ADD 12 EQUAL", "NONE", "OK"], - - -["2 -2 ADD", "0 EQUAL", "NONE", "OK"], -["2147483647 -2147483647 ADD", "0 EQUAL", "NONE", "OK"], -["-1 -1 ADD", "-2 EQUAL", "NONE", "OK"], - -["0 0","EQUAL", "NONE", "OK"], -["1 1 ADD", "2 EQUAL", "NONE", "OK"], -["1 1ADD", "2 EQUAL", "NONE", "OK"], -["111 1SUB", "110 EQUAL", "NONE", "OK"], -["111 1 ADD 12 SUB", "100 EQUAL", "NONE", "OK"], -["0 ABS", "0 EQUAL", "NONE", "OK"], -["16 ABS", "16 EQUAL", "NONE", "OK"], -["-16 ABS", "-16 NEGATE EQUAL", "NONE", "OK"], -["0 NOT", "NOP", "NONE", "OK"], -["1 NOT", "0 EQUAL", "NONE", "OK"], -["11 NOT", "0 EQUAL", "NONE", "OK"], -["0 0NOTEQUAL", "0 EQUAL", "NONE", "OK"], -["1 0NOTEQUAL", "1 EQUAL", "NONE", "OK"], -["111 0NOTEQUAL", "1 EQUAL", "NONE", "OK"], -["-111 0NOTEQUAL", "1 EQUAL", "NONE", "OK"], +["BOOLAND test coverage"], ["1 1 BOOLAND", "NOP", "NONE", "OK"], ["1 0 BOOLAND", "NOT", "NONE", "OK"], ["0 1 BOOLAND", "NOT", "NONE", "OK"], ["0 0 BOOLAND", "NOT", "NONE", "OK"], -["16 17 BOOLAND", "NOP", "NONE", "OK"], +["0 BOOLAND", "NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "BOOLAND requires two input values"], +["BOOLAND", "NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "BOOLAND requires two input values"], +["1 2147483648 BOOLAND", "NOT", "NONE", "ERR_OUT_OF_RANGE", "BOOLAND must fail with input value >4 bytes"], + +["BOOLOR test coverage"], ["1 1 BOOLOR", "NOP", "NONE", "OK"], ["1 0 BOOLOR", "NOP", "NONE", "OK"], ["0 1 BOOLOR", "NOP", "NONE", "OK"], ["0 0 BOOLOR", "NOT", "NONE", "OK"], -["16 17 BOOLOR", "NOP", "NONE", "OK"], +["0 BOOLOR", "NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "BOOLOR requires two input values"], +["BOOLOR", "NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "BOOLOR requires two input values"], +["1 2147483648 BOOLOR", "NOT", "NONE", "ERR_OUT_OF_RANGE", "BOOLOR must fail with input value >4 bytes"], + + +["NUMEQUAL test coverage"], ["11 10 1 ADD", "NUMEQUAL", "NONE", "OK"], +["-1 -1", "NUMEQUAL", "NONE", "OK"], +["0 NUMEQUAL", "NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "NUMEQUAL requires two input values"], +["NUMEQUAL", "NOT", "NONE", "ERR_INVALID_STACK_OPERATION", "NUMEQUAL requires two input values"], +["1 2147483648 NUMEQUAL", "NOT", "NONE", "ERR_OUT_OF_RANGE", "NUMEQUAL must fail with input value >4 bytes"], + +["NUMEQUALVERIFY test coverage"], ["11 10 1 ADD", "NUMEQUALVERIFY 1", "NONE", "OK"], +["-1 -1", "NUMEQUALVERIFY 1", "NONE", "OK"], +["0 NUMEQUALVERIFY", "1", "NONE", "ERR_INVALID_STACK_OPERATION", "NUMEQUALVERIFY requires two input values"], +["NUMEQUALVERIFY", "1", "NONE", "ERR_INVALID_STACK_OPERATION", "NUMEQUALVERIFY requires two input values"], +["1 2147483648", "NUMEQUALVERIFY 1", "NONE", "ERR_OUT_OF_RANGE", "NUMEQUALVERIFY must fail with input value >4 bytes"], + +["NUMNOTEQUAL test coverage"], ["11 10 1 ADD", "NUMNOTEQUAL NOT", "NONE", "OK"], ["111 10 1 ADD", "NUMNOTEQUAL", "NONE", "OK"], +["1 -1", "NUMNOTEQUAL", "NONE", "OK"], +["0", "NUMNOTEQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "NUMNOTEQUAL requires two input values"], +["", "NUMNOTEQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "NUMNOTEQUAL requires two input values"], +["1 2147483648", "NUMNOTEQUAL", "NONE", "ERR_OUT_OF_RANGE", "NUMNOTEQUAL must fail with input value >4 bytes"], + +["LESSTHAN test coverage"], ["11 10", "LESSTHAN NOT", "NONE", "OK"], ["4 4", "LESSTHAN NOT", "NONE", "OK"], ["10 11", "LESSTHAN", "NONE", "OK"], ["-11 11", "LESSTHAN", "NONE", "OK"], ["-11 -10", "LESSTHAN", "NONE", "OK"], +["0", "LESSTHAN", "NONE", "ERR_INVALID_STACK_OPERATION", "LESSTHAN requires two input values"], +["", "LESSTHAN", "NONE", "ERR_INVALID_STACK_OPERATION", "LESSTHAN requires two input values"], +["1 2147483648", "LESSTHAN", "NONE", "ERR_OUT_OF_RANGE", "LESSTHAN must fail with input value >4 bytes"], + +["GREATERTHAN test coverage"], ["11 10", "GREATERTHAN", "NONE", "OK"], ["4 4", "GREATERTHAN NOT", "NONE", "OK"], ["10 11", "GREATERTHAN NOT", "NONE", "OK"], ["-11 11", "GREATERTHAN NOT", "NONE", "OK"], ["-11 -10", "GREATERTHAN NOT", "NONE", "OK"], +["0", "GREATERTHAN", "NONE", "ERR_INVALID_STACK_OPERATION", "GREATERTHAN requires two input values"], +["", "GREATERTHAN", "NONE", "ERR_INVALID_STACK_OPERATION", "GREATERTHAN requires two input values"], +["1 2147483648", "GREATERTHAN", "NONE", "ERR_OUT_OF_RANGE", "GREATERTHAN must fail with input value >4 bytes"], + + +["LESSTHANOREQUAL test coverage"], ["11 10", "LESSTHANOREQUAL NOT", "NONE", "OK"], ["4 4", "LESSTHANOREQUAL", "NONE", "OK"], ["10 11", "LESSTHANOREQUAL", "NONE", "OK"], ["-11 11", "LESSTHANOREQUAL", "NONE", "OK"], ["-11 -10", "LESSTHANOREQUAL", "NONE", "OK"], +["0", "LESSTHANOREQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "LESSTHANOREQUAL requires two input values"], +["", "LESSTHANOREQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "LESSTHANOREQUAL requires two input values"], +["1 2147483648", "LESSTHANOREQUAL", "NONE", "ERR_OUT_OF_RANGE", "LESSTHANOREQUAL must fail with input value >4 bytes"], + +["GREATERTHANOREQUAL test coverage"], ["11 10", "GREATERTHANOREQUAL", "NONE", "OK"], ["4 4", "GREATERTHANOREQUAL", "NONE", "OK"], ["10 11", "GREATERTHANOREQUAL NOT", "NONE", "OK"], ["-11 11", "GREATERTHANOREQUAL NOT", "NONE", "OK"], ["-11 -10", "GREATERTHANOREQUAL NOT", "NONE", "OK"], +["0", "GREATERTHANOREQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "GREATERTHANOREQUAL requires two input values"], +["", "GREATERTHANOREQUAL", "NONE", "ERR_INVALID_STACK_OPERATION", "GREATERTHANOREQUAL requires two input values"], +["1 2147483648", "GREATERTHANOREQUAL", "NONE", "ERR_OUT_OF_RANGE", "GREATERTHANOREQUAL must fail with input value >4 bytes"], + +["MIN test coverage"], ["1 0 MIN", "0 NUMEQUAL", "NONE", "OK"], ["0 1 MIN", "0 NUMEQUAL", "NONE", "OK"], ["-1 0 MIN", "-1 NUMEQUAL", "NONE", "OK"], ["0 -2147483647 MIN", "-2147483647 NUMEQUAL", "NONE", "OK"], +["0", "MIN", "NONE", "ERR_INVALID_STACK_OPERATION", "MIN requires two input values"], +["", "MIN", "NONE", "ERR_INVALID_STACK_OPERATION", "MIN requires two input values"], +["1 2147483648", "MIN", "NONE", "ERR_OUT_OF_RANGE", "MIN must fail with input value >4 bytes"], + +["MAX test coverage"], ["2147483647 0 MAX", "2147483647 NUMEQUAL", "NONE", "OK"], ["0 100 MAX", "100 NUMEQUAL", "NONE", "OK"], ["-100 0 MAX", "0 NUMEQUAL", "NONE", "OK"], ["0 -2147483647 MAX", "0 NUMEQUAL", "NONE", "OK"], +["0", "MAX", "NONE", "ERR_INVALID_STACK_OPERATION", "MAX requires two input values"], +["", "MAX", "NONE", "ERR_INVALID_STACK_OPERATION", "MAX requires two input values"], +["1 2147483648", "MAX", "NONE", "ERR_OUT_OF_RANGE", "MAX must fail with input value >4 bytes"], + +["WITHIN test coverage"], ["0 0 1", "WITHIN", "NONE", "OK"], ["1 0 1", "WITHIN NOT", "NONE", "OK"], ["0 -2147483647 2147483647", "WITHIN", "NONE", "OK"], @@ -1169,8 +1223,73 @@ ["11 -100 100", "WITHIN", "NONE", "OK"], ["-2147483647 -100 100", "WITHIN NOT", "NONE", "OK"], ["2147483647 -100 100", "WITHIN NOT", "NONE", "OK"], +["0", "WITHIN", "NONE", "ERR_INVALID_STACK_OPERATION", "WITHIN requires three input values"], +["0 1", "WITHIN", "NONE", "ERR_INVALID_STACK_OPERATION", "WITHIN requires three input values"], +["", "WITHIN", "NONE", "ERR_INVALID_STACK_OPERATION", "WITHIN requires two input values"], +["1 0 2147483648", "WITHIN", "NONE", "ERR_OUT_OF_RANGE", "WITHIN must fail with input value >4 bytes"], + +["0x52", "0x5f ADD 0x60 EQUAL", "NONE", "ERR_EVAL_FALSE", "0x51 through 0x60 push 1 through 16 onto stack"], + +["1 2 0 IF AND ELSE 1 ENDIF", "NOP", "NONE", "OK"], +["1 2 0 IF OR ELSE 1 ENDIF", "NOP", "NONE", "OK"], +["1 2 0 IF XOR ELSE 1 ENDIF", "NOP", "NONE", "OK"], +["2 0 IF 2MUL ELSE 1 ENDIF", "NOP", "NONE", "OK"], +["2 0 IF 2DIV ELSE 1 ENDIF", "NOP", "NONE", "OK"], +["2 2 0 IF MUL ELSE 1 ENDIF", "NOP", "NONE", "OK"], +["2 2 0 IF DIV ELSE 1 ENDIF", "NOP", "NONE", "OK"], +["2 2 0 IF MOD ELSE 1 ENDIF", "NOP", "NONE", "OK"], +["2 2 0 IF LSHIFT ELSE 1 ENDIF", "NOP", "NONE", "OK"], +["2 2 0 IF RSHIFT ELSE 1 ENDIF", "NOP", "NONE", "OK"], + +["0x4f 1000 ADD","999 EQUAL", "NONE", "OK"], +["0", "IF 0x50 ENDIF 1", "NONE", "OK", "0x50 is reserved (ok if not executed)"], +["0x51", "0x5f ADD 0x60 EQUAL", "NONE", "OK", "0x51 through 0x60 push 1 through 16 onto stack"], +["1","NOP", "NONE", "OK"], +["0", "IF VER ELSE 1 ENDIF", "NONE", "OK", "VER non-functional (ok if not executed)"], +["0", "IF RESERVED ELSE 1 ENDIF", "NONE", "OK", "RESERVED ok in un-executed IF"], + + +["0 IFDUP", "DEPTH 1 EQUALVERIFY 0 EQUAL", "NONE", "OK"], +["1 IFDUP", "DEPTH 2 EQUALVERIFY 1 EQUALVERIFY 1 EQUAL", "NONE", "OK"], +["0x05 0x0100000000 IFDUP", "DEPTH 2 EQUALVERIFY 0x05 0x0100000000 EQUAL", "NONE", "OK", "IFDUP dups non ints"], +["0 DROP", "DEPTH 0 EQUAL", "NONE", "OK"], +["0", "DUP 1 ADD 1 EQUALVERIFY 0 EQUAL", "NONE", "OK"], +["0 1", "NIP", "NONE", "OK"], +["1 0", "OVER DEPTH 3 EQUALVERIFY", "NONE", "OK"], +["22 21 20", "0 PICK 20 EQUALVERIFY DEPTH 3 EQUAL", "NONE", "OK"], +["22 21 20", "1 PICK 21 EQUALVERIFY DEPTH 3 EQUAL", "NONE", "OK"], +["22 21 20", "2 PICK 22 EQUALVERIFY DEPTH 3 EQUAL", "NONE", "OK"], +["22 21 20", "0 ROLL 20 EQUALVERIFY DEPTH 2 EQUAL", "NONE", "OK"], +["22 21 20", "1 ROLL 21 EQUALVERIFY DEPTH 2 EQUAL", "NONE", "OK"], +["22 21 20", "2 ROLL 22 EQUALVERIFY DEPTH 2 EQUAL", "NONE", "OK"], +["22 21 20", "ROT 22 EQUAL", "NONE", "OK"], +["22 21 20", "ROT DROP 20 EQUAL", "NONE", "OK"], +["22 21 20", "ROT DROP DROP 21 EQUAL", "NONE", "OK"], +["22 21 20", "ROT ROT 21 EQUAL", "NONE", "OK"], +["22 21 20", "ROT ROT ROT 20 EQUAL", "NONE", "OK"], +["25 24 23 22 21 20", "2ROT 24 EQUAL", "NONE", "OK"], +["25 24 23 22 21 20", "2ROT DROP 25 EQUAL", "NONE", "OK"], +["25 24 23 22 21 20", "2ROT 2DROP 20 EQUAL", "NONE", "OK"], +["25 24 23 22 21 20", "2ROT 2DROP DROP 21 EQUAL", "NONE", "OK"], +["25 24 23 22 21 20", "2ROT 2DROP 2DROP 22 EQUAL", "NONE", "OK"], +["25 24 23 22 21 20", "2ROT 2DROP 2DROP DROP 23 EQUAL", "NONE", "OK"], +["25 24 23 22 21 20", "2ROT 2ROT 22 EQUAL", "NONE", "OK"], +["25 24 23 22 21 20", "2ROT 2ROT 2ROT 20 EQUAL", "NONE", "OK"], +["1 0", "SWAP 1 EQUALVERIFY 0 EQUAL", "NONE", "OK"], +["0 1", "TUCK DEPTH 3 EQUALVERIFY SWAP 2DROP", "NONE", "OK"], +["13 14", "2DUP ROT EQUALVERIFY EQUAL", "NONE", "OK"], +["-1 0 1 2", "3DUP DEPTH 7 EQUALVERIFY ADD ADD 3 EQUALVERIFY 2DROP 0 EQUALVERIFY", "NONE", "OK"], +["1 2 3 5", "2OVER ADD ADD 8 EQUALVERIFY ADD ADD 6 EQUAL", "NONE", "OK"], +["1 3 5 7", "2SWAP ADD 4 EQUALVERIFY ADD 12 EQUAL", "NONE", "OK"], + + + + +["0 0","EQUAL", "NONE", "OK"], +["1 1 ADD", "2 EQUAL", "NONE", "OK"], + + -["2147483647 2147483647 SUB", "0 EQUAL", "NONE", "OK"], ["2147483647 DUP ADD", "4294967294 EQUAL", "NONE", "OK", ">32 bit EQUAL is valid"], ["2147483647 NEGATE DUP ADD", "-4294967294 EQUAL", "NONE", "OK"],