internal static void CheckBalance(byte[] account, DataCache <StorageKey, StorageItem> .Trackable trackable, BigInteger balance, BigInteger height, ECPoint[] votes) { var st = (VM.Types.Struct)StackItemSerializer.Deserialize(trackable.Item.Value, 32); st.Count.Should().Be(3); st.Select(u => u.GetType()).ToArray().Should().BeEquivalentTo(new Type[] { typeof(VM.Types.Integer), typeof(VM.Types.Integer), typeof(VM.Types.ByteArray) }); // Balance st[0].GetBigInteger().Should().Be(balance); // Balance st[1].GetBigInteger().Should().Be(height); // BalanceHeight (st[2].GetSpan().AsSerializableArray <ECPoint>(Blockchain.MaxValidators)).Should().BeEquivalentTo(votes); // Votes trackable.Key.Key.Should().BeEquivalentTo(new byte[] { 20 }.Concat(account)); trackable.Item.IsConstant.Should().Be(false); }
public void TestDeserializeStackItem() { StackItem stackItem1 = new ByteArray(new byte[5]); byte[] byteArray1 = StackItemSerializer.Serialize(stackItem1, MaxItemSize); StackItem result1 = StackItemSerializer.Deserialize(byteArray1, (uint)byteArray1.Length); Assert.AreEqual(stackItem1, result1); StackItem stackItem2 = new VM.Types.Boolean(true); byte[] byteArray2 = StackItemSerializer.Serialize(stackItem2, MaxItemSize); StackItem result2 = StackItemSerializer.Deserialize(byteArray2, (uint)byteArray2.Length); Assert.AreEqual(stackItem2, result2); StackItem stackItem3 = new Integer(1); byte[] byteArray3 = StackItemSerializer.Serialize(stackItem3, MaxItemSize); StackItem result3 = StackItemSerializer.Deserialize(byteArray3, (uint)byteArray3.Length); Assert.AreEqual(stackItem3, result3); byte[] byteArray4 = StackItemSerializer.Serialize(1, MaxItemSize); byteArray4[0] = 0x40; Action action4 = () => StackItemSerializer.Deserialize(byteArray4, (uint)byteArray4.Length); action4.Should().Throw <FormatException>(); List <StackItem> list5 = new List <StackItem> { 1 }; StackItem stackItem52 = new VM.Types.Array(list5); byte[] byteArray5 = StackItemSerializer.Serialize(stackItem52, MaxItemSize); StackItem result5 = StackItemSerializer.Deserialize(byteArray5, (uint)byteArray5.Length); Assert.AreEqual(((VM.Types.Array)stackItem52).Count, ((VM.Types.Array)result5).Count); Assert.AreEqual(((VM.Types.Array)stackItem52).GetEnumerator().Current, ((VM.Types.Array)result5).GetEnumerator().Current); List <StackItem> list6 = new List <StackItem> { 1 }; StackItem stackItem62 = new Struct(list6); byte[] byteArray6 = StackItemSerializer.Serialize(stackItem62, MaxItemSize); StackItem result6 = StackItemSerializer.Deserialize(byteArray6, (uint)byteArray6.Length); Assert.AreEqual(((Struct)stackItem62).Count, ((Struct)result6).Count); Assert.AreEqual(((Struct)stackItem62).GetEnumerator().Current, ((Struct)result6).GetEnumerator().Current); Dictionary <PrimitiveType, StackItem> list7 = new Dictionary <PrimitiveType, StackItem> { [2] = 1 }; StackItem stackItem72 = new Map(list7); byte[] byteArray7 = StackItemSerializer.Serialize(stackItem72, MaxItemSize); StackItem result7 = StackItemSerializer.Deserialize(byteArray7, (uint)byteArray7.Length); Assert.AreEqual(((Map)stackItem72).Count, ((Map)result7).Count); Assert.AreEqual(((Map)stackItem72).Keys.GetEnumerator().Current, ((Map)result7).Keys.GetEnumerator().Current); Assert.AreEqual(((Map)stackItem72).Values.GetEnumerator().Current, ((Map)result7).Values.GetEnumerator().Current); }
public void FromByteArray(byte[] data) { FromStruct((Struct)StackItemSerializer.Deserialize(data, 16, 34)); }