Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 43 additions & 43 deletions tests/Neo.ConsoleService.Tests/CommandTokenizerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,19 @@ public void Test1()
{
var cmd = " ";
var args = cmd.Tokenize();
Assert.AreEqual(args.Count, 1);
Assert.AreEqual(args[0].Value, " ");
Assert.AreEqual(1, args.Count);
Assert.AreEqual(" ", args[0].Value);
}

[TestMethod]
public void Test2()
{
var cmd = "show state";
var args = cmd.Tokenize();
Assert.AreEqual(args.Count, 3);
Assert.AreEqual(args[0].Value, "show");
Assert.AreEqual(args[1].Value, " ");
Assert.AreEqual(args[2].Value, "state");
Assert.AreEqual(3, args.Count);
Assert.AreEqual("show", args[0].Value);
Assert.AreEqual(" ", args[1].Value);
Assert.AreEqual("state", args[2].Value);
Assert.AreEqual(cmd, args.JoinRaw());
}

Expand All @@ -42,76 +42,76 @@ public void Test3()
{
var cmd = "show \"hello world\"";
var args = cmd.Tokenize();
Assert.AreEqual(args.Count, 3);
Assert.AreEqual(args[0].Value, "show");
Assert.AreEqual(args[1].Value, " ");
Assert.AreEqual(args[2].Value, "hello world");
Assert.AreEqual(3, args.Count);
Assert.AreEqual("show", args[0].Value);
Assert.AreEqual(" ", args[1].Value);
Assert.AreEqual("hello world", args[2].Value);
}

[TestMethod]
public void Test4()
{
var cmd = "show \"'\"";
var args = cmd.Tokenize();
Assert.AreEqual(args.Count, 3);
Assert.AreEqual(args[0].Value, "show");
Assert.AreEqual(args[1].Value, " ");
Assert.AreEqual(args[2].Value, "'");
Assert.AreEqual(3, args.Count);
Assert.AreEqual("show", args[0].Value);
Assert.AreEqual(" ", args[1].Value);
Assert.AreEqual("'", args[2].Value);
}

[TestMethod]
public void Test5()
{
var cmd = "show \"123\\\"456\""; // Double quote because it is quoted twice in code and command.
var args = CommandTokenizer.Tokenize(cmd);
Assert.AreEqual(args.Count, 3);
Assert.AreEqual(args[0].Value, "show");
Assert.AreEqual(args[1].Value, " ");
Assert.AreEqual(args[2].Value, "123\"456");
Assert.AreEqual(args[2].RawValue, "\"123\"456\"");
Assert.AreEqual(3, args.Count);
Assert.AreEqual("show", args[0].Value);
Assert.AreEqual(" ", args[1].Value);
Assert.AreEqual("123\"456", args[2].Value);
Assert.AreEqual("\"123\"456\"", args[2].RawValue);
}

