From 5ecbd6d77412a311d6e7d1a802e183c7a6c263be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rio=20Silva?= Date: Thu, 28 Mar 2019 17:41:06 +0000 Subject: [PATCH] Fix bug on specialized Array types --- .../Providers/AbiSerializationProvider.cs | 4 +-- .../EosTestCasesDef.t4 | 1 + .../EosUnitTestCases.cs | 26 ++++++++++++++++++- .../EosUnitTests.cs | 19 ++++++++++++++ EosSharp/EosSharp.UnitTests/ApiUnitTests.cs | 5 +++- EosSharp/EosSharp.UnitTests/ApiUnitTests.tt | 5 +++- EosSharp/EosSharp.UnitTests/EosUnitTests.cs | 22 +++++++++++++++- EosSharp/EosSharp.UnitTests/EosUnitTests.tt | 5 +++- EosSharp/EosSharp.UnitTests/app.config | 2 +- EosSharp/EosSharp/EosSharp.csproj | 9 +++---- 10 files changed, 85 insertions(+), 13 deletions(-) diff --git a/EosSharp/EosSharp.Core/Providers/AbiSerializationProvider.cs b/EosSharp/EosSharp.Core/Providers/AbiSerializationProvider.cs index 1540e6a..c93f6d4 100644 --- a/EosSharp/EosSharp.Core/Providers/AbiSerializationProvider.cs +++ b/EosSharp/EosSharp.Core/Providers/AbiSerializationProvider.cs @@ -697,10 +697,10 @@ private void WriteAbiType(MemoryStream ms, object value, string type, Abi abi) // array type if(type.EndsWith("[]")) { - var items = (IEnumerable)value; + var items = (ICollection)value; var arrayType = type.Substring(0, type.Length - 2); - WriteVarUint32(ms, items.Count()); + WriteVarUint32(ms, items.Count); foreach (var item in items) WriteAbiType(ms, item, arrayType, abi); diff --git a/EosSharp/EosSharp.UnitTests.Core/EosTestCasesDef.t4 b/EosSharp/EosSharp.UnitTests.Core/EosTestCasesDef.t4 index 22c74ed..bec6023 100644 --- a/EosSharp/EosSharp.UnitTests.Core/EosTestCasesDef.t4 +++ b/EosSharp/EosSharp.UnitTests.Core/EosTestCasesDef.t4 @@ -32,6 +32,7 @@ "GetTableRowsGeneric", "GetProducers", "GetScheduledTransactions", + "CreateTransactionArrayData", "CreateTransactionAnonymousObjectData", "CreateTransaction", "CreateNewAccount" diff --git a/EosSharp/EosSharp.UnitTests.Core/EosUnitTestCases.cs b/EosSharp/EosSharp.UnitTests.Core/EosUnitTestCases.cs index 0a5e6e3..e6d766e 100644 --- a/EosSharp/EosSharp.UnitTests.Core/EosUnitTestCases.cs +++ b/EosSharp/EosSharp.UnitTests.Core/EosUnitTestCases.cs @@ -1,7 +1,7 @@ using EosSharp.Core; using EosSharp.Core.Api.v1; -using EosSharp.Core.Providers; using System; +using System.Collections; using System.Collections.Generic; using System.Threading.Tasks; @@ -66,6 +66,30 @@ public Task GetScheduledTransactions() }); } + public Task CreateTransactionArrayData() + { + return Eos.CreateTransaction(new Transaction() + { + actions = new List() + { + new Core.Api.v1.Action() + { + account = "platform", + authorization = new List() + { + new PermissionLevel() {actor = "player1", permission = "active" } + }, + name = "testarr", + data = new { user = "player1", array = new List() { 1, 6, 3} } + //data = new { user = "player1", array = new UInt64[] { 1, 6, 3} } + //data = new { user = "player1", array = new Queue(new UInt64[] { 1, 6, 3}) } + //data = new { user = "player1", array = new Stack(new UInt64[] { 1, 6, 3}) } + //data = new { user = "player1", array = new ArrayList() { 1, 6, 3} } + } + } + }); + } + public Task CreateTransactionAnonymousObjectData() { return Eos.CreateTransaction(new Transaction() diff --git a/EosSharp/EosSharp.UnitTests.Unity3D/EosUnitTests.cs b/EosSharp/EosSharp.UnitTests.Unity3D/EosUnitTests.cs index 6b9f0d8..e8f7046 100644 --- a/EosSharp/EosSharp.UnitTests.Unity3D/EosUnitTests.cs +++ b/EosSharp/EosSharp.UnitTests.Unity3D/EosUnitTests.cs @@ -119,6 +119,24 @@ public async Task GetScheduledTransactions() else Console.WriteLine("Test GetScheduledTransactions run failed."); } + public async Task CreateTransactionArrayData() + { + bool success = false; + try + { + await EosUnitTestCases.CreateTransactionArrayData(); + success = true; + } + catch (Exception ex) + { + Console.WriteLine(JsonConvert.SerializeObject(ex)); + } + + if(success) + Console.WriteLine("Test CreateTransactionArrayData run successfuly."); + else + Console.WriteLine("Test CreateTransactionArrayData run failed."); + } public async Task CreateTransactionAnonymousObjectData() { bool success = false; @@ -181,6 +199,7 @@ public async Task TestAll() await GetTableRowsGeneric(); await GetProducers(); await GetScheduledTransactions(); + await CreateTransactionArrayData(); await CreateTransactionAnonymousObjectData(); await CreateTransaction(); await CreateNewAccount(); diff --git a/EosSharp/EosSharp.UnitTests/ApiUnitTests.cs b/EosSharp/EosSharp.UnitTests/ApiUnitTests.cs index c745aa8..4903e36 100644 --- a/EosSharp/EosSharp.UnitTests/ApiUnitTests.cs +++ b/EosSharp/EosSharp.UnitTests/ApiUnitTests.cs @@ -23,7 +23,10 @@ public ApiUnitTests() //HttpEndpoint = "https://nodes.eos42.io", //Mainnet //ChainId = "aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906" - HttpEndpoint = "https://nodeos01.btuga.io", + //HttpEndpoint = "https://nodeos01.btuga.io", + //ChainId = "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f" + + HttpEndpoint = "http://localhost:8888", ChainId = "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f" }; var eosApi = new EosApi(eosConfig, new HttpHandler()); diff --git a/EosSharp/EosSharp.UnitTests/ApiUnitTests.tt b/EosSharp/EosSharp.UnitTests/ApiUnitTests.tt index 22569ed..edd74eb 100644 --- a/EosSharp/EosSharp.UnitTests/ApiUnitTests.tt +++ b/EosSharp/EosSharp.UnitTests/ApiUnitTests.tt @@ -28,7 +28,10 @@ namespace EosSharp.UnitTests //HttpEndpoint = "https://nodes.eos42.io", //Mainnet //ChainId = "aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906" - HttpEndpoint = "https://nodeos01.btuga.io", + //HttpEndpoint = "https://nodeos01.btuga.io", + //ChainId = "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f" + + HttpEndpoint = "http://localhost:8888", ChainId = "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f" }; var eosApi = new EosApi(eosConfig, new HttpHandler()); diff --git a/EosSharp/EosSharp.UnitTests/EosUnitTests.cs b/EosSharp/EosSharp.UnitTests/EosUnitTests.cs index 80629fb..6facd9b 100644 --- a/EosSharp/EosSharp.UnitTests/EosUnitTests.cs +++ b/EosSharp/EosSharp.UnitTests/EosUnitTests.cs @@ -23,7 +23,10 @@ public EosUnitTests() //HttpEndpoint = "https://nodes.eos42.io", //Mainnet //ChainId = "aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906" - HttpEndpoint = "https://nodeos01.btuga.io", + //HttpEndpoint = "https://nodeos01.btuga.io", + //ChainId = "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f" + + HttpEndpoint = "http://localhost:8888", ChainId = "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f" }; var eosApi = new EosApi(eosConfig, new HttpHandler()); @@ -117,6 +120,23 @@ public async Task GetScheduledTransactions() } [TestMethod] [TestCategory("Eos Tests")] + public async Task CreateTransactionArrayData() + { + bool success = false; + try + { + await EosUnitTestCases.CreateTransactionArrayData(); + success = true; + } + catch (Exception ex) + { + Console.WriteLine(JsonConvert.SerializeObject(ex)); + } + + Assert.IsTrue(success); + } + [TestMethod] + [TestCategory("Eos Tests")] public async Task CreateTransactionAnonymousObjectData() { bool success = false; diff --git a/EosSharp/EosSharp.UnitTests/EosUnitTests.tt b/EosSharp/EosSharp.UnitTests/EosUnitTests.tt index 9b8e236..680cc6b 100644 --- a/EosSharp/EosSharp.UnitTests/EosUnitTests.tt +++ b/EosSharp/EosSharp.UnitTests/EosUnitTests.tt @@ -28,7 +28,10 @@ namespace EosSharp.UnitTests //HttpEndpoint = "https://nodes.eos42.io", //Mainnet //ChainId = "aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906" - HttpEndpoint = "https://nodeos01.btuga.io", + //HttpEndpoint = "https://nodeos01.btuga.io", + //ChainId = "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f" + + HttpEndpoint = "http://localhost:8888", ChainId = "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f" }; var eosApi = new EosApi(eosConfig, new HttpHandler()); diff --git a/EosSharp/EosSharp.UnitTests/app.config b/EosSharp/EosSharp.UnitTests/app.config index a358f44..f9ed124 100644 --- a/EosSharp/EosSharp.UnitTests/app.config +++ b/EosSharp/EosSharp.UnitTests/app.config @@ -5,7 +5,7 @@ \ No newline at end of file diff --git a/EosSharp/EosSharp/EosSharp.csproj b/EosSharp/EosSharp/EosSharp.csproj index 03f49fb..4473b11 100644 --- a/EosSharp/EosSharp/EosSharp.csproj +++ b/EosSharp/EosSharp/EosSharp.csproj @@ -13,11 +13,10 @@ Copyright 2019 eos-sharp eos-sharp - 2.0.3.0 - 2.0.3.0 - 2.0.3 - Fix bug on generating key pairs -Fix bug on verifying K1 signatures based on recovery sig param + 2.0.4.0 + 2.0.4.0 + 2.0.4 + Fix bug on specialized Array types false