#include "catch.hpp"
#include <sstream>
#include "NetworkProtocolHelper.h"
TEST_CASE("parse message")
{
std::wstring type = L"setActiveToken";
std::wstring divider = L">>";
std::wstring filePath = L"C:/Users/Manuel/important/file/location/fileName.cpp";
std::wstring endOfMessageToken = L"<EOM>";
int row = 1;
int column = 2;
std::wstringstream message;
message << type << divider << filePath << divider << row << divider << column
<< endOfMessageToken;
NetworkProtocolHelper::SetActiveTokenMessage networkMessage =
NetworkProtocolHelper::parseSetActiveTokenMessage(message.str());
REQUIRE(networkMessage.filePath.wstr() == filePath);
REQUIRE(networkMessage.row == row);
REQUIRE(networkMessage.column == column);
REQUIRE(networkMessage.valid == true);
message.str(L"");
message << L"foo" << divider << filePath << divider << row << divider << column
<< endOfMessageToken;
networkMessage = NetworkProtocolHelper::parseSetActiveTokenMessage(message.str());
REQUIRE(networkMessage.filePath.wstr() == L"");
REQUIRE(networkMessage.row == 0);
REQUIRE(networkMessage.column == 0);
REQUIRE(networkMessage.valid == false);
message.str(L"");
message << type << divider << filePath << row << divider << column << endOfMessageToken;
networkMessage = NetworkProtocolHelper::parseSetActiveTokenMessage(message.str());
REQUIRE(networkMessage.filePath.wstr() == L"");
REQUIRE(networkMessage.row == 0);
REQUIRE(networkMessage.column == 0);
REQUIRE(networkMessage.valid == false);
message.str(L"");
message << type << divider << filePath << divider << "potato" << divider << column
<< endOfMessageToken;
networkMessage = NetworkProtocolHelper::parseSetActiveTokenMessage(message.str());
REQUIRE(networkMessage.filePath.wstr() == L"");
REQUIRE(networkMessage.row == 0);
REQUIRE(networkMessage.column == 0);
REQUIRE(networkMessage.valid == false);
message.str(L"");
message << type << divider << filePath << divider << row << divider << "laz0r"
<< endOfMessageToken;
networkMessage = NetworkProtocolHelper::parseSetActiveTokenMessage(message.str());
REQUIRE(networkMessage.filePath.wstr() == L"");
REQUIRE(networkMessage.row == 0);
REQUIRE(networkMessage.column == 0);
REQUIRE(networkMessage.valid == false);
}