[TestMethod]
public void TestMore()
{
var cmd = "show 'x1,x2,x3'";
var args = CommandTokenizer.Tokenize(cmd);
Assert.AreEqual(args.Count, 3);
Assert.AreEqual(args[0].Value, "show");
Assert.AreEqual(args[1].Value, " ");
Assert.AreEqual(args[2].Value, "x1,x2,x3");
Assert.AreEqual(args[2].RawValue, "'x1,x2,x3'");
Assert.AreEqual(3, args.Count);
Assert.AreEqual("show", args[0].Value);
Assert.AreEqual(" ", args[1].Value);
Assert.AreEqual("x1,x2,x3", args[2].Value);
Assert.AreEqual("'x1,x2,x3'", args[2].RawValue);

cmd = "show '\\n \\r \\t \\''"; // Double quote because it is quoted twice in code and command.
args = CommandTokenizer.Tokenize(cmd);
Assert.AreEqual(args.Count, 3);
Assert.AreEqual(args[0].Value, "show");
Assert.AreEqual(args[1].Value, " ");
Assert.AreEqual(args[2].Value, "\n \r \t \'");
Assert.AreEqual(args[0].RawValue, "show");
Assert.AreEqual(args[1].RawValue, " ");
Assert.AreEqual(args[2].RawValue, "'\n \r \t \''");
Assert.AreEqual(3, args.Count);
Assert.AreEqual("show", args[0].Value);
Assert.AreEqual(" ", args[1].Value);
Assert.AreEqual("\n \r \t \'", args[2].Value);
Assert.AreEqual("show", args[0].RawValue);
Assert.AreEqual(" ", args[1].RawValue);
Assert.AreEqual("'\n \r \t \''", args[2].RawValue);
Assert.AreEqual("show '\n \r \t \''", args.JoinRaw());

var json = "[{\"type\":\"Hash160\",\"value\":\"0x0010922195a6c7cab3233f923716ad8e2dd63f8a\"}]";
cmd = "invoke 0xef4073a0f2b305a38ec4050e4d3d28bc40ea63f5 balanceOf " + json;
args = CommandTokenizer.Tokenize(cmd);
Assert.AreEqual(args.Count, 7);
Assert.AreEqual(args[0].Value, "invoke");
Assert.AreEqual(args[1].Value, " ");
Assert.AreEqual(args[2].Value, "0xef4073a0f2b305a38ec4050e4d3d28bc40ea63f5");
Assert.AreEqual(args[3].Value, " ");
Assert.AreEqual(args[4].Value, "balanceOf");
Assert.AreEqual(args[5].Value, " ");
Assert.AreEqual(7, args.Count);
Assert.AreEqual("invoke", args[0].Value);
Assert.AreEqual(" ", args[1].Value);
Assert.AreEqual("0xef4073a0f2b305a38ec4050e4d3d28bc40ea63f5", args[2].Value);
Assert.AreEqual(" ", args[3].Value);
Assert.AreEqual("balanceOf", args[4].Value);
Assert.AreEqual(" ", args[5].Value);
Assert.AreEqual(args[6].Value, json);

cmd = "show x'y'";
args = CommandTokenizer.Tokenize(cmd);
Assert.AreEqual(args.Count, 3);
Assert.AreEqual(args[0].Value, "show");
Assert.AreEqual(args[1].Value, " ");
Assert.AreEqual(args[2].Value, "x'y'");
Assert.AreEqual(args[2].RawValue, "x'y'");
Assert.AreEqual(3, args.Count);
Assert.AreEqual("show", args[0].Value);
Assert.AreEqual(" ", args[1].Value);
Assert.AreEqual("x'y'", args[2].Value);
Assert.AreEqual("x'y'", args[2].RawValue);
}
}
}
2 changes: 1 addition & 1 deletion tests/Neo.Extensions.Tests/UT_BigIntegerExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ public void TestMod_EdgeCases()
Assert.AreNotEqual(long.MinValue % long.MaxValue, result, "Mod should always return non-negative values, unlike % operator");

// Test case 5: Verifying % operator behavior
Assert.AreEqual((long)(minValue % maxValue), long.MinValue % long.MaxValue, "% operator should behave consistently for BigInteger and long");
Assert.AreEqual(long.MinValue % long.MaxValue, (long)(minValue % maxValue), "% operator should behave consistently for BigInteger and long");

// Test case 6: Mod with prime numbers
Assert.AreEqual(17, new BigInteger(17).Mod(19), "Mod with a larger prime should return the original number");
Expand Down
2 changes: 1 addition & 1 deletion tests/Neo.Json.UnitTests/UT_JArray.cs
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ public void TestAsString()
bob,
};
var s = jArray.AsString();
Assert.AreEqual(s, "[{\"name\":\"alice\",\"age\":30,\"score\":100.001,\"gender\":\"female\",\"isMarried\":true,\"pet\":{\"name\":\"Tom\",\"type\":\"cat\"}},{\"name\":\"bob\",\"age\":100000,\"score\":0.001,\"gender\":\"male\",\"isMarried\":false,\"pet\":{\"name\":\"Paul\",\"type\":\"dog\"}}]");
Assert.AreEqual("[{\"name\":\"alice\",\"age\":30,\"score\":100.001,\"gender\":\"female\",\"isMarried\":true,\"pet\":{\"name\":\"Tom\",\"type\":\"cat\"}},{\"name\":\"bob\",\"age\":100000,\"score\":0.001,\"gender\":\"male\",\"isMarried\":false,\"pet\":{\"name\":\"Paul\",\"type\":\"dog\"}}]", s);
}

