public void ReadTest(MemoryStream stream)
        {
            BinaryReader reader = new BinaryReader(stream);

            Assert.AreEqual(LEB128.ReadUInt32(reader), 0xFF00FF00u);
            Assert.AreEqual(LEB128.ReadUInt32(reader), 0xAABBAAu);
            Assert.AreEqual(LEB128.ReadUInt32(reader), 0xCCu);
            Assert.AreEqual(LEB128.ReadUInt7(reader), 0x11u);
            Assert.AreEqual(LEB128.ReadUInt7(reader), 0x7Fu);
            Assert.AreEqual(LEB128.ReadInt32(reader), 0x7F00FF00);
            Assert.AreEqual(LEB128.ReadInt32(reader), 0xAABBAA);
            Assert.AreEqual(LEB128.ReadInt32(reader), 0xCC);
            Assert.AreEqual(LEB128.ReadInt32(reader), -1);
            Assert.AreEqual(LEB128.ReadInt7(reader), 0x11);
            Assert.AreEqual(LEB128.ReadInt7(reader), -1);
        }
Exemple #2
0
            public GlobalType(BinaryReader reader)
            {
                content_type = (WebAssemblyType)LEB128.ReadUInt7(reader);

                if (!WebAssemblyHelper.IsValueType(content_type))
                {
                    throw new Exception($"File is invalid. Expected value type, received '{content_type}'.");
                }

                byte mut = LEB128.ReadUInt7(reader);

                if (mut != 0 && mut != 1)
                {
                    throw new Exception($"File is invalid. Expected 0 or 1, received '{mut}'.");
                }

                mutability = mut != 0;
            }
            public ResizeLimit(BinaryReader reader)
            {
                byte flags = LEB128.ReadUInt7(reader);

                if (flags != 0 && flags != 1)
                {
                    throw new Exception($"File is invalid. Expected 0 or 1, received '{flags}'.");
                }

                initial = LEB128.ReadUInt32(reader);
                if (flags != 0)
                {
                    maximum = LEB128.ReadUInt32(reader);
                    if (maximum < initial)
                    {
                        throw new Exception($"File is invalid. Initial memory size greater than maximum.");
                    }
                }
            }