File tree Expand file tree Collapse file tree 3 files changed +25
-10
lines changed
Expand file tree Collapse file tree 3 files changed +25
-10
lines changed Original file line number Diff line number Diff line change @@ -18,7 +18,7 @@ $(EXECUTABLE): $(ALLFILES)
1818 ${LD} obj/* .o $(LDFLAGS ) -o $(EXECUTABLE )
1919
2020.PHONY : tests
21- tests :
21+ tests : $( EXECUTABLE )
2222 cd UnitTest++ && $(MAKE ) libUnitTest++.a
2323 cd tests && $(MAKE )
2424
Original file line number Diff line number Diff line change @@ -60,15 +60,16 @@ GameBoard::GameBoard(istream& in) {
6060 }
6161
6262 auto playerElements = doc.RootElement ()->FirstChildElement (" players" );
63-
64- for (auto playerElement = playerElements->FirstChildElement (); playerElement; playerElement = playerElement->NextSiblingElement ()) {
65- unique_ptr<Player> player (new Player (playerElement->FirstChildElement (" name" )->FirstChild ()->Value ()));
66- player->setWood (fromString<int >(playerElement->FirstChildElement (" wood" )->FirstChild ()->Value ()));
67- player->setBrick (fromString<int >(playerElement->FirstChildElement (" brick" )->FirstChild ()->Value ()));
68- player->setOre (fromString<int >(playerElement->FirstChildElement (" ore" )->FirstChild ()->Value ()));
69- player->setWheat (fromString<int >(playerElement->FirstChildElement (" wheat" )->FirstChild ()->Value ()));
70- player->setWool (fromString<int >(playerElement->FirstChildElement (" wool" )->FirstChild ()->Value ()));
71- players.emplace_back (std::move (player));
63+ if (playerElements) {
64+ for (auto playerElement = playerElements->FirstChildElement (); playerElement; playerElement = playerElement->NextSiblingElement ()) {
65+ unique_ptr<Player> player (new Player (playerElement->FirstChildElement (" name" )->FirstChild ()->Value ()));
66+ player->setWood (fromString<int >(playerElement->FirstChildElement (" wood" )->FirstChild ()->Value ()));
67+ player->setBrick (fromString<int >(playerElement->FirstChildElement (" brick" )->FirstChild ()->Value ()));
68+ player->setOre (fromString<int >(playerElement->FirstChildElement (" ore" )->FirstChild ()->Value ()));
69+ player->setWheat (fromString<int >(playerElement->FirstChildElement (" wheat" )->FirstChild ()->Value ()));
70+ player->setWool (fromString<int >(playerElement->FirstChildElement (" wool" )->FirstChild ()->Value ()));
71+ players.emplace_back (std::move (player));
72+ }
7273 }
7374}
7475
Original file line number Diff line number Diff line change @@ -17,7 +17,21 @@ using std::stringstream;
1717
1818TEST (emptyBoardSerialization) {
1919 vector<unique_ptr<Player>> players;
20+
21+ GameBoard testBoard (std::move (players));
22+
23+ stringstream stream;
24+ testBoard.save (stream);
25+
26+ GameBoard copyBoard (stream);
27+
28+ CHECK (testBoard == copyBoard);
29+ }
30+
31+ TEST (multiplePlayerSerialization) {
32+ vector<unique_ptr<Player>> players;
2033 players.emplace_back (unique_ptr<Player>(new Player (" test" )));
34+ players.emplace_back (unique_ptr<Player>(new Player (" test2" )));
2135
2236 GameBoard testBoard (std::move (players));
2337
You can’t perform that action at this time.
0 commit comments