[TestMethod]
Expand Down
2 changes: 1 addition & 1 deletion tests/Neo.Network.RPC.Tests/UT_WalletAPI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ public async Task TestTransferfromMultiSigAccount()
}
catch (Exception e)
{
Assert.AreEqual(e.Message, $"Need at least 2 KeyPairs for signing!");
Assert.AreEqual($"Need at least 2 KeyPairs for signing!", e.Message);
}

testScript = NativeContract.GAS.Hash.MakeScript("transfer", multiSender, UInt160.Zero, NativeContract.GAS.Factor * 100, string.Empty)
Expand Down
4 changes: 2 additions & 2 deletions tests/Neo.Plugins.OracleService.Tests/UT_OracleService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,10 @@ public void TestCreateOracleResponseTx()
{
var snapshotCache = TestBlockchain.GetTestSnapshotCache();
var executionFactor = NativeContract.Policy.GetExecFeeFactor(snapshotCache);
Assert.AreEqual(executionFactor, (uint)30);
Assert.AreEqual((uint)30, executionFactor);

var feePerByte = NativeContract.Policy.GetFeePerByte(snapshotCache);
Assert.AreEqual(feePerByte, 1000);
Assert.AreEqual(1000, feePerByte);

OracleRequest request = new OracleRequest
{
Expand Down
46 changes: 23 additions & 23 deletions tests/Neo.Plugins.RpcServer.Tests/UT_RpcServer.SmartContract.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,26 +62,26 @@ public void TestInvokeFunction()
{
_rpcServer.wallet = _wallet;
JObject resp = (JObject)_rpcServer.InvokeFunction(new JArray(NeoToken.NEO.Hash.ToString(), "totalSupply", new JArray([]), validatorSigner, true));
Assert.AreEqual(resp.Count, 8);
Assert.AreEqual(8, resp.Count);
Assert.AreEqual(resp["script"], NeoTotalSupplyScript);
Assert.IsTrue(resp.ContainsProperty("gasconsumed"));
Assert.IsTrue(resp.ContainsProperty("diagnostics"));
Assert.AreEqual(resp["diagnostics"]["invokedcontracts"]["call"][0]["hash"], NeoToken.NEO.Hash.ToString());
Assert.AreEqual(0, ((JArray)resp["diagnostics"]["storagechanges"]).Count);
Assert.AreEqual(resp["state"], nameof(VMState.HALT));
Assert.AreEqual(resp["exception"], null);
Assert.AreEqual(((JArray)resp["notifications"]).Count, 0);
Assert.AreEqual(null, resp["exception"]);
Assert.AreEqual(0, ((JArray)resp["notifications"]).Count);
Assert.AreEqual(resp["stack"][0]["type"], nameof(Integer));
Assert.AreEqual(resp["stack"][0]["value"], "100000000");
Assert.IsTrue(resp.ContainsProperty("tx"));

resp = (JObject)_rpcServer.InvokeFunction(new JArray(NeoToken.NEO.Hash.ToString(), "symbol"));
Assert.AreEqual(resp.Count, 6);
Assert.AreEqual(6, resp.Count);
Assert.IsTrue(resp.ContainsProperty("script"));
Assert.IsTrue(resp.ContainsProperty("gasconsumed"));
Assert.AreEqual(resp["state"], nameof(VMState.HALT));
Assert.AreEqual(resp["exception"], null);
Assert.AreEqual(((JArray)resp["notifications"]).Count, 0);
Assert.AreEqual(null, resp["exception"]);
Assert.AreEqual(0, ((JArray)resp["notifications"]).Count);
Assert.AreEqual(resp["stack"][0]["type"], nameof(ByteString));
Assert.AreEqual(resp["stack"][0]["value"], Convert.ToBase64String(Encoding.UTF8.GetBytes("NEO")));

Expand All @@ -92,7 +92,7 @@ public void TestInvokeFunction()
new JObject() { ["type"] = nameof(ContractParameterType.Integer), ["value"] = "1" },
new JObject() { ["type"] = nameof(ContractParameterType.Any) },
]), multisigSigner, true));
Assert.AreEqual(resp.Count, 7);
Assert.AreEqual(7, resp.Count);
Assert.AreEqual(resp["script"], NeoTransferScript);
Assert.IsTrue(resp.ContainsProperty("gasconsumed"));
Assert.IsTrue(resp.ContainsProperty("diagnostics"));
Expand All @@ -102,11 +102,11 @@ public void TestInvokeFunction()
Assert.AreEqual(resp["exception"], $"The smart contract or address {MultisigScriptHash} ({MultisigAddress}) is not found. " +
$"If this is your wallet address and you want to sign a transaction with it, make sure you have opened this wallet.");
JArray notifications = (JArray)resp["notifications"];
Assert.AreEqual(notifications.Count, 2);
Assert.AreEqual(notifications[0]["eventname"].AsString(), "Transfer");
Assert.AreEqual(2, notifications.Count);
Assert.AreEqual("Transfer", notifications[0]["eventname"].AsString());
Assert.AreEqual(notifications[0]["contract"].AsString(), NeoToken.NEO.Hash.ToString());
Assert.AreEqual(notifications[0]["state"]["value"][2]["value"], "1");
Assert.AreEqual(notifications[1]["eventname"].AsString(), "Transfer");
Assert.AreEqual("Transfer", notifications[1]["eventname"].AsString());
Assert.AreEqual(notifications[1]["contract"].AsString(), GasToken.GAS.Hash.ToString());
Assert.AreEqual(notifications[1]["state"]["value"][2]["value"], "50000000");

