Esempio n. 1
0
        public void ReadVectorFieldTest()
        {
            var reader = new NetBitReader(new byte[] { 0x01, 0x0B, 0xC7, 0x47, 0x8A, 0x26, 0xA7, 0xC7, 0x00, 0x80, 0x71, 0xC5 }, 96)
            {
                NetworkVersion       = NetworkVersionHistory.HISTORY_CHARACTER_MOVEMENT_NOINTERP,
                EngineNetworkVersion = EngineNetworkVersionHistory.HISTORY_CLASSNETCACHE_FULLNAME
            };

            var export = new NetFieldExport()
            {
                Handle = 0,
                Name   = "VectorField"
            };

            var group = new NetFieldExportGroup()
            {
                PathName = "group1",
                NetFieldExportsLength = 1,
                NetFieldExports       = new NetFieldExport[] { export },
                PathNameIndex         = 1
            };

            var guidCache = new NetGuidCache();
            var parser    = new NetFieldParser(guidCache, ParseMode.Full, "Unreal.Core.Test");

            var data = parser.CreateType(group.PathName);

            parser.ReadField(data, export, export.Handle, group, reader);
            Assert.True(reader.AtEnd());
            Assert.False(reader.IsError);
            Assert.Equal(-3864, ((NetFieldGroup1)data).VectorField.Z);
        }
Esempio n. 2
0
        public void ReadGuidFieldTest()
        {
            var reader = new NetBitReader(new byte[] { 0x87, 0x04 });
            var export = new NetFieldExport()
            {
                Handle = 0,
                Name   = "ItemDefinitionField"
            };

            var group = new NetFieldExportGroup()
            {
                PathName = "group1",
                NetFieldExportsLength = 1,
                NetFieldExports       = new NetFieldExport[] { export },
                PathNameIndex         = 1
            };

            var guidCache = new NetGuidCache();
            var parser    = new NetFieldParser(guidCache, ParseMode.Full, "Unreal.Core.Test");

            var data = parser.CreateType(group.PathName);

            parser.ReadField(data, export, export.Handle, group, reader);
            Assert.True(reader.AtEnd());
            Assert.False(reader.IsError);
            Assert.True(((NetFieldGroup1)data).ItemDefinitionField.IsValid());
            Assert.Equal(323u, ((NetFieldGroup1)data).ItemDefinitionField.Value);
        }
Esempio n. 3
0
        public void ReadBooleanFieldTest()
        {
            var reader = new NetBitReader(new byte[] { 0x01 }, 1);
            var export = new NetFieldExport()
            {
                Handle = 0,
                Name   = "bField"
            };
            var group = new NetFieldExportGroup()
            {
                PathName = "group1",
                NetFieldExportsLength = 1,
                NetFieldExports       = new NetFieldExport[] { export },
                PathNameIndex         = 1
            };

            var guidCache = new NetGuidCache();
            var parser    = new NetFieldParser(guidCache, ParseMode.Full, "Unreal.Core.Test");

            var data = parser.CreateType(group.PathName);

            parser.ReadField(data, export, export.Handle, group, reader);
            Assert.True(reader.AtEnd());
            Assert.False(reader.IsError);
            Assert.True(((NetFieldGroup1)data).bField);
        }
Esempio n. 4
0
        public void WillReadTypesOnFullTest()
        {
            var guidCache = new NetGuidCache();
            var parser    = new NetFieldParser(guidCache, ParseMode.Full, "Unreal.Core.Test");

            Assert.True(parser.WillReadType("group1"));
            Assert.True(parser.WillReadType("group2"));
            Assert.False(parser.WillReadType("ignore"));
        }
Esempio n. 5
0
        public void WillReadClassNetCacheOnFullTest()
        {
            var guidCache = new NetGuidCache();
            var parser    = new NetFieldParser(guidCache, ParseMode.Full, "Unreal.Core.Test");

            Assert.True(parser.WillReadClassNetCache("classnetcache1"));
            Assert.True(parser.WillReadClassNetCache("classnetcache2"));
            Assert.False(parser.WillReadClassNetCache("classnetcacheignore"));
        }
