2012-09-03 22:44:47 +02:00
|
|
|
#include <cppunit/extensions/TestFactoryRegistry.h>
|
|
|
|
|
#include <cppunit/ui/text/TestRunner.h>
|
|
|
|
|
#include <cppunit/extensions/HelperMacros.h>
|
|
|
|
|
#include <cppunit/BriefTestProgressListener.h>
|
|
|
|
|
#include <cppunit/TestResult.h>
|
|
|
|
|
|
|
|
|
|
#include "framework/TinyXmlCodec.h"
|
|
|
|
|
#include "framework/AtlasMessageLoader.h"
|
2019-09-24 11:16:59 +02:00
|
|
|
#include "tinyxml/tinyxml.h"
|
2012-09-03 22:44:47 +02:00
|
|
|
|
|
|
|
|
#include <Atlas/Objects/SmartPtr.h>
|
|
|
|
|
#include <Atlas/Objects/Root.h>
|
2012-09-03 23:48:20 +02:00
|
|
|
#include <Atlas/Message/QueuedDecoder.h>
|
|
|
|
|
#include <Atlas/Objects/Encoder.h>
|
2012-09-03 22:44:47 +02:00
|
|
|
#include <wfmath/timestamp.h>
|
|
|
|
|
|
|
|
|
|
#include <boost/date_time.hpp>
|
2019-09-08 22:14:29 +02:00
|
|
|
#include <Atlas/Objects/Factories.h>
|
|
|
|
|
|
|
|
|
|
Atlas::Objects::Factories factories;
|
2012-09-03 22:44:47 +02:00
|
|
|
|
2023-12-12 23:44:23 +01:00
|
|
|
namespace Ember {
|
2012-09-03 22:44:47 +02:00
|
|
|
|
2023-12-12 23:44:23 +01:00
|
|
|
class FrameworkTestCase : public CppUnit::TestFixture {
|
|
|
|
|
CPPUNIT_TEST_SUITE(FrameworkTestCase);
|
2012-09-03 22:44:47 +02:00
|
|
|
CPPUNIT_TEST(testTinyXmlCodec);
|
|
|
|
|
|
2023-12-12 23:44:23 +01:00
|
|
|
CPPUNIT_TEST_SUITE_END();
|
2012-09-03 22:44:47 +02:00
|
|
|
|
|
|
|
|
public:
|
2023-12-12 23:44:23 +01:00
|
|
|
void testTinyXmlCodec() {
|
2012-09-03 22:44:47 +02:00
|
|
|
TiXmlDocument xmlDoc;
|
|
|
|
|
bool result = xmlDoc.LoadFile(std::string(SRCDIR) + "/atlas.xml", TIXML_DEFAULT_ENCODING);
|
|
|
|
|
CPPUNIT_ASSERT(result);
|
|
|
|
|
|
2023-12-12 23:44:23 +01:00
|
|
|
std::map <std::string, Atlas::Objects::Root> messages;
|
2012-09-03 22:44:47 +02:00
|
|
|
|
2012-09-03 23:48:20 +02:00
|
|
|
{
|
2019-09-11 23:13:17 +02:00
|
|
|
AtlasMessageLoader loader(factories, messages);
|
2012-09-03 23:48:20 +02:00
|
|
|
TinyXmlCodec codec(*xmlDoc.RootElement(), loader);
|
2012-09-03 22:44:47 +02:00
|
|
|
|
2019-07-27 00:53:37 +02:00
|
|
|
codec.poll();
|
2012-09-03 23:48:20 +02:00
|
|
|
}
|
2012-09-03 22:44:47 +02:00
|
|
|
CPPUNIT_ASSERT(messages.size() == 2);
|
2012-09-03 23:48:20 +02:00
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
TiXmlDocument xmlWriteDoc;
|
|
|
|
|
Atlas::Message::QueuedDecoder decoder;
|
|
|
|
|
TinyXmlCodec codec(xmlWriteDoc, decoder);
|
|
|
|
|
Atlas::Objects::ObjectsEncoder encoder(codec);
|
|
|
|
|
|
|
|
|
|
encoder.streamBegin();
|
|
|
|
|
|
|
|
|
|
for (std::map<std::string, Atlas::Objects::Root>::const_iterator I = messages.begin(); I != messages.end(); ++I) {
|
|
|
|
|
encoder.streamObjectsMessage(I->second);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
encoder.streamEnd();
|
|
|
|
|
|
|
|
|
|
//For simplicity we'll just compare the string output of the two documents.
|
|
|
|
|
std::stringstream ssOriginal, ssCopy;
|
|
|
|
|
|
|
|
|
|
ssOriginal << xmlDoc;
|
|
|
|
|
ssCopy << xmlWriteDoc;
|
|
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT(ssOriginal.str() == ssCopy.str());
|
|
|
|
|
|
|
|
|
|
}
|
2012-09-03 22:44:47 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CPPUNIT_TEST_SUITE_REGISTRATION( Ember::FrameworkTestCase);
|
|
|
|
|
|
2023-12-12 23:44:23 +01:00
|
|
|
int main(int argc, char** argv) {
|
2012-09-03 22:44:47 +02:00
|
|
|
CppUnit::TextUi::TestRunner runner;
|
2023-12-12 23:44:23 +01:00
|
|
|
CppUnit::TestFactoryRegistry& registry = CppUnit::TestFactoryRegistry::getRegistry();
|
2012-09-03 22:44:47 +02:00
|
|
|
runner.addTest(registry.makeTest());
|
|
|
|
|
|
|
|
|
|
// Shows a message as each test starts
|
|
|
|
|
CppUnit::BriefTestProgressListener listener;
|
|
|
|
|
runner.eventManager().addListener(&listener);
|
|
|
|
|
|
|
|
|
|
bool wasSuccessful = runner.run("", false);
|
|
|
|
|
return !wasSuccessful;
|
|
|
|
|
}
|
|
|
|
|
|