public void Deserialize_Basic_Log_Success() { var network = new SmartContractsPoATest(); var primitiveSerializer = new ContractPrimitiveSerializer(network); var testStruct = new TestLog { Id = uint.MaxValue, Name = "Test ID", Data = 0xAA, Datas = new byte[] { 0xBB, 0xCC, 0xDD }, Truth = true, Address = "0x0000000000000000000000000000000000000001".HexToAddress() }; var testBytes = primitiveSerializer.Serialize(testStruct); var serializer = new ApiLogDeserializer(primitiveSerializer, network); dynamic deserializedLog = serializer.DeserializeLogData(testBytes, typeof(TestLog)); Assert.Equal(testStruct.Id, deserializedLog.Id); Assert.Equal(testStruct.Name, deserializedLog.Name); Assert.Equal(testStruct.Data, deserializedLog.Data); Assert.True(testStruct.Datas.SequenceEqual((byte[])deserializedLog.Datas)); Assert.Equal(testStruct.Truth, deserializedLog.Truth); Assert.Equal(testStruct.Address.ToUint160().ToBase58Address(network), deserializedLog.Address); }
private List <LogResponse> MapLogResponses(Receipt receipt, Assembly assembly, ApiLogDeserializer deserializer) { var logResponses = new List <LogResponse>(); foreach (Log log in receipt.Logs) { var logResponse = new LogResponse(log, this.network); logResponses.Add(logResponse); if (log.Topics.Count == 0) { continue; } // Get receipt struct name string eventTypeName = Encoding.UTF8.GetString(log.Topics[0]); // Find the type in the module def Type eventType = assembly.DefinedTypes.FirstOrDefault(t => t.Name == eventTypeName); if (eventType == null) { // Couldn't match the type, continue? continue; } // Deserialize it dynamic deserialized = deserializer.DeserializeLogData(log.Data, eventType); logResponse.Log = deserialized; } return(logResponses); }
public void Deserialize_Basic_Log_Success() { var network = new SmartContractsRegTest(); var primitiveSerializer = new ContractPrimitiveSerializer(network); var testStruct = new TestLog { Id = uint.MaxValue, Name = "Test ID", Data = 0xAA, Datas = new byte[] { 0xBB, 0xCC, 0xDD }, Truth = true, Address = "0x0000000000000000000000000000000000000001".HexToAddress(), Value128 = 123, Value256 = 456 }; var testBytes = primitiveSerializer.Serialize(testStruct); var serializer = new ApiLogDeserializer(primitiveSerializer, network, Mock.Of <IStateRepositoryRoot>(), Mock.Of <IContractAssemblyCache>()); dynamic deserializedLog = serializer.DeserializeLogData(testBytes, typeof(TestLog)); Assert.Equal(testStruct.Id, deserializedLog.Id); Assert.Equal(testStruct.Name, deserializedLog.Name); Assert.Equal(testStruct.Data, deserializedLog.Data); Assert.True(testStruct.Datas.SequenceEqual((byte[])deserializedLog.Datas)); Assert.Equal(testStruct.Truth, deserializedLog.Truth); Assert.Equal(testStruct.Address.ToUint160().ToBase58Address(network), deserializedLog.Address); Assert.Equal(testStruct.Value128.ToString(), deserializedLog.Value128.ToString()); Assert.Equal(testStruct.Value256.ToString(), deserializedLog.Value256.ToString()); }