Esempio n. 6
0
        public void TryGetClassNetCachePropertyDoesNotThrowTest()
        {
            var guidCache = new NetGuidCache();
            var parser    = new NetFieldParser(guidCache, ParseMode.Full, "Unreal.Core.Test");

            var result = parser.TryGetClassNetCacheProperty("doesnotexist", "classnetcache1", out var info);

            Assert.False(result);

            result = parser.TryGetClassNetCacheProperty("doesnotexist", "classnetcache3", out info);
            Assert.False(result);
        }
Esempio n. 7
0
        public void TryGetClassNetCachePropertyTest()
        {
            var guidCache = new NetGuidCache();
            var parser    = new NetFieldParser(guidCache, ParseMode.Full, "Unreal.Core.Test");

            var result = parser.TryGetClassNetCacheProperty("DefaultRPCProperty", "classnetcache1", out var info);

            Assert.True(result);
            Assert.Equal("DefaultRPCProperty", info.Name);
            Assert.Equal("path-DefaultRPCProperty", info.PathName);
            Assert.True(info.EnablePropertyChecksum);
            Assert.False(info.IsCustomStruct);
            Assert.False(info.IsFunction);

            result = parser.TryGetClassNetCacheProperty("RPCPropertyWithChecksum", "classnetcache1", out info);
            Assert.True(result);
            Assert.Equal("RPCPropertyWithChecksum", info.Name);
            Assert.Equal("path-RPCPropertyWithChecksum", info.PathName);
            Assert.False(info.EnablePropertyChecksum);
            Assert.False(info.IsCustomStruct);
            Assert.False(info.IsFunction);

            result = parser.TryGetClassNetCacheProperty("FunctionRPCProperty", "classnetcache1", out info);
            Assert.True(result);
            Assert.Equal("FunctionRPCProperty", info.Name);
            Assert.Equal("path-FunctionRPCProperty", info.PathName);
            Assert.True(info.EnablePropertyChecksum);
            Assert.False(info.IsCustomStruct);
            Assert.True(info.IsFunction);

            result = parser.TryGetClassNetCacheProperty("CustomRPCProperty", "classnetcache1", out info);
            Assert.True(result);
            Assert.Equal("CustomRPCProperty", info.Name);
            Assert.Equal("path-CustomRPCProperty", info.PathName);
            Assert.True(info.EnablePropertyChecksum);
            Assert.True(info.IsCustomStruct);
            Assert.False(info.IsFunction);
            Assert.True(typeof(int) == info.PropertyInfo.PropertyType);
        }
Esempio n. 8
0
        public void ReadArrayFieldTest()
        {
            var reader = new NetBitReader(new byte[] {
                0x0C, 0x02, 0x6F, 0x02, 0x20, 0xD7, 0x08, 0x00, 0x04, 0x6F, 0x02, 0x20, 0xDF, 0x08, 0x00,
                0x06, 0x6F, 0x02, 0x20, 0xE7, 0x08, 0x00, 0x08, 0x6F, 0x02, 0x20, 0xEF, 0x08, 0x00, 0x0A,
                0x6F, 0x02, 0x20, 0x8F, 0x06, 0x00, 0x0C, 0x6F, 0x02, 0x20, 0xF7, 0x08, 0x00, 0x00
            }, 352)
            {
                NetworkVersion       = NetworkVersionHistory.HISTORY_CHARACTER_MOVEMENT_NOINTERP,
                EngineNetworkVersion = EngineNetworkVersionHistory.HISTORY_CLASSNETCACHE_FULLNAME
            };

            var export = new NetFieldExport()
            {
                Handle = 0,
                Name   = "ArrayField"
            };

            var group = new NetFieldExportGroup()
            {
                PathName = "group1",
                NetFieldExportsLength = 183,
                NetFieldExports       = new NetFieldExport[183],
                PathNameIndex         = 1
            };

            group.NetFieldExports[182] = export;

            var guidCache = new NetGuidCache();
            var parser    = new NetFieldParser(guidCache, ParseMode.Full, "Unreal.Core.Test");

            var data = parser.CreateType(group.PathName);

            parser.ReadField(data, export, export.Handle, group, reader);
            Assert.True(reader.AtEnd());
            Assert.False(reader.IsError);
            Assert.Equal(6, ((NetFieldGroup1)data).ArrayField.Length);
        }