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