Expand All @@ -130,7 +130,7 @@ public void TestInvokeFunctionInvalid()
var resp = _rpcServer.ProcessRequestAsync(context, json).GetAwaiter().GetResult();

Console.WriteLine(resp);
Assert.AreEqual(resp.Count, 3);
Assert.AreEqual(3, resp.Count);
Assert.IsNotNull(resp["error"]);
Assert.AreEqual(resp["error"]["code"], -32602);

Expand All @@ -141,18 +141,18 @@ public void TestInvokeFunctionInvalid()
public void TestInvokeScript()
{
JObject resp = (JObject)_rpcServer.InvokeScript(new JArray(NeoTotalSupplyScript, validatorSigner, true));
Assert.AreEqual(resp.Count, 7);
Assert.AreEqual(7, resp.Count);
Assert.IsTrue(resp.ContainsProperty("gasconsumed"));
Assert.IsTrue(resp.ContainsProperty("diagnostics"));
Assert.AreEqual(resp["diagnostics"]["invokedcontracts"]["call"][0]["hash"], NeoToken.NEO.Hash.ToString());
Assert.AreEqual(resp["state"], nameof(VMState.HALT));
Assert.AreEqual(resp["exception"], null);
Assert.AreEqual(((JArray)resp["notifications"]).Count, 0);
Assert.AreEqual(null, resp["exception"]);
Assert.AreEqual(0, ((JArray)resp["notifications"]).Count);
Assert.AreEqual(resp["stack"][0]["type"], nameof(Integer));
Assert.AreEqual(resp["stack"][0]["value"], "100000000");

resp = (JObject)_rpcServer.InvokeScript(new JArray(NeoTransferScript));
Assert.AreEqual(resp.Count, 6);
Assert.AreEqual(6, resp.Count);
Assert.AreEqual(resp["stack"][0]["type"], nameof(Boolean));
Assert.AreEqual(resp["stack"][0]["value"], false);
}
Expand Down Expand Up @@ -349,7 +349,7 @@ public void TestTraverseIterator()
string sessionId = resp["session"].AsString();
string iteratorId = resp["stack"][0]["id"].AsString();
JArray respArray = (JArray)_rpcServer.TraverseIterator([sessionId, iteratorId, 100]);
Assert.AreEqual(respArray.Count, 0);
Assert.AreEqual(0, respArray.Count);
_rpcServer.TerminateSession([sessionId]);
Assert.ThrowsExactly<RpcException>(() => _ = (JArray)_rpcServer.TraverseIterator([sessionId, iteratorId, 100]), "Unknown session");

