public void WriteToXmlString()
        {
            var situation1 = new SituationViewModel();
            situation1.Name = "situation1";
            situation1.SituationValue = 0.5;
            situation1.Ball.X = 1;
            situation1.Ball.Y = 10;
            situation1.OwnTeam[0].States.SelectedItem = "Available";
            situation1.OwnTeam[0].X = 1;
            situation1.OwnTeam[0].Y = 10;
            situation1.OwnTeam[1].States.SelectedItem = "Penalized";
            situation1.OwnTeam[1].X = 2;
            situation1.OwnTeam[1].Y = 20;
            situation1.OwnTeam[2].States.SelectedItem = "Disabled";
            situation1.OwnTeam[2].X = 3;
            situation1.OwnTeam[2].Y = 30;
            situation1.OwnTeam[3].States.SelectedItem = "NotPlaying";
            situation1.OwnTeam[3].X = 4;
            situation1.OwnTeam[3].Y = 40;
            situation1.OwnTeam[4].States.SelectedItem = "Available";
            situation1.OwnTeam[4].X = 5;
            situation1.OwnTeam[4].Y = 50;

            situation1.Opponents[0].States.SelectedItem = "Available";
            situation1.Opponents[0].X = -1;
            situation1.Opponents[0].Y = -10;
            situation1.Opponents[1].States.SelectedItem = "Penalized";
            situation1.Opponents[1].X = -2;
            situation1.Opponents[1].Y = -20;
            situation1.Opponents[2].States.SelectedItem = "Disabled";
            situation1.Opponents[2].X = -3;
            situation1.Opponents[2].Y = -30;
            situation1.Opponents[3].States.SelectedItem = "NotPlaying";
            situation1.Opponents[3].X = -4;
            situation1.Opponents[3].Y = -40;
            situation1.Opponents[4].States.SelectedItem = "Available";
            situation1.Opponents[4].X = -5;
            situation1.Opponents[4].Y = -50;


            var situation2 = new SituationViewModel();
            situation2.Name = "situation2";
            situation2.SituationValue = -0.5;
            situation2.Ball.States.SelectedItem = "NotInGame";
            situation2.Ball.X = -10;
            situation2.Ball.Y = -100;
            situation2.OwnTeam[0].States.SelectedItem = "Available";
            situation2.OwnTeam[0].X = 1;
            situation2.OwnTeam[0].Y = 10;
            situation2.OwnTeam[1].States.SelectedItem = "Penalized";
            situation2.OwnTeam[1].X = 2;
            situation2.OwnTeam[1].Y = 20;
            situation2.OwnTeam[2].States.SelectedItem = "Disabled";
            situation2.OwnTeam[2].X = 3;
            situation2.OwnTeam[2].Y = 30;
            situation2.OwnTeam[3].States.SelectedItem = "NotPlaying";
            situation2.OwnTeam[3].X = 4;
            situation2.OwnTeam[3].Y = 40;
            situation2.OwnTeam[4].States.SelectedItem = "Available";
            situation2.OwnTeam[4].X = 5;
            situation2.OwnTeam[4].Y = 50;

            situation2.Opponents[0].States.SelectedItem = "Available";
            situation2.Opponents[0].X = -1;
            situation2.Opponents[0].Y = -10;
            situation2.Opponents[1].States.SelectedItem = "Penalized";
            situation2.Opponents[1].X = -2;
            situation2.Opponents[1].Y = -20;
            situation2.Opponents[2].States.SelectedItem = "Disabled";
            situation2.Opponents[2].X = -3;
            situation2.Opponents[2].Y = -30;
            situation2.Opponents[3].States.SelectedItem = "NotPlaying";
            situation2.Opponents[3].X = -4;
            situation2.Opponents[3].Y = -40;
            situation2.Opponents[4].States.SelectedItem = "Available";
            situation2.Opponents[4].X = -5;
            situation2.Opponents[4].Y = -50;


            var sut = new ConfigReaderWriter();

            var result = sut.SituationToString(new[] {situation1, situation2});


            var expected = @"<?xml version=""1.0""?>
<situations>
    <situation name=""situation1"" value=""0,5"">
        <ball state=""InGame"" x=""1"" y=""10""/>
        <team>
            <player id=""1"" state=""Available"" x=""1"" y=""10""/>
            <player id=""2"" state=""Penalized"" x=""2"" y=""20""/>
            <player id=""3"" state=""Disabled"" x=""3"" y=""30""/>
            <player id=""4"" state=""NotPlaying"" x=""4"" y=""40""/>
            <player id=""5"" state=""Available"" x=""5"" y=""50""/>
        </team>
        <opponents>
            <player id=""1"" state=""Available"" x=""-1"" y=""-10""/>
            <player id=""2"" state=""Penalized"" x=""-2"" y=""-20""/>
            <player id=""3"" state=""Disabled"" x=""-3"" y=""-30""/>
            <player id=""4"" state=""NotPlaying"" x=""-4"" y=""-40""/>
            <player id=""5"" state=""Available"" x=""-5"" y=""-50""/>
        </opponents>
    </situation>
    <situation name=""situation2"" value=""-0,5"">
        <ball state=""NotInGame"" x=""-10"" y=""-100""/>
        <team>
            <player id=""1"" state=""Available"" x=""1"" y=""10""/>
            <player id=""2"" state=""Penalized"" x=""2"" y=""20""/>
            <player id=""3"" state=""Disabled"" x=""3"" y=""30""/>
            <player id=""4"" state=""NotPlaying"" x=""4"" y=""40""/>
            <player id=""5"" state=""Available"" x=""5"" y=""50""/>
        </team>
        <opponents>
            <player id=""1"" state=""Available"" x=""-1"" y=""-10""/>
            <player id=""2"" state=""Penalized"" x=""-2"" y=""-20""/>
            <player id=""3"" state=""Disabled"" x=""-3"" y=""-30""/>
            <player id=""4"" state=""NotPlaying"" x=""-4"" y=""-40""/>
            <player id=""5"" state=""Available"" x=""-5"" y=""-50""/>
        </opponents>
    </situation>
</situations>";

            Assert.AreEqual(expected, result);
        }
        public void ReadFromXmlString()
        {
            var content = @"<?xml version=""1.0""?>
<situations>
    <situation name=""situation1"" value=""0,5"">
        <ball state=""InGame"" x=""1"" y=""10""/>
        <team>
            <player id=""1"" state=""Available""    x=""1"" y=""10""/>
            <player id=""2"" state=""Penalized""  x=""2"" y=""20""/>
            <player id=""3"" state=""Disabled""   x=""3"" y=""30""/>
            <player id=""4"" state=""NotPlaying"" x=""4"" y=""40""/>
            <player id=""5"" state=""Available""    x=""5"" y=""50""/>
        </team>
        <opponents>
            <player id=""1"" state=""Available""    x=""-1"" y=""-10""/>
            <player id=""2"" state=""Penalized""  x=""-2"" y=""-20""/>
            <player id=""3"" state=""Disabled""   x=""-3"" y=""-30""/>
            <player id=""4"" state=""NotPlaying"" x=""-4"" y=""-40""/>
            <player id=""5"" state=""Available""    x=""-5"" y=""-50""/>
        </opponents>
    </situation>
    <situation name=""situation2"" value=""-0,5"">
        <ball state=""NotInGame"" x=""-10"" y=""-100""/>
        <team>
            <player id=""1"" state=""Available""    x=""1"" y=""10""/>
            <player id=""2"" state=""Penalized""  x=""2"" y=""20""/>
            <player id=""3"" state=""Disabled""   x=""3"" y=""30""/>
            <player id=""4"" state=""NotPlaying"" x=""4"" y=""40""/>
            <player id=""5"" state=""Available""    x=""5"" y=""50""/>
        </team>
        <opponents>
            <player id=""1"" state=""Available""    x=""-1"" y=""-10""/>
            <player id=""2"" state=""Penalized""  x=""-2"" y=""-20""/>
            <player id=""3"" state=""Disabled""   x=""-3"" y=""-30""/>
            <player id=""4"" state=""NotPlaying"" x=""-4"" y=""-40""/>
            <player id=""5"" state=""Available""    x=""-5"" y=""-50""/>
        </opponents>
    </situation>
</situations>";

            var sut = new ConfigReaderWriter();

            var result = sut.StringToSituations(content);


            Assert.AreEqual(2, result.Count);

            Assert.AreEqual("situation1", result[0].Name);
            Assert.AreEqual(0.5, result[0].SituationValue, 0.00000000001);
            Assert.AreEqual("InGame", result[0].Ball.States.SelectedItem);
            Assert.AreEqual(1, result[0].Ball.X, 0.00000000001);
            Assert.AreEqual(10, result[0].Ball.Y, 0.00000000001);
            Assert.AreEqual(5, result[0].OwnTeam.Count);

            assertPlayer(1, "Available",    1, 10, result[0].OwnTeam[0]);
            assertPlayer(2, "Penalized",  2, 20, result[0].OwnTeam[1]);
            assertPlayer(3, "Disabled",   3, 30, result[0].OwnTeam[2]);
            assertPlayer(4, "NotPlaying", 4, 40, result[0].OwnTeam[3]);
            assertPlayer(5, "Available",    5, 50, result[0].OwnTeam[4]);

            assertPlayer(1, "Available",    -1, -10, result[0].Opponents[0]);
            assertPlayer(2, "Penalized",  -2, -20, result[0].Opponents[1]);
            assertPlayer(3, "Disabled",   -3, -30, result[0].Opponents[2]);
            assertPlayer(4, "NotPlaying", -4, -40, result[0].Opponents[3]);
            assertPlayer(5, "Available",    -5, -50, result[0].Opponents[4]);


            Assert.AreEqual("situation2", result[1].Name);
            Assert.AreEqual(-0.5, result[1].SituationValue, 0.00000000001);
            Assert.AreEqual("NotInGame", result[1].Ball.States.SelectedItem);
            Assert.AreEqual(-10, result[1].Ball.X, 0.00000000001);
            Assert.AreEqual(-100, result[1].Ball.Y, 0.00000000001);
            Assert.AreEqual(5, result[1].OwnTeam.Count);

            assertPlayer(1, "Available",    1, 10, result[1].OwnTeam[0]);
            assertPlayer(2, "Penalized",  2, 20, result[1].OwnTeam[1]);
            assertPlayer(3, "Disabled",   3, 30, result[1].OwnTeam[2]);
            assertPlayer(4, "NotPlaying", 4, 40, result[1].OwnTeam[3]);
            assertPlayer(5, "Available",    5, 50, result[1].OwnTeam[4]);

            assertPlayer(1, "Available",    -1, -10, result[1].Opponents[0]);
            assertPlayer(2, "Penalized",  -2, -20, result[1].Opponents[1]);
            assertPlayer(3, "Disabled",   -3, -30, result[1].Opponents[2]);
            assertPlayer(4, "NotPlaying", -4, -40, result[1].Opponents[3]);
            assertPlayer(5, "Available",    -5, -50, result[1].Opponents[4]);
        }