Exemple #1
0
        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)));
        }
Exemple #2
0
        //[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")));
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
                    }
                }
            }
        }
Exemple #5
0
        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})"));
            }
        }
Exemple #6
0
        public void TestLogHandler(string line, int cards, int tokens)
        {
            var match = new MockMatch();

            CountCards(line, cards, tokens, match);
        }