public void TestPDIllegal() { var match = new MockMatch(); var checker = match.Observers.OfType <PennyDreadfulLegality>().Single(); Assert.IsNotNull(checker.HandleLine(new GameLogLine("[Black Lotus] is never going to be 0.01 TIX.", match))); Assert.IsNull(checker.HandleLine(new GameLogLine("[Black Lotus] is never going to be 0.01 TIX.", match))); }
//[Test] public void TestAccents() { var match = new MockMatch(); var legality = new PennyDreadfulLegality(); Assert.IsTrue(legality.IsCardLegal(CardName.FixAccents("Dandan"))); //Assert.IsTrue(legality.IsCardLegal(CardName.FixAccents("Junún Efreet"))); Assert.IsTrue(legality.IsCardLegal(CardName.FixAccents("DandAþn"))); Assert.IsFalse(legality.IsCardLegal(CardName.FixAccents("Lim-dl"))); }
public void TestSparkSpitter() { // This test checks that creatures that are created by the Sparkspitter/Llanowar Mentor cycle are cards until proven to be tokens. var match = new MockMatch(); CountCards("TheFancyMusterd is being attacked by [Spark Elemental] and [Fusion Elemental].", 2, 0, match); CountCards("WookieeGT activates an ability of[Sparkspitter](Create a 3 / 1 red Elemental creature token named Spark Elemental.It has trample, haste, and 'At t...).", 1, 0, match); CountCards("WookieeGT's [Sparkspitter] creates a Spark Elemental.", 1, 0, match); CountCards("TheFancyMusterd is being attacked by [Spark Elemental] and [Fusion Elemental].", 1, 1, match); }
public void TestLog(MockMatch match, string[] expectedObservers, string[] lines) { var foundObservers = match.Observers.Select(o => o.GetType().Name).ToArray(); foreach (var observer in expectedObservers) { Assert.Contains(observer.Trim(), foundObservers); } var GameHeader = new Regex(@"== Game (?<n>[0-9]) \((?<gameId>[0-9]+)\) =="); var gameID = 0; var gameNum = 0; for (int i = 0; i < lines.Length; i++) { var input = lines[i]; Match rxmatch; if (input.StartsWith("[CHAT]")) { continue; } else if ((rxmatch = GameHeader.Match(input)).Success) { int.TryParse(rxmatch.Groups["gameId"].Value, out gameID); Assert.AreEqual(++gameNum, int.Parse(rxmatch.Groups["n"].Value), "Game Number was not as expected"); } else if (input.StartsWith("Winner:")) { var winner = input.Split(':')[1].TrimStart(); match.Winners.Add(gameID, winner); // This is where we'd invoke observer[].ProcessWinner // But I don't trust the LeagueObserver not to submit results. } else if (input.StartsWith("Match Winner:")) { var parts = input.Split(':'); match.Winners.GetRecordData(out var winner, out var record); Assert.AreEqual(winner.Player, parts[1].Trim()); Assert.AreEqual(record, parts[2].Trim()); } else { var gameLogLine = new PDBot.Core.Data.GameLogLine(input, match); foreach (var item in match.Observers) { var output = item.HandleLine(gameLogLine); } } } }
public static IEnumerable <TestCaseData> Logs() { var folder = new FileInfo(typeof(FunctionalTest).Assembly.Location).Directory; folder = folder.Parent.Parent.EnumerateDirectories(LogDirectory).FirstOrDefault(); foreach (var logfile in folder.EnumerateFiles("*.txt")) { var lines = File.ReadAllLines(logfile.FullName); var format = (MagicFormat)Enum.Parse(typeof(MagicFormat), lines[0]); var comment = lines[1]; var observers = lines[2].Split(','); var players = lines[3].Split(','); lines = lines.SkipWhile(l => !string.IsNullOrWhiteSpace(l)).ToArray(); // Skip all the headers. var match = new MockMatch(comment, players, format); yield return(new TestCaseData(match, observers, lines).SetName($"TestLog({logfile.Name})")); } }
public void TestLogHandler(string line, int cards, int tokens) { var match = new MockMatch(); CountCards(line, cards, tokens, match); }