public void TryParseTest(string file, string expectedPackageTypesFile)
        {
            var packets = ReadCapturedPackets(file, null);

            var expectedPackageTypes = !string.IsNullOrEmpty(expectedPackageTypesFile) ?
                                       GetPackageTypeList <PackageType>(expectedPackageTypesFile) :
                                       new List <PackageType>();

            var packetManager = new PPPokerPacketManager();

            var expectedCommandsIndex = 0;

            using (ShimsContext.Create())
            {
                foreach (var packet in packets)
                {
                    ShimDateTime.NowGet = () => packet.CreatedTimeStamp;

                    if (packetManager.TryParse(packet, out IList <PPPokerPackage> packages))
                    {
                        foreach (var package in packages)
                        {
                            Console.WriteLine(package.PackageType);

                            if (expectedPackageTypes.Count > 0)
                            {
                                Assert.That(package.PackageType, Is.EqualTo(expectedPackageTypes[expectedCommandsIndex++]));
                                AssertPackage(package, packet);
                            }
                        }
                    }
                }
            }
        }
        public void PacketIsStartingPacketTest(string file, bool expected)
        {
            var packetManager = new PPPokerPacketManager();

            var bytes  = ReadPacketFile(file);
            var actual = packetManager.IsStartingPacket(bytes);

            Assert.That(actual, Is.EqualTo(expected));
        }
        public void MultipleTryBuildTest(string folder)
        {
            var testFolder = Path.Combine(TestDataFolder, folder);

            DirectoryAssert.Exists(testFolder);

            var logFiles = Directory.GetFiles(testFolder, "*.txt");

            var capturedPackets = new List <CapturedPacket>();

            foreach (var logFile in logFiles)
            {
                capturedPackets.AddRange(TcpImporterTestUtils.ReadCapturedPackets(logFile, null));
            }

            capturedPackets = capturedPackets.OrderBy(x => x.CreatedTimeStamp).ToList();

            var handHistories = new List <HandHistory>();

            var packetManager    = new PPPokerPacketManager();
            var handBuilder      = new PPPHandBuilder();
            var debugPPPImporter = new DebugPPPImporter();

            foreach (var capturedPacket in capturedPackets)
            {
                if (!packetManager.TryParse(capturedPacket, out IList <PPPokerPackage> packages))
                {
                    continue;
                }

                foreach (var package in packages)
                {
                    if (!PPPImporterStub.IsAllowedPackage(package))
                    {
                        continue;
                    }

                    package.Timestamp = capturedPacket.CreatedTimeStamp;

                    debugPPPImporter.LogPackage(capturedPacket, package);

                    if (handBuilder.TryBuild(package, out HandHistory handHistory))
                    {
                        handHistories.Add(handHistory);
                        LogProvider.Log.Info($"Hand #{handHistory.HandId} has been sent. [{package.ClientPort}]");
                    }
                }
            }

            WriteHandHistoriesToFile(handHistories);

            Assert.IsTrue(handHistories.Count > 0);
        }
        public void DeserializationTest(string file, string jsonFile)
        {
            var bytes         = ReadPacketFile(file);
            var packetManager = new PPPokerPacketManager();

            var capturedPacket = new CapturedPacket
            {
                Bytes            = bytes,
                CreatedTimeStamp = DateTime.Parse("08/02/2018 12:28:28"),
                Destination      = new IPEndPoint(IPAddress.Parse("192.168.0.105"), 27633),
                Source           = new IPEndPoint(IPAddress.Parse("47.52.92.161"), 4000),
                SequenceNumber   = 1962805251
            };

            var result = packetManager.TryParse(capturedPacket, out IList <PPPokerPackage> packages);

            foreach (var package in packages)
            {
                object actual = null;

                switch (package.PackageType)
                {
                case PackageType.EnterRoomRSP:
                    actual = SerializationHelper.Deserialize <EnterRoomRSP>(package.Body);
                    break;

                case PackageType.SitDownBRC:
                    actual = SerializationHelper.Deserialize <SitDownBRC>(package.Body);
                    break;

                case PackageType.DealerInfoRSP:
                    actual = SerializationHelper.Deserialize <DealerInfoRSP>(package.Body);
                    break;

                case PackageType.ActionBRC:
                    actual = SerializationHelper.Deserialize <ActionBRC>(package.Body);
                    break;

                case PackageType.WinnerRSP:
                    actual = SerializationHelper.Deserialize <WinnerRSP>(package.Body);
                    break;
                }

                var jsonExpected = File.ReadAllText(Path.Combine(TestDataFolder, jsonFile));
                var jsonActual   = JsonConvert.SerializeObject(actual, Formatting.Indented, new StringEnumConverter());

                Assert.That(jsonActual, Is.EqualTo(jsonExpected));
            }
        }
        public void TryParsePacketTest(string file, int expected)
        {
            var bytes         = ReadPacketFile(file);
            var packetManager = new PPPokerPacketManager();

            var capturedPacket = new CapturedPacket
            {
                Bytes            = bytes,
                CreatedTimeStamp = DateTime.Parse("08/02/2018 12:28:28"),
                Destination      = new IPEndPoint(IPAddress.Parse("192.168.0.105"), 27633),
                Source           = new IPEndPoint(IPAddress.Parse("47.52.92.161"), 4000),
                SequenceNumber   = 1962805251
            };

            var result = packetManager.TryParse(capturedPacket, out IList <PPPokerPackage> actualPackages);

            Assert.IsTrue(result);
            Assert.IsNotNull(actualPackages);
            Assert.That(actualPackages.Count, Is.EqualTo(expected));
        }