diff --git a/src/Neo.Compiler.MSIL/Neo.Compiler.MSIL.csproj b/src/Neo.Compiler.MSIL/Neo.Compiler.MSIL.csproj
index 8f34ffd3c..257c9abe1 100644
--- a/src/Neo.Compiler.MSIL/Neo.Compiler.MSIL.csproj
+++ b/src/Neo.Compiler.MSIL/Neo.Compiler.MSIL.csproj
@@ -42,7 +42,7 @@
-
+
diff --git a/src/Neo.SmartContract.Framework/ByteString.cs b/src/Neo.SmartContract.Framework/ByteString.cs
new file mode 100644
index 000000000..9ba917f42
--- /dev/null
+++ b/src/Neo.SmartContract.Framework/ByteString.cs
@@ -0,0 +1,29 @@
+namespace Neo.SmartContract.Framework
+{
+ public abstract class ByteString
+ {
+ public extern byte this[int index]
+ {
+ [OpCode(OpCode.PICKITEM)]
+ get;
+ }
+
+ public extern int Length
+ {
+ [OpCode(OpCode.SIZE)]
+ get;
+ }
+
+ [Script]
+ public static extern implicit operator string(ByteString str);
+
+ [Script]
+ public static extern implicit operator ByteString(string str);
+
+ [OpCode(OpCode.CONVERT, StackItemType.Buffer)]
+ public static extern explicit operator byte[](ByteString str);
+
+ [OpCode(OpCode.CONVERT, StackItemType.ByteString)]
+ public static extern explicit operator ByteString(byte[] buffer);
+ }
+}
diff --git a/src/Neo.SmartContract.Framework/Helper.cs b/src/Neo.SmartContract.Framework/Helper.cs
index b4863237f..1ae1ed83f 100644
--- a/src/Neo.SmartContract.Framework/Helper.cs
+++ b/src/Neo.SmartContract.Framework/Helper.cs
@@ -5,10 +5,6 @@ namespace Neo.SmartContract.Framework
{
public static class Helper
{
- internal const string StackItemType_Integer = "0x21";
- internal const string StackItemType_ByteString = "0x28";
- internal const string StackItemType_Buffer = "0x30";
-
///
/// Converts byte to byte[] considering the byte as a BigInteger (0x00 at the end)
///
@@ -19,7 +15,7 @@ public static class Helper
///
/// Converts sbyte to byte[].
///
- [OpCode(OpCode.CONVERT, StackItemType_Buffer)]
+ [OpCode(OpCode.CONVERT, StackItemType.Buffer)]
public extern static byte[] ToByteArray(this sbyte source);
///
@@ -33,7 +29,7 @@ public static class Helper
[OpCode(OpCode.PUSH0)]
[OpCode(OpCode.SWAP)]
[OpCode(OpCode.DROP)]
- [OpCode(OpCode.CONVERT, StackItemType_Integer)]
+ [OpCode(OpCode.CONVERT, StackItemType.Integer)]
public extern static BigInteger ToBigInteger(this byte[] source);
//{
// if (value == null) return 0;
@@ -43,13 +39,13 @@ public static class Helper
///
/// Converts string to byte[]. Examples: "hello" -> [0x68656c6c6f]; "" -> []; "Neo" -> [0x4e656f]
///
- [OpCode(OpCode.CONVERT, StackItemType_Buffer)]
+ [OpCode(OpCode.CONVERT, StackItemType.Buffer)]
public extern static byte[] ToByteArray(this string source);
///
/// Converts byte[] to string. Examples: [0x68656c6c6f] -> "hello"; [] -> ""; [0x4e656f] -> "Neo"
///
- [OpCode(OpCode.CONVERT, StackItemType_ByteString)]
+ [OpCode(OpCode.CONVERT, StackItemType.ByteString)]
public extern static string ToByteString(this byte[] source);
///
diff --git a/src/Neo.SmartContract.Framework/Services/Neo/GAS.cs b/src/Neo.SmartContract.Framework/Services/Neo/GAS.cs
index 0c17fe6de..f6ed8ea9c 100644
--- a/src/Neo.SmartContract.Framework/Services/Neo/GAS.cs
+++ b/src/Neo.SmartContract.Framework/Services/Neo/GAS.cs
@@ -12,5 +12,6 @@ public class GAS
public static extern byte Decimals { get; }
public static extern BigInteger TotalSupply();
public static extern BigInteger BalanceOf(byte[] account);
+ public static extern bool Transfer(byte[] from, byte[] to, BigInteger amount);
}
}
diff --git a/src/Neo.SmartContract.Framework/Services/Neo/NEO.cs b/src/Neo.SmartContract.Framework/Services/Neo/NEO.cs
index 0cdb31b9b..664c7184b 100644
--- a/src/Neo.SmartContract.Framework/Services/Neo/NEO.cs
+++ b/src/Neo.SmartContract.Framework/Services/Neo/NEO.cs
@@ -12,14 +12,16 @@ public class NEO
public static extern byte Decimals { get; }
public static extern BigInteger TotalSupply();
public static extern BigInteger BalanceOf(byte[] account);
+ public static extern bool Transfer(byte[] from, byte[] to, BigInteger amount);
+ public static extern bool SetGasPerBlock(BigInteger gasPerBlock);
+ public static extern BigInteger GetGasPerBlock();
public static extern BigInteger UnclaimedGas(byte[] account, uint end);
public static extern bool RegisterCandidate(byte[] pubkey);
public static extern bool UnRegisterCandidate(byte[] pubkey);
public static extern bool Vote(byte[] account, byte[] voteTo);
public static extern (string, BigInteger)[] GetCandidates();
- public static extern string[] GetValidators();
public static extern string[] GetCommittee();
public static extern string[] GetNextBlockValidators();
}
diff --git a/src/Neo.SmartContract.Framework/Services/Neo/Oracle.cs b/src/Neo.SmartContract.Framework/Services/Neo/Oracle.cs
index dbfe4ba5f..c7fdb028c 100644
--- a/src/Neo.SmartContract.Framework/Services/Neo/Oracle.cs
+++ b/src/Neo.SmartContract.Framework/Services/Neo/Oracle.cs
@@ -5,6 +5,7 @@ namespace Neo.SmartContract.Framework.Services.Neo
[Contract("0x3c05b488bf4cf699d0631bf80190896ebbf38c3b")]
public class Oracle
{
+ public const uint MinimumResponseFee = 0_10000000;
public static extern string Name { get; }
public static extern void Request(string url, string filter, string callback, object userData, long gasForResponse);
}
diff --git a/src/Neo.SmartContract.Framework/Services/Neo/Policy.cs b/src/Neo.SmartContract.Framework/Services/Neo/Policy.cs
index e6ba014fd..ce70e65be 100644
--- a/src/Neo.SmartContract.Framework/Services/Neo/Policy.cs
+++ b/src/Neo.SmartContract.Framework/Services/Neo/Policy.cs
@@ -13,7 +13,7 @@ public class Policy
public static extern uint GetMaxBlockSize();
public static extern long GetMaxBlockSystemFee();
public static extern BigInteger GetFeePerByte();
- public static extern string[] GetBlockedAccounts();
+ public static extern string[] IsBlocked(byte[] account);
public static extern bool SetMaxBlockSize(uint value);
public static extern bool SetMaxTransactionsPerBlock(uint value);
public static extern bool SetMaxBlockSystemFee(long value);
diff --git a/src/Neo.SmartContract.Framework/StackItemType.cs b/src/Neo.SmartContract.Framework/StackItemType.cs
new file mode 100644
index 000000000..ac753b8bd
--- /dev/null
+++ b/src/Neo.SmartContract.Framework/StackItemType.cs
@@ -0,0 +1,9 @@
+namespace Neo.SmartContract.Framework
+{
+ internal static class StackItemType
+ {
+ public const string Integer = "0x21";
+ public const string ByteString = "0x28";
+ public const string Buffer = "0x30";
+ }
+}
diff --git a/tests/Neo.Compiler.MSIL.UnitTests/TestClasses/Contract_NativeContracts.cs b/tests/Neo.Compiler.MSIL.UnitTests/TestClasses/Contract_NativeContracts.cs
index 22dff0d36..5523a90f2 100644
--- a/tests/Neo.Compiler.MSIL.UnitTests/TestClasses/Contract_NativeContracts.cs
+++ b/tests/Neo.Compiler.MSIL.UnitTests/TestClasses/Contract_NativeContracts.cs
@@ -23,6 +23,11 @@ public static string OracleName()
return Oracle.Name;
}
+ public static uint OracleMinimumResponseFee()
+ {
+ return Oracle.MinimumResponseFee;
+ }
+
public static string DesignationName()
{
return Designation.Name;
diff --git a/tests/Neo.Compiler.MSIL.UnitTests/UnitTest_NativeContracts.cs b/tests/Neo.Compiler.MSIL.UnitTests/UnitTest_NativeContracts.cs
index 3f41fd48a..4c7751285 100644
--- a/tests/Neo.Compiler.MSIL.UnitTests/UnitTest_NativeContracts.cs
+++ b/tests/Neo.Compiler.MSIL.UnitTests/UnitTest_NativeContracts.cs
@@ -55,6 +55,18 @@ public void Test_Oracle()
var entry = result.Pop();
Assert.AreEqual("Oracle", entry.GetString());
+
+ // Minimum Response Fee
+
+ testengine.Reset();
+ result = testengine.ExecuteTestCaseStandard("oracleMinimumResponseFee");
+
+ Assert.AreEqual(VMState.HALT, testengine.State);
+ Assert.AreEqual(1, result.Count);
+
+ entry = result.Pop();
+
+ Assert.AreEqual(0_10000000u, entry.GetInteger());
}
[TestMethod]
diff --git a/tests/Neo.SmartContract.Framework.UnitTests/HelperTest.cs b/tests/Neo.SmartContract.Framework.UnitTests/HelperTest.cs
index 592115821..3f59d50ce 100644
--- a/tests/Neo.SmartContract.Framework.UnitTests/HelperTest.cs
+++ b/tests/Neo.SmartContract.Framework.UnitTests/HelperTest.cs
@@ -27,8 +27,8 @@ public void TestHexToBytes()
Assert.AreEqual(1, result.Count);
var item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
- Assert.AreEqual("0a0b0c0d0e0f", (item as ByteString).GetSpan().ToHexString());
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
+ Assert.AreEqual("0a0b0c0d0e0f", (item as VM.Types.ByteString).GetSpan().ToHexString());
}
[TestMethod]
@@ -46,7 +46,7 @@ public void TestToBigInteger()
Assert.AreEqual(0, item.GetInteger());
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard("testToBigInteger", new ByteString(new byte[0]));
+ result = _engine.ExecuteTestCaseStandard("testToBigInteger", new VM.Types.ByteString(new byte[0]));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -57,7 +57,7 @@ public void TestToBigInteger()
// Value
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard("testToBigInteger", new ByteString(new byte[] { 123 }));
+ result = _engine.ExecuteTestCaseStandard("testToBigInteger", new VM.Types.ByteString(new byte[] { 123 }));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -102,7 +102,7 @@ public void Test_ByteToByteArray()
var result = _engine.GetMethod("testByteToByteArray").Run();
StackItem wantResult = new byte[] { 0x01 };
- Assert.AreEqual(wantResult.ConvertTo(StackItemType.ByteString), result.ConvertTo(StackItemType.ByteString));
+ Assert.AreEqual(wantResult.ConvertTo(VM.Types.StackItemType.ByteString), result.ConvertTo(VM.Types.StackItemType.ByteString));
}
[TestMethod]
@@ -111,7 +111,7 @@ public void Test_Reverse()
var result = _engine.GetMethod("testReverse").Run();
StackItem wantResult = new byte[] { 0x03, 0x02, 0x01 };
- Assert.AreEqual(wantResult.ConvertTo(StackItemType.ByteString), result.ConvertTo(StackItemType.ByteString));
+ Assert.AreEqual(wantResult.ConvertTo(VM.Types.StackItemType.ByteString), result.ConvertTo(VM.Types.StackItemType.ByteString));
}
[TestMethod]
@@ -120,7 +120,7 @@ public void Test_SbyteToByteArray()
var result = _engine.GetMethod("testSbyteToByteArray").Run();
StackItem wantResult = new byte[] { 255 };
- Assert.AreEqual(wantResult.ConvertTo(StackItemType.ByteString), result.ConvertTo(StackItemType.ByteString));
+ Assert.AreEqual(wantResult.ConvertTo(VM.Types.StackItemType.ByteString), result.ConvertTo(VM.Types.StackItemType.ByteString));
}
[TestMethod]
@@ -129,7 +129,7 @@ public void Test_StringToByteArray()
var result = _engine.GetMethod("testStringToByteArray").Run();
StackItem wantResult = new byte[] { 104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100 };
- Assert.AreEqual(wantResult.ConvertTo(StackItemType.ByteString), result.ConvertTo(StackItemType.ByteString));
+ Assert.AreEqual(wantResult.ConvertTo(VM.Types.StackItemType.ByteString), result.ConvertTo(VM.Types.StackItemType.ByteString));
}
[TestMethod]
@@ -138,7 +138,7 @@ public void Test_Concat()
var result = _engine.GetMethod("testConcat").Run();
StackItem wantResult = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 };
- Assert.AreEqual(wantResult.ConvertTo(StackItemType.ByteString), result.ConvertTo(StackItemType.ByteString));
+ Assert.AreEqual(wantResult.ConvertTo(VM.Types.StackItemType.ByteString), result.ConvertTo(VM.Types.StackItemType.ByteString));
}
[TestMethod]
@@ -147,7 +147,7 @@ public void Test_Range()
var result = _engine.GetMethod("testRange").Run();
StackItem wantResult = new byte[] { 0x02 };
- Assert.AreEqual(wantResult.ConvertTo(StackItemType.ByteString), result.ConvertTo(StackItemType.ByteString));
+ Assert.AreEqual(wantResult.ConvertTo(VM.Types.StackItemType.ByteString), result.ConvertTo(VM.Types.StackItemType.ByteString));
}
[TestMethod]
@@ -156,7 +156,7 @@ public void Test_Take()
var result = _engine.GetMethod("testTake").Run();
StackItem wantResult = new byte[] { 0x01, 0x02 };
- Assert.AreEqual(wantResult.ConvertTo(StackItemType.ByteString), result.ConvertTo(StackItemType.ByteString));
+ Assert.AreEqual(wantResult.ConvertTo(VM.Types.StackItemType.ByteString), result.ConvertTo(VM.Types.StackItemType.ByteString));
}
[TestMethod]
@@ -165,7 +165,7 @@ public void Test_Last()
var result = _engine.GetMethod("testLast").Run();
StackItem wantResult = new byte[] { 0x02, 0x03 };
- Assert.AreEqual(wantResult.ConvertTo(StackItemType.ByteString), result.ConvertTo(StackItemType.ByteString));
+ Assert.AreEqual(wantResult.ConvertTo(VM.Types.StackItemType.ByteString), result.ConvertTo(VM.Types.StackItemType.ByteString));
}
[TestMethod]
@@ -174,7 +174,7 @@ public void Test_ToScriptHash()
var result = _engine.GetMethod("testToScriptHash").Run();
StackItem wantResult = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0xaa, 0xbb, 0xcc, 0xdd, 0xee };
- Assert.AreEqual(wantResult.ConvertTo(StackItemType.ByteString), result.ConvertTo(StackItemType.ByteString));
+ Assert.AreEqual(wantResult.ConvertTo(VM.Types.StackItemType.ByteString), result.ConvertTo(VM.Types.StackItemType.ByteString));
}
}
}
diff --git a/tests/Neo.SmartContract.Framework.UnitTests/ListTest.cs b/tests/Neo.SmartContract.Framework.UnitTests/ListTest.cs
index 216513d40..843f29c02 100644
--- a/tests/Neo.SmartContract.Framework.UnitTests/ListTest.cs
+++ b/tests/Neo.SmartContract.Framework.UnitTests/ListTest.cs
@@ -109,7 +109,7 @@ public void TestArrayConvert()
static JObject ParseJson(StackItem item)
{
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
var json = System.Text.Encoding.UTF8.GetString(item.GetSpan());
return JObject.Parse(json);
}
diff --git a/tests/Neo.SmartContract.Framework.UnitTests/MapTest.cs b/tests/Neo.SmartContract.Framework.UnitTests/MapTest.cs
index 02bd24de3..1142e05f4 100644
--- a/tests/Neo.SmartContract.Framework.UnitTests/MapTest.cs
+++ b/tests/Neo.SmartContract.Framework.UnitTests/MapTest.cs
@@ -46,9 +46,9 @@ public void TestByteArray()
Assert.AreEqual(1, result.Count);
var item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
// Except: {"a":"teststring2"}
- Assert.AreEqual("7b2261223a2274657374737472696e6732227d", (item as ByteString).GetSpan().ToHexString());
+ Assert.AreEqual("7b2261223a2274657374737472696e6732227d", (item as VM.Types.ByteString).GetSpan().ToHexString());
}
[TestMethod]
@@ -61,9 +61,9 @@ public void TestClear()
Assert.AreEqual(1, result.Count);
var item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
// Except: {}
- Assert.AreEqual("7b7d", (item as ByteString).GetSpan().ToHexString());
+ Assert.AreEqual("7b7d", (item as VM.Types.ByteString).GetSpan().ToHexString());
}
@@ -76,9 +76,9 @@ public void TestByteArray2()
Assert.AreEqual(1, result.Count);
var item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
// Except: {"\u0001\u0001":"\u0022\u0022"}
- Assert.AreEqual("7b225c75303030315c7530303031223a225c75303032325c7530303232227d", (item as ByteString).GetSpan().ToHexString());
+ Assert.AreEqual("7b225c75303030315c7530303031223a225c75303032325c7530303232227d", (item as VM.Types.ByteString).GetSpan().ToHexString());
}
[TestMethod]
@@ -91,9 +91,9 @@ public void TestUnicode()
Assert.AreEqual(1, result.Count);
var item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
// Except: {"\u4E2D":"129840test10022939"}
- Assert.AreEqual("7b225c7534453244223a22313239383430746573743130303232393339227d", (item as ByteString).GetSpan().ToHexString());
+ Assert.AreEqual("7b225c7534453244223a22313239383430746573743130303232393339227d", (item as VM.Types.ByteString).GetSpan().ToHexString());
}
[TestMethod]
@@ -106,9 +106,9 @@ public void TestUnicodeValue()
Assert.AreEqual(1, result.Count);
var item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
// Except: {"ab":"\u6587"}
- Assert.AreEqual("7b226162223a225c7536353837227d", (item as ByteString).GetSpan().ToHexString());
+ Assert.AreEqual("7b226162223a225c7536353837227d", (item as VM.Types.ByteString).GetSpan().ToHexString());
}
[TestMethod]
@@ -122,9 +122,9 @@ public void TestUnicodeKeyValue()
Assert.AreEqual(1, result.Count);
var item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
// Except: {"\u4E2D":"\u6587"}
- Assert.AreEqual("7b225c7534453244223a225c7536353837227d", (item as ByteString).GetSpan().ToHexString());
+ Assert.AreEqual("7b225c7534453244223a225c7536353837227d", (item as VM.Types.ByteString).GetSpan().ToHexString());
}
[TestMethod]
@@ -160,7 +160,7 @@ public void TestDeserialize()
var map = item as Map;
Assert.AreEqual(1, map.Count);
Assert.IsTrue(map.ContainsKey("a"));
- Assert.AreEqual((ByteString)"testdeserialize", map["a"]);
+ Assert.AreEqual((VM.Types.ByteString)"testdeserialize", map["a"]);
}
}
}
diff --git a/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/AccountTest.cs b/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/AccountTest.cs
index da057d09f..84175c104 100644
--- a/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/AccountTest.cs
+++ b/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/AccountTest.cs
@@ -33,14 +33,14 @@ public void Test_AccountIsStandard()
// Empty
- var result = _engine.ExecuteTestCaseStandard("accountIsStandard", new ByteString(new byte[0]));
+ var result = _engine.ExecuteTestCaseStandard("accountIsStandard", new VM.Types.ByteString(new byte[0]));
Assert.AreEqual(VM.VMState.FAULT, _engine.State);
Assert.AreEqual(0, result.Count);
// No standard
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard("accountIsStandard", new ByteString(new byte[20]));
+ result = _engine.ExecuteTestCaseStandard("accountIsStandard", new VM.Types.ByteString(new byte[20]));
Assert.AreEqual(VM.VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -49,7 +49,7 @@ public void Test_AccountIsStandard()
Assert.AreEqual(false, item.GetBoolean());
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard("accountIsStandard", new ByteString(noStandard));
+ result = _engine.ExecuteTestCaseStandard("accountIsStandard", new VM.Types.ByteString(noStandard));
Assert.AreEqual(VM.VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
diff --git a/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/BlockchainTest.cs b/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/BlockchainTest.cs
index 2d6e7b48b..7a3b4dbe2 100644
--- a/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/BlockchainTest.cs
+++ b/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/BlockchainTest.cs
@@ -46,7 +46,7 @@ public void Test_GetTransactionHeight()
// Not found
_engine.Reset();
- var result = _engine.ExecuteTestCaseStandard("getTransactionHeight", new ByteString(UInt256.Zero.ToArray()));
+ var result = _engine.ExecuteTestCaseStandard("getTransactionHeight", new VM.Types.ByteString(UInt256.Zero.ToArray()));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -57,7 +57,7 @@ public void Test_GetTransactionHeight()
// Found
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard("getTransactionHeight", new ByteString(_block.Transactions[0].Hash.ToArray()));
+ result = _engine.ExecuteTestCaseStandard("getTransactionHeight", new VM.Types.ByteString(_block.Transactions[0].Hash.ToArray()));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -69,14 +69,14 @@ public void Test_GetTransactionHeight()
[TestMethod]
public void Test_GetBlockByHash()
{
- Test_GetBlock("getBlockByHash", new ByteString(_block.Hash.ToArray()), new ByteString(UInt256.Parse("0x0000000000000000000000000000000000000000000000000000000000000001").ToArray()));
+ Test_GetBlock("getBlockByHash", new VM.Types.ByteString(_block.Hash.ToArray()), new VM.Types.ByteString(UInt256.Parse("0x0000000000000000000000000000000000000000000000000000000000000001").ToArray()));
}
[TestMethod]
public void Test_GetTxByHash()
{
- Test_GetTransaction("getTxByHash", new StackItem[] { new ByteString(_block.Transactions[0].Hash.ToArray()) },
- new StackItem[] { new ByteString(UInt256.Zero.ToArray()) },
+ Test_GetTransaction("getTxByHash", new StackItem[] { new VM.Types.ByteString(_block.Transactions[0].Hash.ToArray()) },
+ new StackItem[] { new VM.Types.ByteString(UInt256.Zero.ToArray()) },
true);
}
@@ -93,8 +93,8 @@ public void Test_GetTxByBlockIndex()
public void Test_GetTxByBlockHash()
{
Test_GetTransaction("getTxByBlockHash", new StackItem[] {
- new ByteString(_block.Hash.ToArray()), new Integer(0) },
- new StackItem[] { new ByteString(_block.Hash.ToArray()), new Integer(_block.Transactions.Length + 1) },
+ new VM.Types.ByteString(_block.Hash.ToArray()), new Integer(0) },
+ new StackItem[] { new VM.Types.ByteString(_block.Hash.ToArray()), new Integer(_block.Transactions.Length + 1) },
false);
}
@@ -103,7 +103,7 @@ public void Test_GetTransaction(string method, StackItem[] foundArgs, StackItem[
// Not found
_engine.Reset();
- var result = _engine.ExecuteTestCaseStandard(method, Concat(notFoundArgs, new ByteString(new byte[0])));
+ var result = _engine.ExecuteTestCaseStandard(method, Concat(notFoundArgs, new VM.Types.ByteString(new byte[0])));
if (expectedNullAsNotFound)
{
@@ -122,18 +122,18 @@ public void Test_GetTransaction(string method, StackItem[] foundArgs, StackItem[
// Hash
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard(method, Concat(foundArgs, new ByteString(Utility.StrictUTF8.GetBytes("Hash"))));
+ result = _engine.ExecuteTestCaseStandard(method, Concat(foundArgs, new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("Hash"))));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
var item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
CollectionAssert.AreEqual(tx.Hash.ToArray(), item.GetSpan().ToArray());
// NetworkFee
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard(method, Concat(foundArgs, new ByteString(Utility.StrictUTF8.GetBytes("NetworkFee"))));
+ result = _engine.ExecuteTestCaseStandard(method, Concat(foundArgs, new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("NetworkFee"))));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -144,7 +144,7 @@ public void Test_GetTransaction(string method, StackItem[] foundArgs, StackItem[
// Nonce
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard(method, Concat(foundArgs, new ByteString(Utility.StrictUTF8.GetBytes("Nonce"))));
+ result = _engine.ExecuteTestCaseStandard(method, Concat(foundArgs, new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("Nonce"))));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -155,7 +155,7 @@ public void Test_GetTransaction(string method, StackItem[] foundArgs, StackItem[
// SystemFee
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard(method, Concat(foundArgs, new ByteString(Utility.StrictUTF8.GetBytes("SystemFee"))));
+ result = _engine.ExecuteTestCaseStandard(method, Concat(foundArgs, new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("SystemFee"))));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -166,7 +166,7 @@ public void Test_GetTransaction(string method, StackItem[] foundArgs, StackItem[
// ValidUntilBlock
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard(method, Concat(foundArgs, new ByteString(Utility.StrictUTF8.GetBytes("ValidUntilBlock"))));
+ result = _engine.ExecuteTestCaseStandard(method, Concat(foundArgs, new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("ValidUntilBlock"))));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -177,7 +177,7 @@ public void Test_GetTransaction(string method, StackItem[] foundArgs, StackItem[
// Version
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard(method, Concat(foundArgs, new ByteString(Utility.StrictUTF8.GetBytes("Version"))));
+ result = _engine.ExecuteTestCaseStandard(method, Concat(foundArgs, new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("Version"))));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -188,27 +188,27 @@ public void Test_GetTransaction(string method, StackItem[] foundArgs, StackItem[
// Script
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard(method, Concat(foundArgs, new ByteString(Utility.StrictUTF8.GetBytes("Script"))));
+ result = _engine.ExecuteTestCaseStandard(method, Concat(foundArgs, new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("Script"))));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
CollectionAssert.AreEqual(tx.Script, item.GetSpan().ToArray());
// Sender
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard(method, Concat(foundArgs, new ByteString(Utility.StrictUTF8.GetBytes("Sender"))));
+ result = _engine.ExecuteTestCaseStandard(method, Concat(foundArgs, new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("Sender"))));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
CollectionAssert.AreEqual(tx.Sender.ToArray(), item.GetSpan().ToArray());
}
- private StackItem[] Concat(StackItem[] a, ByteString b)
+ private StackItem[] Concat(StackItem[] a, VM.Types.ByteString b)
{
return a.Concat(new StackItem[] { b }).ToArray();
}
@@ -224,7 +224,7 @@ public void Test_GetBlock(string method, StackItem foundArg, StackItem notFoundA
// Not found
_engine.Reset();
- var result = _engine.ExecuteTestCaseStandard(method, notFoundArg, new ByteString(new byte[0]));
+ var result = _engine.ExecuteTestCaseStandard(method, notFoundArg, new VM.Types.ByteString(new byte[0]));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -234,18 +234,18 @@ public void Test_GetBlock(string method, StackItem foundArg, StackItem notFoundA
// Hash
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard(method, foundArg, new ByteString(Utility.StrictUTF8.GetBytes("Hash")));
+ result = _engine.ExecuteTestCaseStandard(method, foundArg, new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("Hash")));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
CollectionAssert.AreEqual(_block.Hash.ToArray(), item.GetSpan().ToArray());
// Index
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard(method, foundArg, new ByteString(Utility.StrictUTF8.GetBytes("Index")));
+ result = _engine.ExecuteTestCaseStandard(method, foundArg, new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("Index")));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -256,40 +256,40 @@ public void Test_GetBlock(string method, StackItem foundArg, StackItem notFoundA
// MerkleRoot
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard(method, foundArg, new ByteString(Utility.StrictUTF8.GetBytes("MerkleRoot")));
+ result = _engine.ExecuteTestCaseStandard(method, foundArg, new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("MerkleRoot")));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
CollectionAssert.AreEqual(_block.MerkleRoot.ToArray(), item.GetSpan().ToArray());
// NextConsensus
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard(method, foundArg, new ByteString(Utility.StrictUTF8.GetBytes("NextConsensus")));
+ result = _engine.ExecuteTestCaseStandard(method, foundArg, new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("NextConsensus")));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
CollectionAssert.AreEqual(_block.NextConsensus.ToArray(), item.GetSpan().ToArray());
// PrevHash
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard(method, foundArg, new ByteString(Utility.StrictUTF8.GetBytes("PrevHash")));
+ result = _engine.ExecuteTestCaseStandard(method, foundArg, new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("PrevHash")));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
CollectionAssert.AreEqual(_block.PrevHash.ToArray(), item.GetSpan().ToArray());
// Timestamp
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard(method, foundArg, new ByteString(Utility.StrictUTF8.GetBytes("Timestamp")));
+ result = _engine.ExecuteTestCaseStandard(method, foundArg, new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("Timestamp")));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -300,7 +300,7 @@ public void Test_GetBlock(string method, StackItem foundArg, StackItem notFoundA
// TransactionsCount
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard(method, foundArg, new ByteString(Utility.StrictUTF8.GetBytes("TransactionsCount")));
+ result = _engine.ExecuteTestCaseStandard(method, foundArg, new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("TransactionsCount")));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -311,7 +311,7 @@ public void Test_GetBlock(string method, StackItem foundArg, StackItem notFoundA
// Version
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard(method, foundArg, new ByteString(Utility.StrictUTF8.GetBytes("Version")));
+ result = _engine.ExecuteTestCaseStandard(method, foundArg, new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("Version")));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -322,7 +322,7 @@ public void Test_GetBlock(string method, StackItem foundArg, StackItem notFoundA
// Uknown property
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard(method, foundArg, new ByteString(Utility.StrictUTF8.GetBytes("ASD")));
+ result = _engine.ExecuteTestCaseStandard(method, foundArg, new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("ASD")));
Assert.AreEqual(VMState.FAULT, _engine.State);
}
@@ -353,7 +353,7 @@ public void GetContract()
// Not found
_engine.Reset();
- var result = _engine.ExecuteTestCaseStandard("getContract", new ByteString(UInt160.Zero.ToArray()), new ByteString(new byte[20]));
+ var result = _engine.ExecuteTestCaseStandard("getContract", new VM.Types.ByteString(UInt160.Zero.ToArray()), new VM.Types.ByteString(new byte[20]));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -363,18 +363,18 @@ public void GetContract()
// Found + Manifest
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard("getContract", new ByteString(contract.ScriptHash.ToArray()), new ByteString(Utility.StrictUTF8.GetBytes("Manifest")));
+ result = _engine.ExecuteTestCaseStandard("getContract", new VM.Types.ByteString(contract.ScriptHash.ToArray()), new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("Manifest")));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
Assert.AreEqual(contract.Manifest.ToString(), item.GetString());
// Found + HasStorage
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard("getContract", new ByteString(contract.ScriptHash.ToArray()), new ByteString(Utility.StrictUTF8.GetBytes("HasStorage")));
+ result = _engine.ExecuteTestCaseStandard("getContract", new VM.Types.ByteString(contract.ScriptHash.ToArray()), new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("HasStorage")));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -385,7 +385,7 @@ public void GetContract()
// Found + IsPayable
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard("getContract", new ByteString(contract.ScriptHash.ToArray()), new ByteString(Utility.StrictUTF8.GetBytes("IsPayable")));
+ result = _engine.ExecuteTestCaseStandard("getContract", new VM.Types.ByteString(contract.ScriptHash.ToArray()), new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("IsPayable")));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -396,18 +396,18 @@ public void GetContract()
// Found + IsPayable
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard("getContract", new ByteString(contract.ScriptHash.ToArray()), new ByteString(Utility.StrictUTF8.GetBytes("Script")));
+ result = _engine.ExecuteTestCaseStandard("getContract", new VM.Types.ByteString(contract.ScriptHash.ToArray()), new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("Script")));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
CollectionAssert.AreEqual(contract.Script, item.GetSpan().ToArray());
// Found + Uknown property
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard("getContract", new ByteString(contract.ScriptHash.ToArray()), new ByteString(Utility.StrictUTF8.GetBytes("ASD")));
+ result = _engine.ExecuteTestCaseStandard("getContract", new VM.Types.ByteString(contract.ScriptHash.ToArray()), new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("ASD")));
Assert.AreEqual(VMState.FAULT, _engine.State);
}
}
diff --git a/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/ContractTest.cs b/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/ContractTest.cs
index abbb82f1e..398b15eb9 100644
--- a/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/ContractTest.cs
+++ b/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/ContractTest.cs
@@ -169,7 +169,7 @@ public void Test_CreateStandardAccount()
Assert.AreEqual(1, result.Count);
var item = result.Pop();
- Assert.IsTrue(item.Type == StackItemType.ByteString);
+ Assert.IsTrue(item.Type == VM.Types.StackItemType.ByteString);
Assert.AreEqual("3ae15fc83b48d9bb5c327e578e2f1d2100ba1b89", item.GetSpan().ToHexString());
// Good pubKey (uncompressed)
@@ -180,7 +180,7 @@ public void Test_CreateStandardAccount()
Assert.AreEqual(1, result.Count);
item = result.Pop();
- Assert.IsTrue(item.Type == StackItemType.ByteString);
+ Assert.IsTrue(item.Type == VM.Types.StackItemType.ByteString);
Assert.AreEqual("3ae15fc83b48d9bb5c327e578e2f1d2100ba1b89", item.GetSpan().ToHexString());
}
diff --git a/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/CryptoTest.cs b/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/CryptoTest.cs
index 99d23c0c2..d111c9190 100644
--- a/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/CryptoTest.cs
+++ b/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/CryptoTest.cs
@@ -55,7 +55,7 @@ public void Test_SHA256()
Assert.AreEqual(1, result.Count);
var item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
Assert.AreEqual("688787d8ff144c502c7f5cffaafe2cc588d86079f9de88304c26b0cb99ce91c6", item.GetSpan().ToArray().ToHexString());
}
@@ -69,7 +69,7 @@ public void Test_RIPEMD160()
Assert.AreEqual(1, result.Count);
var item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
Assert.AreEqual("98c615784ccb5fe5936fbc0cbe9dfdb408d92f0f", item.GetSpan().ToArray().ToHexString());
}
@@ -83,7 +83,7 @@ public void Test_HASH160()
Assert.AreEqual(1, result.Count);
var item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
Assert.AreEqual("d7d5ee7824ff93f94c3055af9382c86c68b5ca92", item.GetSpan().ToArray().ToHexString());
}
@@ -97,7 +97,7 @@ public void Test_HASH256()
Assert.AreEqual(1, result.Count);
var item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
Assert.AreEqual("bc62d4b80d9e36da29c16c5d4d9f11731f36052c72401a76c23c0fb5a9b74423", item.GetSpan().ToArray().ToHexString());
}
@@ -111,7 +111,7 @@ public void Test_VerifySignature()
_engine.Reset();
var result = _engine.ExecuteTestCaseStandard("secp256r1VerifySignature",
- new ByteString(_key.PublicKey.EncodePoint(true)), new ByteString(new byte[64]));
+ new VM.Types.ByteString(_key.PublicKey.EncodePoint(true)), new VM.Types.ByteString(new byte[64]));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -123,7 +123,7 @@ public void Test_VerifySignature()
_engine.Reset();
result = _engine.ExecuteTestCaseStandard("secp256r1VerifySignature",
- new ByteString(_key.PublicKey.EncodePoint(true)), new ByteString(signature));
+ new VM.Types.ByteString(_key.PublicKey.EncodePoint(true)), new VM.Types.ByteString(signature));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -142,8 +142,8 @@ public void Test_VerifySignatures()
_engine.Reset();
var result = _engine.ExecuteTestCaseStandard("secp256r1VerifySignatures",
- new Array(new StackItem[] { new ByteString(_key.PublicKey.EncodePoint(true)) }),
- new Array(new StackItem[] { new ByteString(new byte[64]) }));
+ new Array(new StackItem[] { new VM.Types.ByteString(_key.PublicKey.EncodePoint(true)) }),
+ new Array(new StackItem[] { new VM.Types.ByteString(new byte[64]) }));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -155,8 +155,8 @@ public void Test_VerifySignatures()
_engine.Reset();
result = _engine.ExecuteTestCaseStandard("secp256r1VerifySignatures",
- new Array(new StackItem[] { new ByteString(_key.PublicKey.EncodePoint(true)) }),
- new Array(new StackItem[] { new ByteString(signature) }));
+ new Array(new StackItem[] { new VM.Types.ByteString(_key.PublicKey.EncodePoint(true)) }),
+ new Array(new StackItem[] { new VM.Types.ByteString(signature) }));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -175,9 +175,9 @@ public void Test_VerifySignaturesWithMessage()
_engine.Reset();
var result = _engine.ExecuteTestCaseStandard("secp256r1VerifySignaturesWithMessage",
- new ByteString(new byte[0]),
- new Array(new StackItem[] { new ByteString(_key.PublicKey.EncodePoint(true)) }),
- new Array(new StackItem[] { new ByteString(new byte[64]) }));
+ new VM.Types.ByteString(new byte[0]),
+ new Array(new StackItem[] { new VM.Types.ByteString(_key.PublicKey.EncodePoint(true)) }),
+ new Array(new StackItem[] { new VM.Types.ByteString(new byte[64]) }));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -189,9 +189,9 @@ public void Test_VerifySignaturesWithMessage()
_engine.Reset();
result = _engine.ExecuteTestCaseStandard("secp256r1VerifySignaturesWithMessage",
- new ByteString(_engine.ScriptContainer.GetHashData()),
- new Array(new StackItem[] { new ByteString(_key.PublicKey.EncodePoint(true)) }),
- new Array(new StackItem[] { new ByteString(signature) }));
+ new VM.Types.ByteString(_engine.ScriptContainer.GetHashData()),
+ new Array(new StackItem[] { new VM.Types.ByteString(_key.PublicKey.EncodePoint(true)) }),
+ new Array(new StackItem[] { new VM.Types.ByteString(signature) }));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -210,8 +210,8 @@ public void Test_VerifySignatureWithMessage()
_engine.Reset();
var result = _engine.ExecuteTestCaseStandard("secp256r1VerifySignatureWithMessage",
- new ByteString(new byte[0]),
- new ByteString(_key.PublicKey.EncodePoint(true)), new ByteString(signature));
+ new VM.Types.ByteString(new byte[0]),
+ new VM.Types.ByteString(_key.PublicKey.EncodePoint(true)), new VM.Types.ByteString(signature));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -223,8 +223,8 @@ public void Test_VerifySignatureWithMessage()
_engine.Reset();
result = _engine.ExecuteTestCaseStandard("secp256r1VerifySignatureWithMessage",
- new ByteString(_engine.ScriptContainer.GetHashData()),
- new ByteString(_key.PublicKey.EncodePoint(true)), new ByteString(signature));
+ new VM.Types.ByteString(_engine.ScriptContainer.GetHashData()),
+ new VM.Types.ByteString(_key.PublicKey.EncodePoint(true)), new VM.Types.ByteString(signature));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
diff --git a/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/JsonTest.cs b/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/JsonTest.cs
index cbac16fd5..0de2e48a4 100644
--- a/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/JsonTest.cs
+++ b/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/JsonTest.cs
@@ -38,19 +38,19 @@ public void Test_SerializeDeserialize()
_engine.Reset();
result = _engine.ExecuteTestCaseStandard("serialize", new Array(new StackItem[]{
- StackItem.Null, new Boolean(true), new ByteString(Encoding.ASCII.GetBytes("asd"))
+ StackItem.Null, new Boolean(true), new VM.Types.ByteString(Encoding.ASCII.GetBytes("asd"))
}));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
var item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
Assert.AreEqual("[null,true,\"asd\"]", item.GetString());
// Deserialize
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard("deserialize", new ByteString(Encoding.ASCII.GetBytes("[null,true,\"asd\"]")));
+ result = _engine.ExecuteTestCaseStandard("deserialize", new VM.Types.ByteString(Encoding.ASCII.GetBytes("[null,true,\"asd\"]")));
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -63,7 +63,7 @@ public void Test_SerializeDeserialize()
Assert.IsInstanceOfType(entry, typeof(Boolean));
Assert.AreEqual(true, entry.GetBoolean());
entry = ((Array)item)[2];
- Assert.IsInstanceOfType(entry, typeof(ByteString));
+ Assert.IsInstanceOfType(entry, typeof(VM.Types.ByteString));
Assert.AreEqual("asd", entry.GetString());
}
}
diff --git a/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/NativeTest.cs b/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/NativeTest.cs
index f88a16980..41951675c 100644
--- a/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/NativeTest.cs
+++ b/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/NativeTest.cs
@@ -11,6 +11,7 @@ public class NativeTest
{
private TestEngine _engine;
private readonly byte[] pubKey = NeonTestTool.HexString2Bytes("03ea01cb94bdaf0cd1c01b159d474f9604f4af35a3e2196f6bdfdb33b2aa4961fa");
+ byte[] account = new byte[] { 0xf6, 0x64, 0x43, 0x49, 0x8d, 0x38, 0x78, 0xd3, 0x2b, 0x99, 0x4e, 0x4e, 0x12, 0x83, 0xc6, 0x93, 0x44, 0x21, 0xda, 0xfe };
[TestInitialize]
public void Init()
@@ -63,11 +64,10 @@ public void Test_NEO()
Assert.AreEqual(1, result.Count);
item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
Assert.AreEqual("NEO", item.GetString());
_engine.Reset();
- var account = new byte[] { 0xf6, 0x64, 0x43, 0x49, 0x8d, 0x38, 0x78, 0xd3, 0x2b, 0x99, 0x4e, 0x4e, 0x12, 0x83, 0xc6, 0x93, 0x44, 0x21, 0xda, 0xfe };
result = _engine.ExecuteTestCaseStandard("NEO_BalanceOf", account);
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -109,10 +109,37 @@ public void Test_NEO()
Assert.IsInstanceOfType(candidate, typeof(Struct));
var candidatePubKey = ((Struct)candidate)[0];
var candidateVotes = ((Struct)candidate)[1];
- Assert.IsInstanceOfType(candidatePubKey, typeof(ByteString));
- Assert.AreEqual(true, candidatePubKey.Equals((ByteString)pubKey));
+ Assert.IsInstanceOfType(candidatePubKey, typeof(VM.Types.ByteString));
+ Assert.AreEqual(true, candidatePubKey.Equals((VM.Types.ByteString)pubKey));
Assert.IsInstanceOfType(candidateVotes, typeof(Integer));
Assert.AreEqual(0, candidateVotes.GetInteger());
+
+ _engine.Reset();
+ result = _engine.ExecuteTestCaseStandard("NEO_Transfer", account, account, 0);
+ Assert.AreEqual(VMState.HALT, _engine.State);
+ Assert.AreEqual(1, result.Count);
+
+ item = result.Pop();
+ Assert.IsInstanceOfType(item, typeof(Boolean));
+ Assert.AreEqual(false, item.GetBoolean());
+
+ _engine.Reset();
+ result = _engine.ExecuteTestCaseStandard("NEO_UnclaimedGas", account, 0);
+ Assert.AreEqual(VMState.HALT, _engine.State);
+ Assert.AreEqual(1, result.Count);
+
+ item = result.Pop();
+ Assert.IsInstanceOfType(item, typeof(Integer));
+ Assert.AreEqual(0, item.GetInteger());
+
+ _engine.Reset();
+ result = _engine.ExecuteTestCaseStandard("NEO_GetGasPerBlock");
+ Assert.AreEqual(VMState.HALT, _engine.State);
+ Assert.AreEqual(1, result.Count);
+
+ item = result.Pop();
+ Assert.IsInstanceOfType(item, typeof(Integer));
+ Assert.AreEqual(500000000, item.GetInteger());
}
[TestMethod]
@@ -133,7 +160,7 @@ public void Test_GAS()
Assert.AreEqual(1, result.Count);
item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
Assert.AreEqual("GAS", item.GetString());
}
@@ -141,7 +168,7 @@ public void Test_GAS()
public void Test_Policy()
{
_engine.Reset();
- var result = _engine.ExecuteTestCaseStandard("policy_GetFeePerByte");
+ var result = _engine.ExecuteTestCaseStandard("Policy_GetFeePerByte");
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -150,7 +177,7 @@ public void Test_Policy()
Assert.AreEqual(1000L, item.GetInteger());
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard("policy_GetMaxTransactionsPerBlock");
+ result = _engine.ExecuteTestCaseStandard("Policy_GetMaxTransactionsPerBlock");
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
@@ -159,13 +186,13 @@ public void Test_Policy()
Assert.AreEqual(512, item.GetInteger());
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard("policy_GetBlockedAccounts");
+ result = _engine.ExecuteTestCaseStandard("Policy_IsBlocked", account);
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(Array));
- Assert.AreEqual(0, ((Array)item).Count);
+ Assert.IsInstanceOfType(item, typeof(Boolean));
+ Assert.AreEqual(false, item.GetBoolean());
}
}
}
diff --git a/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/RuntimeTest.cs b/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/RuntimeTest.cs
index ff1f9589a..3ece9e0bb 100644
--- a/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/RuntimeTest.cs
+++ b/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/RuntimeTest.cs
@@ -118,7 +118,7 @@ public void Test_Platform()
Assert.AreEqual(1, result.Count);
var item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
Assert.AreEqual("NEO", item.GetString());
}
@@ -151,7 +151,7 @@ public void Test_Log()
var method = new EventHandler((s, e) => list.Add(e));
ApplicationEngine.Log += method;
- var result = _engine.ExecuteTestCaseStandard("log", new ByteString(Utility.StrictUTF8.GetBytes("LogTest")));
+ var result = _engine.ExecuteTestCaseStandard("log", new VM.Types.ByteString(Utility.StrictUTF8.GetBytes("LogTest")));
ApplicationEngine.Log -= method;
Assert.AreEqual(1, list.Count);
@@ -165,7 +165,7 @@ public void Test_CheckWitness()
{
// True
- var result = _engine.ExecuteTestCaseStandard("checkWitness", new ByteString(
+ var result = _engine.ExecuteTestCaseStandard("checkWitness", new VM.Types.ByteString(
new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }
));
Assert.AreEqual(1, result.Count);
@@ -177,7 +177,7 @@ public void Test_CheckWitness()
// False
_engine.Reset();
- result = _engine.ExecuteTestCaseStandard("checkWitness", new ByteString(
+ result = _engine.ExecuteTestCaseStandard("checkWitness", new VM.Types.ByteString(
new byte[] { 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }
));
Assert.AreEqual(1, result.Count);
@@ -194,7 +194,7 @@ public void Test_GetNotificationsCount()
_engine.SendTestNotification(UInt160.Zero, "", new VM.Types.Array(new StackItem[] { new Integer(0x01) }));
_engine.SendTestNotification(UInt160.Parse("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"), "", new VM.Types.Array(new StackItem[] { new Integer(0x02) }));
- var result = _engine.ExecuteTestCaseStandard("getNotificationsCount", new ByteString(UInt160.Parse("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF").ToArray()));
+ var result = _engine.ExecuteTestCaseStandard("getNotificationsCount", new VM.Types.ByteString(UInt160.Parse("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF").ToArray()));
Assert.AreEqual(1, result.Count);
var item = result.Pop();
@@ -217,7 +217,7 @@ public void Test_GetNotifications()
_engine.SendTestNotification(UInt160.Zero, "", new VM.Types.Array(new StackItem[] { new Integer(0x01) }));
_engine.SendTestNotification(UInt160.Parse("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"), "", new VM.Types.Array(new StackItem[] { new Integer(0x02) }));
- var result = _engine.ExecuteTestCaseStandard("getNotifications", new ByteString(UInt160.Parse("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF").ToArray()));
+ var result = _engine.ExecuteTestCaseStandard("getNotifications", new VM.Types.ByteString(UInt160.Parse("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF").ToArray()));
Assert.AreEqual(1, result.Count);
var item = result.Pop();
diff --git a/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/StorageTest.cs b/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/StorageTest.cs
index 0a8bcd1ab..7bf0b2aeb 100644
--- a/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/StorageTest.cs
+++ b/tests/Neo.SmartContract.Framework.UnitTests/Services/Neo/StorageTest.cs
@@ -12,7 +12,7 @@ public class StorageTest
{
private void Put(TestEngine testengine, string method, byte[] prefix, byte[] key, byte[] value)
{
- var result = testengine.ExecuteTestCaseStandard(method, new ByteString(key), new ByteString(value));
+ var result = testengine.ExecuteTestCaseStandard(method, key, value);
Assert.AreEqual(VM.VMState.HALT, testengine.State);
var rItem = result.Pop();
@@ -29,12 +29,12 @@ private void Put(TestEngine testengine, string method, byte[] prefix, byte[] key
private byte[] Get(TestEngine testengine, string method, byte[] prefix, byte[] key)
{
- var result = testengine.ExecuteTestCaseStandard(method, new ByteString(key));
+ var result = testengine.ExecuteTestCaseStandard(method, key);
Assert.AreEqual(VM.VMState.HALT, testengine.State);
Assert.AreEqual(1, result.Count);
var rItem = result.Pop();
- Assert.IsInstanceOfType(rItem, typeof(ByteString));
- ReadOnlySpan data = rItem as ByteString;
+ Assert.IsInstanceOfType(rItem, typeof(VM.Types.ByteString));
+ ReadOnlySpan data = rItem as VM.Types.ByteString;
Assert.AreEqual(1, testengine.Snapshot.Storages.GetChangeSet().Count(a => a.Key.Key.SequenceEqual(Concat(prefix, key))));
return data.ToArray();
@@ -42,7 +42,7 @@ private byte[] Get(TestEngine testengine, string method, byte[] prefix, byte[] k
private void Delete(TestEngine testengine, string method, byte[] prefix, byte[] key)
{
- var result = testengine.ExecuteTestCaseStandard(method, new ByteString(key));
+ var result = testengine.ExecuteTestCaseStandard(method, new VM.Types.ByteString(key));
Assert.AreEqual(VM.VMState.HALT, testengine.State);
Assert.AreEqual(0, result.Count);
Assert.AreEqual(0, testengine.Snapshot.Storages.GetChangeSet().Count(a => a.Key.Key.SequenceEqual(Concat(prefix, key))));
@@ -132,10 +132,10 @@ public void Test_LongBytes()
Assert.AreEqual(VM.VMState.HALT, testengine.State);
Assert.AreEqual(1, result.Count);
- ByteString bs = result.Pop() as ByteString;
+ VM.Types.ByteString bs = result.Pop() as VM.Types.ByteString;
var value = new byte[] { 0x3b, 0x00, 0x32, 0x03, 0x23, 0x23, 0x23, 0x23, 0x02, 0x23, 0x23, 0x02, 0x23, 0x23, 0x02, 0x23, 0x23, 0x02, 0x23, 0x23, 0x02, 0x23, 0x23, 0x02 };
- Assert.AreEqual(new ByteString(value), bs);
+ Assert.AreEqual(new VM.Types.ByteString(value), bs);
}
[TestMethod]
@@ -171,7 +171,7 @@ public void Test_ReadOnly()
// Put
testengine.Reset();
- var result = testengine.ExecuteTestCaseStandard("testPutReadOnly", new ByteString(key), new ByteString(value));
+ var result = testengine.ExecuteTestCaseStandard("testPutReadOnly", new VM.Types.ByteString(key), new VM.Types.ByteString(value));
Assert.AreEqual(VM.VMState.FAULT, testengine.State);
Assert.AreEqual(0, result.Count);
}
diff --git a/tests/Neo.SmartContract.Framework.UnitTests/Services/System/BinaryTest.cs b/tests/Neo.SmartContract.Framework.UnitTests/Services/System/BinaryTest.cs
index 82d6e7d4a..857d4fc45 100644
--- a/tests/Neo.SmartContract.Framework.UnitTests/Services/System/BinaryTest.cs
+++ b/tests/Neo.SmartContract.Framework.UnitTests/Services/System/BinaryTest.cs
@@ -41,7 +41,7 @@ public void base64DecodeTest()
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
- var item = result.Pop();
+ var item = result.Pop();
Assert.AreEqual("test", item.GetString());
}
@@ -53,7 +53,7 @@ public void base64EncodeTest()
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
- var item = result.Pop();
+ var item = result.Pop();
Assert.AreEqual("dGVzdA==", item.GetString());
}
@@ -65,7 +65,7 @@ public void base58DecodeTest()
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
- var item = result.Pop();
+ var item = result.Pop();
Assert.AreEqual("test", item.GetString());
}
@@ -77,7 +77,7 @@ public void base58EncodeTest()
Assert.AreEqual(VMState.HALT, _engine.State);
Assert.AreEqual(1, result.Count);
- var item = result.Pop();
+ var item = result.Pop();
Assert.AreEqual("3yZe7d", item.GetString());
}
}
diff --git a/tests/Neo.SmartContract.Framework.UnitTests/Services/System/ExecutionEngineTest.cs b/tests/Neo.SmartContract.Framework.UnitTests/Services/System/ExecutionEngineTest.cs
index 0ec931e09..3c4e3317a 100644
--- a/tests/Neo.SmartContract.Framework.UnitTests/Services/System/ExecutionEngineTest.cs
+++ b/tests/Neo.SmartContract.Framework.UnitTests/Services/System/ExecutionEngineTest.cs
@@ -73,7 +73,7 @@ public void EntryScriptHashTest()
Assert.AreEqual(1, result.Count);
var item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
//test by this way is bad idea? how to sure got a fix hash always?
var gothash = item.GetSpan().ToHexString();
Assert.AreEqual(scriptHash, gothash);
@@ -88,7 +88,7 @@ public void ExecutingScriptHashTest()
Assert.AreEqual(1, result.Count);
var item = result.Pop();
- Assert.IsInstanceOfType(item, typeof(ByteString));
+ Assert.IsInstanceOfType(item, typeof(VM.Types.ByteString));
//test by this way is bad idea? how to sure got a fix hash always?
var gothash = item.GetSpan().ToHexString();
Assert.AreEqual(scriptHash, gothash);
diff --git a/tests/Neo.SmartContract.Framework.UnitTests/StackItemTypeTest.cs b/tests/Neo.SmartContract.Framework.UnitTests/StackItemTypeTest.cs
index 2b3226169..978abf6c0 100644
--- a/tests/Neo.SmartContract.Framework.UnitTests/StackItemTypeTest.cs
+++ b/tests/Neo.SmartContract.Framework.UnitTests/StackItemTypeTest.cs
@@ -9,8 +9,8 @@ public class StackItemTypeTest
[TestMethod]
public void TestValues()
{
- Assert.AreEqual(((byte)StackItemType.Buffer).ToString("x2"), Helper.StackItemType_Buffer.Substring(2));
- Assert.AreEqual(((byte)StackItemType.Integer).ToString("x2"), Helper.StackItemType_Integer.Substring(2));
+ Assert.AreEqual(((byte)VM.Types.StackItemType.Buffer).ToString("x2"), StackItemType.Buffer.Substring(2));
+ Assert.AreEqual(((byte)VM.Types.StackItemType.Integer).ToString("x2"), StackItemType.Integer.Substring(2));
}
}
}
diff --git a/tests/Neo.SmartContract.Framework.UnitTests/TestClasses/Contract_Native.cs b/tests/Neo.SmartContract.Framework.UnitTests/TestClasses/Contract_Native.cs
index 89160bf63..3690e36c8 100644
--- a/tests/Neo.SmartContract.Framework.UnitTests/TestClasses/Contract_Native.cs
+++ b/tests/Neo.SmartContract.Framework.UnitTests/TestClasses/Contract_Native.cs
@@ -19,16 +19,28 @@ public static string NEO_Name()
return NEO.Name;
}
+ [DisplayName("NEO_Transfer")]
+ public static bool NEO_Transfer(byte[] from, byte[] to, BigInteger amount)
+ {
+ return NEO.Transfer(from, to, amount);
+ }
+
[DisplayName("NEO_BalanceOf")]
public static BigInteger NEO_BalanceOf(byte[] account)
{
return NEO.BalanceOf(account);
}
- [DisplayName("NEO_GetValidators")]
- public static string[] NEO_GetValidators()
+ [DisplayName("NEO_GetGasPerBlock")]
+ public static BigInteger NEO_GetGasPerBlock()
+ {
+ return NEO.GetGasPerBlock();
+ }
+
+ [DisplayName("NEO_UnclaimedGas")]
+ public static BigInteger NEO_UnclaimedGas(byte[] account, uint end)
{
- return NEO.GetValidators();
+ return NEO.UnclaimedGas(account, end);
}
[DisplayName("NEO_RegisterCandidate")]
@@ -55,29 +67,22 @@ public static string GAS_Name()
return GAS.Name;
}
+ [DisplayName("Policy_GetFeePerByte")]
public static BigInteger Policy_GetFeePerByte()
{
return Policy.GetFeePerByte();
}
- public static bool Policy_SetMaxTransactionsPerBlock(uint value)
- {
- return Policy.SetMaxTransactionsPerBlock(value);
- }
-
+ [DisplayName("Policy_GetMaxTransactionsPerBlock")]
public static uint Policy_GetMaxTransactionsPerBlock()
{
return Policy.GetMaxTransactionsPerBlock();
}
- public static bool Policy_BlockAccount(byte[] account)
- {
- return Policy.BlockAccount(account);
- }
-
- public static object[] Policy_GetBlockedAccounts()
+ [DisplayName("Policy_IsBlocked")]
+ public static object[] Policy_IsBlocked(byte[] account)
{
- return Policy.GetBlockedAccounts();
+ return Policy.IsBlocked(account);
}
}
}