private static IEnumerable <SszElement> GetChildren(VarTestContainer item) { yield return(new SszBasicElement(item.A)); yield return(new SszBasicList(item.B.ToArray(), limit: 1024)); yield return(new SszBasicElement(item.C)); }
public void VarContainer_Some() { // Arrange var container = new VarTestContainer() { A = 0xabcd, B = new ushort[] { 1, 2, 3 }, C = 0xff }; var tree = new SszTree(container.ToSszContainer()); // Act var bytes = tree.Serialize(); var hashTreeRoot = tree.HashTreeRoot(); // Assert var expectedByteString = "cdab07000000ff010002000300"; var byteString = BitConverter.ToString(bytes.ToArray()).Replace("-", "").ToLowerInvariant(); byteString.ShouldBe(expectedByteString); var expectedHashTreeRoot = Hash( Hash( Chunk(new byte[] { 0xcd, 0xab }), Hash( Merge( Chunk(new byte[] { 0x01, 0x00, 0x02, 0x00, 0x03, 0x00 }), ZeroHashes(0, 6) ), Chunk(new byte[] { 0x03, 0x00, 0x00, 0x00 }) // Length mix in ) ), Hash(Chunk(new byte[] { 0xff }), Chunk(new byte[] { })) ); var expectedHashTreeRootString = BitConverter.ToString(expectedHashTreeRoot).Replace("-", "").ToLowerInvariant(); var hashTreeRootString = BitConverter.ToString(hashTreeRoot.ToArray()).Replace("-", "").ToLowerInvariant(); hashTreeRootString.ShouldBe(expectedHashTreeRootString); }
public static SszContainer ToSszContainer(this VarTestContainer item) { return(new SszContainer(GetChildren(item))); }