#include "TranslatorTest.h"
#include <TranslatorRoster.h>
#include <Application.h>
#include <OS.h>
#include <stdio.h>
#include <cppunit/Test.h>
#include <cppunit/TestCaller.h>
#include <cppunit/TestSuite.h>
class BTranslatorTester : public BTranslator {
public:
BTranslatorTester();
virtual const char *TranslatorName() const { return "NoName"; };
virtual const char *TranslatorInfo() const { return "NoInfo"; };
virtual int32 TranslatorVersion() const { return 100; };
virtual const translation_format *InputFormats(int32 *out_count) const;
virtual const translation_format *OutputFormats(int32 *out_count) const;
virtual status_t Identify(BPositionIO *inSource,
const translation_format *inFormat, BMessage *ioExtension,
translator_info *outInfo, uint32 outType) { return B_ERROR; };
virtual status_t Translate(BPositionIO *inSource,
const translator_info *inInfo, BMessage *ioExtension,
uint32 outType, BPositionIO *outDestination) { return B_ERROR; };
};
BTranslatorTester::BTranslatorTester()
: BTranslator()
{
}
const translation_format *
BTranslatorTester::InputFormats(int32 *out_count) const
{
if (out_count) *out_count = 0;
return NULL;
}
const translation_format *
BTranslatorTester::OutputFormats(int32 *out_count) const
{
if (out_count) *out_count = 0;
return NULL;
}
* Default constructor - no work
*/
TranslatorTest::TranslatorTest(std::string name)
: BTestCase(name)
{
}
* Default destructor - no work
*/
TranslatorTest::~TranslatorTest()
{
}
CppUnit::Test *
TranslatorTest::Suite()
{
CppUnit::TestSuite *suite = new CppUnit::TestSuite("Translator");
suite->addTest(new CppUnit::TestCaller<TranslatorTest>("TranslatorTest::AcquireRelease Test", &TranslatorTest::AcquireReleaseTest));
suite->addTest(new CppUnit::TestCaller<TranslatorTest>("TranslatorTest::MakeConfigurationView Test", &TranslatorTest::MakeConfigurationViewTest));
suite->addTest(new CppUnit::TestCaller<TranslatorTest>("TranslatorTest::GetConfigurationMessage Test", &TranslatorTest::GetConfigurationMessageTest));
return suite;
}
void
TranslatorTest::AcquireReleaseTest()
{
NextSubTest();
BTranslatorTester *ptt = new BTranslatorTester();
CPPUNIT_ASSERT(ptt);
BTranslator *ptranslator = static_cast<BTranslator *>(ptt);
CPPUNIT_ASSERT(ptranslator);
CPPUNIT_ASSERT(ptranslator->ReferenceCount() == 1);
NextSubTest();
BTranslator *pcomptran;
pcomptran = ptranslator->Acquire();
CPPUNIT_ASSERT(pcomptran == ptranslator);
CPPUNIT_ASSERT(ptranslator->ReferenceCount() == 2);
NextSubTest();
CPPUNIT_ASSERT(ptranslator->Release() == ptranslator);
CPPUNIT_ASSERT(ptranslator->ReferenceCount() == 1);
NextSubTest();
CPPUNIT_ASSERT(ptranslator->Release() == NULL);
ptranslator = NULL;
ptt = NULL;
pcomptran = NULL;
}
void
TranslatorTest::MakeConfigurationViewTest()
{
NextSubTest();
BApplication app(
"application/x-vnd.OpenBeOS-translationkit_translatortest");
BTranslatorTester *ptt = new BTranslatorTester();
CPPUNIT_ASSERT(ptt);
BTranslator *ptranslator = static_cast<BTranslator *>(ptt);
CPPUNIT_ASSERT(ptranslator);
CPPUNIT_ASSERT(ptranslator->ReferenceCount() == 1);
NextSubTest();
BMessage bmsg;
BView *pview = NULL;
BRect rect;
CPPUNIT_ASSERT(ptranslator->MakeConfigurationView(NULL,
NULL, NULL) == B_ERROR);
CPPUNIT_ASSERT(ptranslator->MakeConfigurationView(&bmsg,
&pview, &rect) == B_ERROR);
CPPUNIT_ASSERT(bmsg.IsEmpty() == true);
NextSubTest();
CPPUNIT_ASSERT(ptranslator->Release() == NULL);
ptranslator = NULL;
ptt = NULL;
}
void
TranslatorTest::GetConfigurationMessageTest()
{
NextSubTest();
BTranslatorTester *ptt = new BTranslatorTester();
CPPUNIT_ASSERT(ptt);
BTranslator *ptranslator = static_cast<BTranslator *>(ptt);
CPPUNIT_ASSERT(ptranslator);
CPPUNIT_ASSERT(ptranslator->ReferenceCount() == 1);
NextSubTest();
BMessage bmsg;
CPPUNIT_ASSERT(ptranslator->GetConfigurationMessage(NULL) == B_ERROR);
CPPUNIT_ASSERT(ptranslator->GetConfigurationMessage(&bmsg) == B_ERROR);
CPPUNIT_ASSERT(bmsg.IsEmpty() == true);
NextSubTest();
CPPUNIT_ASSERT(ptranslator->Release() == NULL);
ptranslator = NULL;
ptt = NULL;
}