forked from neo-project/neo-devpack-dotnet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUnitTest_NativeContracts.cs
159 lines (118 loc) · 5.85 KB
/
UnitTest_NativeContracts.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Neo.Network.P2P.Payloads;
using Neo.Persistence;
using Neo.SmartContract;
using Neo.SmartContract.Native;
using Neo.SmartContract.TestEngine;
using Neo.VM;
namespace Neo.Compiler.CSharp.UnitTests
{
[TestClass]
public class Contract_NativeContracts
{
private TestDataCache snapshot;
private Block genesisBlock;
[TestInitialize]
public void Test_Init()
{
snapshot = new TestDataCache();
genesisBlock = new NeoSystem(TestProtocolSettings.Default).GenesisBlock;
}
[TestMethod]
public void TestHashes()
{
Assert.AreEqual(NativeContract.StdLib.Hash.ToString(), "0xacce6fd80d44e1796aa0c2c625e9e4e0ce39efc0");
Assert.AreEqual(NativeContract.CryptoLib.Hash.ToString(), "0x726cb6e0cd8628a1350a611384688911ab75f51b");
Assert.AreEqual(NativeContract.ContractManagement.Hash.ToString(), "0xfffdc93764dbaddd97c48f252a53ea4643faa3fd");
Assert.AreEqual(NativeContract.RoleManagement.Hash.ToString(), "0x49cf4e5378ffcd4dec034fd98a174c5491e395e2");
Assert.AreEqual(NativeContract.Oracle.Hash.ToString(), "0xfe924b7cfe89ddd271abaf7210a80a7e11178758");
Assert.AreEqual(NativeContract.NEO.Hash.ToString(), "0xef4073a0f2b305a38ec4050e4d3d28bc40ea63f5");
Assert.AreEqual(NativeContract.GAS.Hash.ToString(), "0xd2a4cff31913016155e38e474a2c06d08be276cf");
Assert.AreEqual(NativeContract.Policy.Hash.ToString(), "0xcc5e4edd9f5f8dba8bb65734541df7a1c081c67b");
Assert.AreEqual(NativeContract.Ledger.Hash.ToString(), "0xda65b600f7124ce6c79950c1772a36403104f2be");
}
[TestMethod]
public void Test_Oracle()
{
var testengine = new TestEngine(TriggerType.Application, null, snapshot);
testengine.AddEntryScript(Utils.Extensions.TestContractRoot + "Contract_NativeContracts.cs");
// Minimum Response Fee
var result = testengine.ExecuteTestCaseStandard("oracleMinimumResponseFee");
Assert.AreEqual(VMState.HALT, testengine.State);
Assert.AreEqual(1, result.Count);
var entry = result.Pop();
Assert.AreEqual(0_10000000u, entry.GetInteger());
}
[TestMethod]
public void Test_Designation()
{
var testengine = new TestEngine(TriggerType.Application, null, snapshot);
testengine.AddEntryScript(Utils.Extensions.TestContractRoot + "Contract_NativeContracts.cs");
// getOracleNodes
var result = testengine.ExecuteTestCaseStandard("getOracleNodes");
Assert.AreEqual(VMState.HALT, testengine.State);
Assert.AreEqual(1, result.Count);
var entry = result.Pop();
Assert.AreEqual(0, (entry as VM.Types.Array).Count);
}
[TestMethod]
public void Test_NEO()
{
var testengine = new TestEngine(TriggerType.Application, null, snapshot);
testengine.AddEntryScript(Utils.Extensions.TestContractRoot + "Contract_NativeContracts.cs");
// NeoSymbol
var result = testengine.ExecuteTestCaseStandard("nEOSymbol");
Assert.AreEqual(VMState.HALT, testengine.State);
Assert.AreEqual(1, result.Count);
var entry = result.Pop();
Assert.AreEqual("NEO", entry.GetString());
// NeoHash
testengine.Reset();
result = testengine.ExecuteTestCaseStandard("nEOHash");
Assert.AreEqual(VMState.HALT, testengine.State);
Assert.AreEqual(1, result.Count);
entry = result.Pop();
Assert.IsTrue(entry is VM.Types.ByteString);
var hash = new UInt160((VM.Types.ByteString)entry);
Assert.AreEqual(NativeContract.NEO.Hash, hash);
}
[TestMethod]
public void Test_GAS()
{
var testengine = new TestEngine(TriggerType.Application, null, snapshot);
testengine.AddEntryScript(Utils.Extensions.TestContractRoot + "Contract_NativeContracts.cs");
var result = testengine.ExecuteTestCaseStandard("gASSymbol");
Assert.AreEqual(VMState.HALT, testengine.State);
Assert.AreEqual(1, result.Count);
var entry = result.Pop();
Assert.AreEqual("GAS", entry.GetString());
}
[TestMethod]
public void Test_Ledger()
{
var testengine = new TestEngine(TriggerType.Application, null, snapshot, persistingBlock: genesisBlock);
testengine.AddEntryScript(Utils.Extensions.TestContractRoot + "Contract_NativeContracts.cs");
var result = testengine.ExecuteTestCaseStandard("ledgerHash");
Assert.AreEqual(VMState.HALT, testengine.State);
Assert.AreEqual(1, result.Count);
var entry = result.Pop();
Assert.IsTrue(entry is VM.Types.ByteString);
var hash = new UInt160((VM.Types.ByteString)entry);
Assert.AreEqual(NativeContract.Ledger.Hash.ToString(), hash.ToString());
testengine.Reset();
result = testengine.ExecuteTestCaseStandard("ledgerCurrentIndex");
Assert.AreEqual(VMState.HALT, testengine.State);
Assert.AreEqual(1, result.Count);
entry = result.Pop();
Assert.AreEqual(0, entry.GetInteger());
testengine.Reset();
result = testengine.ExecuteTestCaseStandard("ledgerCurrentHash");
Assert.AreEqual(VMState.HALT, testengine.State);
Assert.AreEqual(1, result.Count);
entry = result.Pop();
Assert.IsTrue(entry is VM.Types.ByteString);
var blockHash = new UInt256((VM.Types.ByteString)entry);
Assert.AreEqual(genesisBlock.Hash.ToString(), blockHash.ToString());
}
}
}