示例#1
0
        public void FullTest()
        {
            // load a real jsm file from the game
            var jsmFile = File.ReadAllBytes(@"TestData\gggate4.jsm");
            var script  = FieldScript.FromBytes(jsmFile);

            // 3 entities, all "other" type
            Assert.Equal(3, script.Entities.Count);
            Assert.Equal(3, script.Entities.Where(e => e.Type == EntityType.Other).Count());

            // 4 scripts each
            Assert.Equal(4, script.Entities[0].Scripts.Count);
            Assert.Equal(4, script.Entities[1].Scripts.Count);
            Assert.Equal(4, script.Entities[2].Scripts.Count);

            // spot check some scripts & instructions
            Assert.Equal(8, script.Entities[0].Scripts[0].Instructions.Count);
            Assert.Equal(3, script.Entities[1].Scripts[1].Instructions.Count);
            Assert.Equal(15, script.Entities[2].Scripts[1].Instructions.Count);
            Assert.Equal(5, script.Entities[1].Scripts[2].Instructions[0].OpCode);
            Assert.Equal(6, script.Entities[1].Scripts[2].Instructions[0].Param);
            Assert.Equal(6, script.Entities[1].Scripts[2].Instructions[1].OpCode);
            Assert.Equal(8, script.Entities[1].Scripts[2].Instructions[1].Param);

            // re-encode & run the same tests again
            script = FieldScript.FromBytes(script.Encode());

            Assert.Equal(3, script.Entities.Count);
            Assert.Equal(3, script.Entities.Where(e => e.Type == EntityType.Other).Count());

            Assert.Equal(4, script.Entities[0].Scripts.Count);
            Assert.Equal(4, script.Entities[1].Scripts.Count);
            Assert.Equal(4, script.Entities[2].Scripts.Count);

            Assert.Equal(8, script.Entities[0].Scripts[0].Instructions.Count);
            Assert.Equal(3, script.Entities[1].Scripts[1].Instructions.Count);
            Assert.Equal(15, script.Entities[2].Scripts[1].Instructions.Count);
            Assert.Equal(5, script.Entities[1].Scripts[2].Instructions[0].OpCode);
            Assert.Equal(6, script.Entities[1].Scripts[2].Instructions[0].Param);
            Assert.Equal(6, script.Entities[1].Scripts[2].Instructions[1].OpCode);
            Assert.Equal(8, script.Entities[1].Scripts[2].Instructions[1].Param);
        }
示例#2
0
        public void FullTest2()
        {
            // load a real jsm file from the game
            var jsmFile = File.ReadAllBytes(@"TestData\bdifrit1.jsm");
            var script  = FieldScript.FromBytes(jsmFile);

            // 16 entities with all the correct scripts
            Assert.Equal(16, script.Entities.Count);
            Assert.Single(script.Entities.Where(e => e.Type == EntityType.Line).ToList());
            Assert.Empty(script.Entities.Where(e => e.Type == EntityType.Door).ToList());
            Assert.Equal(4, script.Entities.Where(e => e.Type == EntityType.Background).Count());
            Assert.Equal(11, script.Entities.Where(e => e.Type == EntityType.Other).Count());

            Assert.Equal(8, script.Entities[0].Scripts.Count);
            Assert.Equal(44, script.Entities[0].Scripts[0].Instructions[0].Param);
            Assert.Equal(2, script.Entities[1].Scripts.Count);
            Assert.Equal(56, script.Entities[1].Scripts[0].Instructions[0].Param);
            Assert.Equal(4, script.Entities[15].Scripts.Count);
            Assert.Equal(52, script.Entities[15].Scripts[0].Instructions[0].Param);

            // re-encode & run the same tests again
            script = FieldScript.FromBytes(script.Encode());

            Assert.Equal(16, script.Entities.Count);
            Assert.Single(script.Entities.Where(e => e.Type == EntityType.Line).ToList());
            Assert.Empty(script.Entities.Where(e => e.Type == EntityType.Door).ToList());
            Assert.Equal(4, script.Entities.Where(e => e.Type == EntityType.Background).Count());
            Assert.Equal(11, script.Entities.Where(e => e.Type == EntityType.Other).Count());

            Assert.Equal(8, script.Entities[0].Scripts.Count);
            Assert.Equal(44, script.Entities[0].Scripts[0].Instructions[0].Param);
            Assert.Equal(2, script.Entities[1].Scripts.Count);
            Assert.Equal(56, script.Entities[1].Scripts[0].Instructions[0].Param);
            Assert.Equal(4, script.Entities[15].Scripts.Count);
            Assert.Equal(52, script.Entities[15].Scripts[0].Instructions[0].Param);
        }