Esempio n. 1
0
        public static ClipActionRecord ReadClipActionRecord(this ISwfStreamReader reader, byte swfVersion)
        {
            var record = new ClipActionRecord();

            record.Flags = reader.ReadClipEventFlags(swfVersion);
            if (record.Flags.IsEmpty)
            {
                return(record);
            }

            var offset = reader.ReadUInt32();

            if (record.Flags.ClipEventKeyPress)
            {
                record.KeyCode = reader.ReadByte();
            }

            ActionBase action;
            var        ar = new ActionReader(reader);

            do
            {
                action = ar.ReadAction();
                record.Actions.Add(action);
            } while (!(action is ActionEnd));

            return(record);
        }
Esempio n. 2
0
        public void Sanity()
        {
            Mock <MovementDisplayNamesResolver> movementDisplayNamesResolver = new Mock <MovementDisplayNamesResolver>(MockBehavior.Strict, new object[] { null });
            Mock <LegalMovesCalculator>         legalMovesCalculator         = new Mock <LegalMovesCalculator>();
            Mock <IO.IO> io               = new Mock <IO.IO>();
            string       endGameSymbol    = RandomString(100);
            string       newGameSymbol    = RandomString(100);
            string       movements        = RandomString(100);
            string       expectedResponse = RandomString(100);
            ActionReader actionReader     = new ActionReader(newGameSymbol, endGameSymbol, movementDisplayNamesResolver.Object,
                                                             legalMovesCalculator.Object, io.Object);

            legalMovesCalculator.Setup(lmc => lmc.GetLegalMoves(It.IsAny <Board>())).Returns(new List <Movement>());
            movementDisplayNamesResolver.Setup(mdnr => mdnr.Render(It.IsAny <List <Movement> >())).Returns(movements);
            io.Setup(o =>
                     o.Read(Match.Create <string>(msg =>
                                                  msg.Contains(endGameSymbol) &&
                                                  msg.Contains(newGameSymbol) &&
                                                  msg.Contains(movements))))
            .Returns(expectedResponse);

            string response = actionReader.ReadAction(new Board());

            Assert.Equal(expectedResponse, response);
        }
Esempio n. 3
0
        public static ButtonCondition ReadButtonCondition(this ISwfStreamReader reader)
        {
            var res = new ButtonCondition {
                IdleToOverDown    = reader.ReadBit(),
                OutDownToIdle     = reader.ReadBit(),
                OutDownToOverDown = reader.ReadBit(),
                OverDownToOutDown = reader.ReadBit(),
                OverDownToOverUp  = reader.ReadBit(),
                OverUpToOverDown  = reader.ReadBit(),
                OverUpToIdle      = reader.ReadBit(),
                IdleToOverUp      = reader.ReadBit(),
                KeyPress          = (byte)reader.ReadUnsignedBits(7),
                OverDownToIdle    = reader.ReadBit()
            };

            var        ar = new ActionReader(reader);
            ActionBase action;

            do
            {
                action = ar.ReadAction();
                res.Actions.Add(action);
            } while (!(action is ActionEnd));
            return(res);
        }
Esempio n. 4
0
        SwfTagBase ISwfTagVisitor <ISwfStreamReader, SwfTagBase> .Visit(DoActionTag tag, ISwfStreamReader reader)
        {
            var        actionReader = new ActionReader(reader);
            ActionBase action;

            do
            {
                action = actionReader.ReadAction();
                tag.ActionRecords.Add(action);
            } while (!(action is ActionEnd));
            return(tag);
        }
Esempio n. 5
0
        protected T ReadAction <T>(byte[] source) where T : ActionBase
        {
            var mem = new MemoryStream();

            mem.Write(source, 0, source.Length);
            mem.Seek(0, SeekOrigin.Begin);
            var reader       = new SwfStreamReader(mem);
            var actionReader = new ActionReader(reader);
            var action       = actionReader.ReadAction();

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of stream");
            return((T)action);
        }
Esempio n. 6
0
 public void ReadOneByteActionsTest()
 {
     var vals = Enum.GetValues(typeof(ActionCode));
     foreach (ActionCode type in vals) {
         if ((byte)type < 0x80) {
             var mem = new MemoryStream();
             mem.WriteByte((byte)type);
             mem.Seek(0, SeekOrigin.Begin);
             var reader = new SwfStreamReader(mem);
             var actionReader = new ActionReader(reader);
             var action = actionReader.ReadAction();
             Assert.IsNotNull(action);
             var actualType = action.ActionCode;
             Assert.AreEqual(type, actualType);
             Assert.AreEqual(1, mem.Position);
         }
     }
 }
Esempio n. 7
0
        public static ClipActionRecord ReadClipActionRecord(this ISwfStreamReader reader, byte swfVersion)
        {
            var record = new ClipActionRecord();
            record.Flags = reader.ReadClipEventFlags(swfVersion);
            if (record.Flags.IsEmpty) return record;

            var offset = reader.ReadUInt32();
            if (record.Flags.ClipEventKeyPress) {
                record.KeyCode = reader.ReadByte();
            }

            ActionBase action;
            var ar = new ActionReader(reader);
            do {
                action = ar.ReadAction();
                record.Actions.Add(action);
            } while (!(action is ActionEnd));

            return record;
        }
Esempio n. 8
0
        public void ReadOneByteActionsTest()
        {
            var vals = Enum.GetValues(typeof(ActionCode));

            foreach (ActionCode type in vals)
            {
                if ((byte)type < 0x80)
                {
                    var mem = new MemoryStream();
                    mem.WriteByte((byte)type);
                    mem.Seek(0, SeekOrigin.Begin);
                    var reader       = new SwfStreamReader(mem);
                    var actionReader = new ActionReader(reader);
                    var action       = actionReader.ReadAction();
                    Assert.IsNotNull(action);
                    var actualType = action.ActionCode;
                    Assert.AreEqual(type, actualType);
                    Assert.AreEqual(1, mem.Position);
                }
            }
        }
Esempio n. 9
0
        public static ButtonCondition ReadButtonCondition(this ISwfStreamReader reader)
        {
            var res = new ButtonCondition {
                IdleToOverDown = reader.ReadBit(),
                OutDownToIdle = reader.ReadBit(),
                OutDownToOverDown = reader.ReadBit(),
                OverDownToOutDown = reader.ReadBit(),
                OverDownToOverUp = reader.ReadBit(),
                OverUpToOverDown = reader.ReadBit(),
                OverUpToIdle = reader.ReadBit(),
                IdleToOverUp = reader.ReadBit(),
                KeyPress = (byte)reader.ReadUnsignedBits(7),
                OverDownToIdle = reader.ReadBit()
            };

            var ar = new ActionReader(reader);
            ActionBase action;
            do {
                action = ar.ReadAction();
                res.Actions.Add(action);
            } while (!(action is ActionEnd));
            return res;
        }