示例#1
0
        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);
        }
示例#3
0
 public static SszContainer ToSszContainer(this VarTestContainer item)
 {
     return(new SszContainer(GetChildren(item)));
 }