ember/tests/TestFramework.cpp

97 lines
2.3 KiB
C++
Raw Normal View History

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/thread.hpp>
#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
namespace Ember
{
class FrameworkTestCase: public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE(FrameworkTestCase);
CPPUNIT_TEST(testTinyXmlCodec);
CPPUNIT_TEST_SUITE_END()
;
public:
void testTinyXmlCodec()
{
TiXmlDocument xmlDoc;
bool result = xmlDoc.LoadFile(std::string(SRCDIR) + "/atlas.xml", TIXML_DEFAULT_ENCODING);
CPPUNIT_ASSERT(result);
std::map<std::string, Atlas::Objects::Root> messages;
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);
int main(int argc, char **argv)
{
CppUnit::TextUi::TestRunner runner;
CppUnit::TestFactoryRegistry &registry = CppUnit::TestFactoryRegistry::getRegistry();
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;
}