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); }
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); }