public void TryParseTest(string json, Adda52PackageType packageType) { var result = Adda52JsonPackage.TryParse(json, out Adda52JsonPackage jsonPackage); Assert.IsTrue(result); Assert.That(jsonPackage.PackageType, Is.EqualTo(packageType)); }
private IEnumerable <Adda52JsonPackage> ReadPackages(string testFolder) { var packages = new List <Adda52JsonPackage>(); var sourceJsonFile = Path.Combine(TestDataFolder, testFolder, SourceJsonFile); FileAssert.Exists(sourceJsonFile); var sourceJson = File.ReadAllText(sourceJsonFile); var testObject = JsonConvert.DeserializeObject <Adda52TestSourceObject>(sourceJson); foreach (var packet in testObject.Packages) { var json = JsonConvert.SerializeObject(packet); if (Adda52JsonPackage.TryParse(json, out Adda52JsonPackage package)) { packages.Add(package); } } return(packages); }
/// <summary> /// Processes packets in the buffer /// </summary> protected void ProcessBuffer() { var packetManager = ServiceLocator.Current.GetInstance <IPacketManager <Adda52Package> >(); var handBuilder = ServiceLocator.Current.GetInstance <IAdda52HandBuilder>(); var packetManagerFails = 0; var jsonPackageTryParseFails = 0; while (!cancellationTokenSource.IsCancellationRequested && !IsDisabled()) { try { if (!packetBuffer.TryTake(out CapturedPacket capturedPacket)) { Task.Delay(NoDataDelay).Wait(); continue; } #if DEBUG // LogPacket(capturedPacket, ".log"); #endif if (!packetManager.TryParse(capturedPacket, out IList <Adda52Package> packages)) { if (IsAdvancedLogEnabled && packetManagerFails < 10) { LogProvider.Log.Warn(this, $"Failed to parse packet: '{Convert.ToBase64String(capturedPacket.Bytes)}' [{SiteString}]"); packetManagerFails++; } continue; } foreach (var package in packages) { if (IsAdvancedLogEnabled) { LogPackage(package); } if (!Adda52JsonPackage.TryParse(package.Bytes, out Adda52JsonPackage jsonPackage)) { if (IsAdvancedLogEnabled && jsonPackageTryParseFails < 10) { LogProvider.Log.Warn(this, $"Failed to parse json from packet: '{Convert.ToBase64String(capturedPacket.Bytes)}' [{SiteString}]"); jsonPackageTryParseFails++; } continue; } if (!handBuilder.TryBuild(jsonPackage, out HandHistory handHistory)) { continue; } var handHistoryText = SerializationHelper.SerializeObject(handHistory); #if DEBUG if (!Directory.Exists("Hands")) { Directory.CreateDirectory("Hands"); } File.WriteAllText($"Hands\\adda52_hand_exported_{handHistory.HandId}.xml", handHistoryText); #endif var windowHandle = tableService.GetWindow(handHistory); var gameInfo = new GameInfo { WindowHandle = windowHandle.ToInt32(), PokerSite = Site, GameNumber = handHistory.HandId, Session = windowHandle.ToString() }; ProcessHand(handHistoryText, gameInfo); } } catch (Exception e) { LogProvider.Log.Error(this, $"Failed to process captured packet. [{SiteString}]", e); } } }