예제 #1
0
        public static void Main(string[] args)
        {
            UI    ui             = new UI();
            Spiel spiel          = new Spiel();
            var   schiedsrichter = new Schiedsrichter();
            var   ttt            = new TicTacToe(spiel, schiedsrichter);
            var   app            = new App(ttt, ui);

            app.Run();
        }
예제 #2
0
        public void Akzeptanztest_für_1phasiges_Spiel()
        {
            var es = new InMemoryEventStore();
            es.Record("Aufschlag gewonnen", "A", "ctx");
            es.Record("Aufschlag gewonnen", "B", "ctx");
            es.Record("Aufschlag gewonnen", "A", "ctx");
            var sut = new Schiedsrichter("ctx", es);

            Assert.AreEqual("30:30", sut.Zählen(Schiedsrichter.Spieler.B));
            Assert.AreEqual("40:30", sut.Zählen(Schiedsrichter.Spieler.A));
            Assert.AreEqual("Spieler A gewinnt!", sut.Zählen(Schiedsrichter.Spieler.A));
        }
예제 #3
0
        public void Spielende_mit_Gewinn_in_Diagonale()
        {
            var sut = new Schiedsrichter();

            var spiel  = new Spiel();
            var result = Spielfortschritt.Läuft;

            spiel.Spielbrett[0, 0] = Spiel.Spielfeldzustände.O;
            spiel.Spielbrett[1, 1] = Spiel.Spielfeldzustände.O;
            spiel.Spielbrett[2, 2] = Spiel.Spielfeldzustände.O;

            sut.SpielstandBestimmen(spiel, fortschritt => result = fortschritt, _ => Assert.Fail());

            Assert.AreEqual(result, Spielfortschritt.OGewinnt);
        }
예제 #4
0
        public void Spiel_läuft_weiter_mit_Spielerwechsel()
        {
            var sut   = new Schiedsrichter();
            var spiel = new Spiel();

            var result = new Spiel();

            spiel.Spielbrett[0, 1] = Spiel.Spielfeldzustände.X;

            Assert.AreEqual(Spiel.Spieler.X, spiel.AktuellerSpieler);

            sut.SpielstandBestimmen(spiel, _ => Assert.Fail(), aktualisiertesSpiel => result = aktualisiertesSpiel);
            Assert.AreEqual(Spiel.Spieler.O, result.AktuellerSpieler);

            sut.SpielstandBestimmen(result, _ => Assert.Fail(), aktualisiertesSpiel => result = aktualisiertesSpiel);
            Assert.AreEqual(Spiel.Spieler.X, result.AktuellerSpieler);
        }
예제 #5
0
        public void Spielende_durch_Unentschieden()
        {
            var sut = new Schiedsrichter();

            var spiel  = new Spiel();
            var result = Spielfortschritt.Läuft;

            spiel.Spielbrett[0, 0] = Spiel.Spielfeldzustände.O;
            spiel.Spielbrett[0, 1] = Spiel.Spielfeldzustände.X;
            spiel.Spielbrett[0, 2] = Spiel.Spielfeldzustände.O;
            spiel.Spielbrett[1, 0] = Spiel.Spielfeldzustände.X;
            spiel.Spielbrett[1, 1] = Spiel.Spielfeldzustände.O;
            spiel.Spielbrett[1, 2] = Spiel.Spielfeldzustände.X;
            spiel.Spielbrett[2, 0] = Spiel.Spielfeldzustände.O;
            spiel.Spielbrett[2, 1] = Spiel.Spielfeldzustände.O;
            spiel.Spielbrett[2, 2] = Spiel.Spielfeldzustände.X;

            sut.SpielstandBestimmen(spiel, fortschritt => result = fortschritt, _ => Assert.Fail());

            Assert.AreEqual(result, Spielfortschritt.Unentschieden);
        }
예제 #6
0
        public void Akzeptanztest_für_2phasiges_Spiel()
        {
            const string EVENTSTORE_PATH = "kata.tennis.eventstore";

            if (Directory.Exists(EVENTSTORE_PATH)) Directory.Delete(EVENTSTORE_PATH, true);

            var sut = new Schiedsrichter(new EventStore(EVENTSTORE_PATH));

            Assert.AreEqual("15:0", sut.Zählen(Schiedsrichter.Spieler.A));
            Assert.AreEqual("30:0", sut.Zählen(Schiedsrichter.Spieler.A));
            Assert.AreEqual("30:15", sut.Zählen(Schiedsrichter.Spieler.B));
            Assert.AreEqual("40:15", sut.Zählen(Schiedsrichter.Spieler.A));
            Assert.AreEqual("40:30", sut.Zählen(Schiedsrichter.Spieler.B));
            Assert.AreEqual("Einstand!", sut.Zählen(Schiedsrichter.Spieler.B));

            Assert.AreEqual("Vorteil A!", sut.Zählen(Schiedsrichter.Spieler.A));
            Assert.AreEqual("Einstand!", sut.Zählen(Schiedsrichter.Spieler.B));
            Assert.AreEqual("Vorteil B!", sut.Zählen(Schiedsrichter.Spieler.B));
            Assert.AreEqual("Einstand!", sut.Zählen(Schiedsrichter.Spieler.A));
            Assert.AreEqual("Vorteil A!", sut.Zählen(Schiedsrichter.Spieler.A));
            Assert.AreEqual("Spieler A gewinnt!", sut.Zählen(Schiedsrichter.Spieler.A));
        }
예제 #7
0
 public TicTacToe(Spiel spiel, Schiedsrichter schiedsrichter)
 {
     _spiel          = spiel;
     _schiedsrichter = schiedsrichter;
 }