From 55009153a904b03d86846afab48246be2eff4ca9 Mon Sep 17 00:00:00 2001 From: Evgeniy Stratonikov Date: Tue, 9 Mar 2021 13:17:21 +0300 Subject: [PATCH] vm/emit: emit Boolean values correctly We should convert both `true` and `false` values. --- cli/nep17_test.go | 2 +- cli/testdata/wallet1_solo.json | 2 +- pkg/compiler/binary_expr_test.go | 12 +++++++++++ pkg/compiler/for_test.go | 2 +- pkg/compiler/import_test.go | 2 +- pkg/rpc/server/server_test.go | 8 ++++---- pkg/rpc/server/testdata/testblocks.acc | Bin 9869 -> 9881 bytes pkg/vm/emit/emit.go | 4 ++-- pkg/vm/emit/emit_test.go | 27 ++++++++++++++++--------- 9 files changed, 39 insertions(+), 20 deletions(-) diff --git a/cli/nep17_test.go b/cli/nep17_test.go index 3341b35a2..3994b318a 100644 --- a/cli/nep17_test.go +++ b/cli/nep17_test.go @@ -85,7 +85,7 @@ func TestNEP17Balance(t *testing.T) { } e.checkNextLine(t, "^\\s*$") - addr4, err := address.StringToUint160("NbxpLNCCSWZ9BkYpCYT8NfN1uoxq9Rfbrn") // deployed verify.go contract + addr4, err := address.StringToUint160("NWTDxsHVde5qSjRkTRUAg6i8xC3JSWEC9k") // deployed verify.go contract require.NoError(t, err) e.checkNextLine(t, "^Account "+address.Uint160ToString(addr4)) e.checkEOF(t) diff --git a/cli/testdata/wallet1_solo.json b/cli/testdata/wallet1_solo.json index 764d94cfa..050459eb0 100644 --- a/cli/testdata/wallet1_solo.json +++ b/cli/testdata/wallet1_solo.json @@ -61,7 +61,7 @@ "isdefault": false }, { - "address" : "NbxpLNCCSWZ9BkYpCYT8NfN1uoxq9Rfbrn", + "address" : "NWTDxsHVde5qSjRkTRUAg6i8xC3JSWEC9k", "key" : "6PYXDze5Ak4HahYKygcNzk6n65ACjWdDCYLSuKgA5KG8vyMJSFboUNSiPD", "label" : "", "contract" : { diff --git a/pkg/compiler/binary_expr_test.go b/pkg/compiler/binary_expr_test.go index 22bafd8a7..0afb2bcc2 100644 --- a/pkg/compiler/binary_expr_test.go +++ b/pkg/compiler/binary_expr_test.go @@ -361,3 +361,15 @@ func TestShortCircuit(t *testing.T) { eval(t, src, big.NewInt(17)) }) } + +func TestEmitBoolean(t *testing.T) { + src := `package foo + func Main() int { + a := true + if (a == true) == true { + return 42 + } + return 11 + }` + eval(t, src, big.NewInt(42)) +} diff --git a/pkg/compiler/for_test.go b/pkg/compiler/for_test.go index f2995cc3c..ab2a29fbe 100644 --- a/pkg/compiler/for_test.go +++ b/pkg/compiler/for_test.go @@ -209,7 +209,7 @@ func TestBoolAssign(t *testing.T) { return x } ` - eval(t, src, big.NewInt(1)) + eval(t, src, true) } func TestBoolCompare(t *testing.T) { diff --git a/pkg/compiler/import_test.go b/pkg/compiler/import_test.go index c72097a56..9080209f4 100644 --- a/pkg/compiler/import_test.go +++ b/pkg/compiler/import_test.go @@ -46,7 +46,7 @@ func TestMultipleDirFileImport(t *testing.T) { return ok } ` - eval(t, src, big.NewInt(1)) + eval(t, src, true) } func TestImportNameSameAsOwn(t *testing.T) { diff --git a/pkg/rpc/server/server_test.go b/pkg/rpc/server/server_test.go index c643aa790..9c90f3fdd 100644 --- a/pkg/rpc/server/server_test.go +++ b/pkg/rpc/server/server_test.go @@ -59,9 +59,9 @@ type rpcTestCase struct { check func(t *testing.T, e *executor, result interface{}) } -const testContractHash = "c6436aab21ebd15279b85af8d7b5808d38455b0a" -const deploymentTxHash = "050e2189d7cd7b719d9c4bbc525d3edcd89ffedb28cc974862d17dda14377612" -const genesisBlockHash = "41d1099030004d60f3b4b7ffe00bf184e84fac3a39ee7136c761e005f0186d93" +const testContractHash = "500858b96054d3c302078882c30e76915aac1c83" +const deploymentTxHash = "fbea49056332ecf1482568e24ed745151ed3fcacbb59afc22d9baff5346e6257" +const genesisBlockHash = "0542f4350c6e236d0509bcd98188b0034bfbecc1a0c7fcdb8e4295310d468b70" const verifyContractHash = "03ffc0897543b9b709e0f8cab4a7682dae0ba943" const verifyContractAVM = "570300412d51083021700c14aa8acf859d4fe402b34e673f2156821796a488ebdb30716813cedb2869db289740" @@ -1598,7 +1598,7 @@ func checkNep17Balances(t *testing.T, e *executor, acc interface{}) { }, { Asset: e.chain.UtilityTokenHash(), - Amount: "78994306100", + Amount: "78994294100", LastUpdated: 8, }}, Address: testchain.PrivateKeyByID(0).GetScriptHash().StringLE(), diff --git a/pkg/rpc/server/testdata/testblocks.acc b/pkg/rpc/server/testdata/testblocks.acc index b7bdeaecce5a51549f4d8c9e71c717ad1308b6e3..6fc740d620562b196e3bc8475ad58b4e524119ad 100644 GIT binary patch delta 3684 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 delta 3655 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