Expand Down Expand Up @@ -379,18 +379,18 @@ public void TestTraverseIterator()
sessionId = resp["session"].AsString();
iteratorId = resp["stack"][0]["id"].AsString();
respArray = (JArray)_rpcServer.TraverseIterator([sessionId, iteratorId, 100]);
Assert.AreEqual(respArray.Count, 1);
Assert.AreEqual(1, respArray.Count);
Assert.AreEqual(respArray[0]["type"], nameof(Struct));
JArray value = (JArray)respArray[0]["value"];
Assert.AreEqual(value.Count, 2);
Assert.AreEqual(2, value.Count);
Assert.AreEqual(value[0]["type"], nameof(ByteString));
Assert.AreEqual(value[0]["value"], Convert.ToBase64String(TestProtocolSettings.SoleNode.StandbyCommittee[0].ToArray()));
Assert.AreEqual(value[1]["type"], nameof(Integer));
Assert.AreEqual(value[1]["value"], "0");

// No result when traversed again
respArray = (JArray)_rpcServer.TraverseIterator([sessionId, iteratorId, 100]);
Assert.AreEqual(respArray.Count, 0);
Assert.AreEqual(0, respArray.Count);

// GetAllCandidates again
resp = (JObject)_rpcServer.InvokeFunction(new JArray(NeoToken.NEO.Hash.ToString(), "getAllCandidates", new JArray([]), validatorSigner, true));
Expand All @@ -399,11 +399,11 @@ public void TestTraverseIterator()

// Insufficient result count limit
respArray = (JArray)_rpcServer.TraverseIterator([sessionId, iteratorId, 0]);
Assert.AreEqual(respArray.Count, 0);
Assert.AreEqual(0, respArray.Count);
respArray = (JArray)_rpcServer.TraverseIterator([sessionId, iteratorId, 1]);
Assert.AreEqual(respArray.Count, 1);
Assert.AreEqual(1, respArray.Count);
respArray = (JArray)_rpcServer.TraverseIterator([sessionId, iteratorId, 1]);
Assert.AreEqual(respArray.Count, 0);
Assert.AreEqual(0, respArray.Count);

// Mocking session timeout
Thread.Sleep((int)_rpcServerSettings.SessionExpirationTime.TotalMilliseconds + 1);
Expand All @@ -414,7 +414,7 @@ public void TestTraverseIterator()
_rpcServer.OnTimer(new object());
Assert.ThrowsExactly<RpcException>(() => _ = (JArray)_rpcServer.TraverseIterator([sessionId, iteratorId, 100]), "Unknown session");
respArray = (JArray)_rpcServer.TraverseIterator([notExpiredSessionId, notExpiredIteratorId, 1]);
Assert.AreEqual(respArray.Count, 1);
Assert.AreEqual(1, respArray.Count);

// Mocking disposal
resp = (JObject)_rpcServer.InvokeFunction(new JArray(NeoToken.NEO.Hash.ToString(), "getAllCandidates", new JArray([]), validatorSigner, true));
Expand Down
4 changes: 2 additions & 2 deletions tests/Neo.Plugins.RpcServer.Tests/UT_RpcServer.Utilities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ public partial class UT_RpcServer
public void TestListPlugins()
{
JArray resp = (JArray)_rpcServer.ListPlugins([]);
Assert.AreEqual(resp.Count, 0);
Assert.AreEqual(0, resp.Count);
Plugin.Plugins.Add(new RpcServerPlugin());
resp = (JArray)_rpcServer.ListPlugins([]);
Assert.AreEqual(resp.Count, 2);
Assert.AreEqual(2, resp.Count);
foreach (JObject p in resp)
Assert.AreEqual(p["name"], nameof(RpcServer));
}
Expand Down
Loading