added a few little tests, made style changes in order to fit on printed pages more easily, added some TODOs

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2089 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Matthew Wilber
2002-11-26 04:22:33 +00:00
parent 98138634aa
commit e1403feb25
@@ -46,37 +46,88 @@
/** /**
* TestCase constructor - no work * TestCase constructor - no work
*/ */
TranslatorRosterTest::TranslatorRosterTest(std::string name) : BTestCase(name) { TranslatorRosterTest::TranslatorRosterTest(std::string name)
: BTestCase(name)
{
} }
/** /**
* Default destructor - no work * Default destructor - no work
*/ */
TranslatorRosterTest::~TranslatorRosterTest() { TranslatorRosterTest::~TranslatorRosterTest()
{
} }
CppUnit::Test * CppUnit::Test *
TranslatorRosterTest::Suite() { TranslatorRosterTest::Suite()
{
/* create our suite */ /* create our suite */
CppUnit::TestSuite *suite = new CppUnit::TestSuite("TranslatorRoster"); CppUnit::TestSuite *suite = new CppUnit::TestSuite("TranslatorRoster");
/* add suckers */ /* add suckers */
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>("TranslatorRosterTest::Initialize Test", &TranslatorRosterTest::InitializeTest)); suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>(
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>("TranslatorRosterTest::Constructor Test", &TranslatorRosterTest::ConstructorTest)); "TranslatorRosterTest::Initialize Test",
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>("TranslatorRosterTest::Default Test", &TranslatorRosterTest::DefaultTest)); &TranslatorRosterTest::InitializeTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>("TranslatorRosterTest::Instantiate Test", &TranslatorRosterTest::InstantiateTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>("TranslatorRosterTest::Version Test", &TranslatorRosterTest::VersionTest)); suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>(
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>("TranslatorRosterTest::AddTranslators Test", &TranslatorRosterTest::AddTranslatorsTest)); "TranslatorRosterTest::Constructor Test",
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>("TranslatorRosterTest::Archive Test", &TranslatorRosterTest::ArchiveTest)); &TranslatorRosterTest::ConstructorTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>("TranslatorRosterTest::GetAllTranslators Test", &TranslatorRosterTest::GetAllTranslatorsTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>("TranslatorRosterTest::GetConfigurationMessage Test", &TranslatorRosterTest::GetConfigurationMessageTest)); suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>(
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>("TranslatorRosterTest::GetInputFormats Test", &TranslatorRosterTest::GetInputFormatsTest)); "TranslatorRosterTest::Default Test",
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>("TranslatorRosterTest::GetOutputFormats Test", &TranslatorRosterTest::GetOutputFormatsTest)); &TranslatorRosterTest::DefaultTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>("TranslatorRosterTest::GetTranslatorInfo Test", &TranslatorRosterTest::GetTranslatorInfoTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>("TranslatorRosterTest::GetTranslators Test", &TranslatorRosterTest::GetTranslatorsTest)); suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>(
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>("TranslatorRosterTest::Identify Test", &TranslatorRosterTest::IdentifyTest)); "TranslatorRosterTest::Instantiate Test",
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>("TranslatorRosterTest::MakeConfigurationView Test", &TranslatorRosterTest::MakeConfigurationViewTest)); &TranslatorRosterTest::InstantiateTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>("TranslatorRosterTest::Translate Test", &TranslatorRosterTest::TranslateTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>(
"TranslatorRosterTest::Version Test",
&TranslatorRosterTest::VersionTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>(
"TranslatorRosterTest::AddTranslators Test",
&TranslatorRosterTest::AddTranslatorsTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>(
"TranslatorRosterTest::Archive Test",
&TranslatorRosterTest::ArchiveTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>(
"TranslatorRosterTest::GetAllTranslators Test",
&TranslatorRosterTest::GetAllTranslatorsTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>(
"TranslatorRosterTest::GetConfigurationMessage Test",
&TranslatorRosterTest::GetConfigurationMessageTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>(
"TranslatorRosterTest::GetInputFormats Test",
&TranslatorRosterTest::GetInputFormatsTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>(
"TranslatorRosterTest::GetOutputFormats Test",
&TranslatorRosterTest::GetOutputFormatsTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>(
"TranslatorRosterTest::GetTranslatorInfo Test",
&TranslatorRosterTest::GetTranslatorInfoTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>(
"TranslatorRosterTest::GetTranslators Test",
&TranslatorRosterTest::GetTranslatorsTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>(
"TranslatorRosterTest::Identify Test",
&TranslatorRosterTest::IdentifyTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>(
"TranslatorRosterTest::MakeConfigurationView Test",
&TranslatorRosterTest::MakeConfigurationViewTest));
suite->addTest(new CppUnit::TestCaller<TranslatorRosterTest>(
"TranslatorRosterTest::Translate Test",
&TranslatorRosterTest::TranslateTest));
return suite; return suite;
} }
@@ -84,24 +135,29 @@ TranslatorRosterTest::Suite() {
/** /**
* Tries to aquire the default roster * Tries to aquire the default roster
*/ */
void TranslatorRosterTest::InitializeTest() { void
TranslatorRosterTest::InitializeTest()
{
//aquire default roster //aquire default roster
NextSubTest(); NextSubTest();
BTranslatorRoster *proster = BTranslatorRoster::Default(); BTranslatorRoster *proster = BTranslatorRoster::Default();
CPPUNIT_ASSERT(proster != NULL); CPPUNIT_ASSERT(proster);
//print version information //print version information
int32 outCurVersion; int32 outCurVersion;
int32 outMinVersion; int32 outMinVersion;
long inAppVersion; long inAppVersion;
const char *info = proster->Version(&outCurVersion, &outMinVersion, inAppVersion); const char *info = proster->Version(&outCurVersion, &outMinVersion,
inAppVersion);
printf("Default TranslatorRoster aquired. Version: %s\n", info); printf("Default TranslatorRoster aquired. Version: %s\n", info);
} }
/** /**
* Construct proster using different kinds of constructors * Construct proster using different kinds of constructors
*/ */
void TranslatorRosterTest::ConstructorTest() { void
TranslatorRosterTest::ConstructorTest()
{
//shared instance of TranslatorRoster //shared instance of TranslatorRoster
BTranslatorRoster *proster; BTranslatorRoster *proster;
@@ -116,7 +172,8 @@ void TranslatorRosterTest::ConstructorTest() {
//Create TranslatorRoster using BMessage constructor //Create TranslatorRoster using BMessage constructor
NextSubTest(); NextSubTest();
BMessage translator_message; BMessage translator_message;
translator_message.AddString("be:translator_path", "/boot/home/config/add-ons/Translators"); translator_message.AddString("be:translator_path",
"/boot/home/config/add-ons/Translators");
proster = new BTranslatorRoster(&translator_message); proster = new BTranslatorRoster(&translator_message);
CPPUNIT_ASSERT(proster != NULL); CPPUNIT_ASSERT(proster != NULL);
@@ -184,7 +241,9 @@ void TranslatorRosterTest::ConstructorTest() {
* Tests: * Tests:
* BTranslatorRoster *Default() * BTranslatorRoster *Default()
*/ */
void TranslatorRosterTest::DefaultTest() { void
TranslatorRosterTest::DefaultTest()
{
NextSubTest(); NextSubTest();
BTranslatorRoster *proster = BTranslatorRoster::Default(); BTranslatorRoster *proster = BTranslatorRoster::Default();
CPPUNIT_ASSERT(proster != NULL); CPPUNIT_ASSERT(proster != NULL);
@@ -210,11 +269,11 @@ void TranslatorRosterTest::DefaultTest() {
NextSubTest(); NextSubTest();
translator_id *pids = NULL; translator_id *pids = NULL;
int32 ncount = -1; int32 ncount = -1;
status_t result = proster->GetAllTranslators(&pids, &ncount); CPPUNIT_ASSERT(proster->GetAllTranslators(&pids, &ncount) == B_OK);
CPPUNIT_ASSERT(pids); CPPUNIT_ASSERT(pids);
CPPUNIT_ASSERT(ncount > 0);
delete[] pids; delete[] pids;
pids = NULL; pids = NULL;
CPPUNIT_ASSERT(ncount > 0);
// Delete again to be sure that it still won't blow up // Delete again to be sure that it still won't blow up
NextSubTest(); NextSubTest();
@@ -229,7 +288,9 @@ void TranslatorRosterTest::DefaultTest() {
* @return B_OK if everything went ok, B_ERROR if not * @return B_OK if everything went ok, B_ERROR if not
*/ */
// ArchiveTest() also tests BTranslatorRoster::Instantiate() // ArchiveTest() also tests BTranslatorRoster::Instantiate()
void TranslatorRosterTest::InstantiateTest() { void
TranslatorRosterTest::InstantiateTest()
{
//shared instance of TranslatorRoster //shared instance of TranslatorRoster
BTranslatorRoster* proster = NULL; BTranslatorRoster* proster = NULL;
BMessage bmsg; BMessage bmsg;
@@ -242,6 +303,9 @@ void TranslatorRosterTest::InstantiateTest() {
delete proster; delete proster;
proster = NULL; proster = NULL;
// TODO: Add test where the BMessage is valid, but does not contain
// TODO: any translators
// BMessage containing a single Translator to load // BMessage containing a single Translator to load
NextSubTest(); NextSubTest();
status_t result; status_t result;
@@ -262,7 +326,8 @@ void TranslatorRosterTest::InstantiateTest() {
CPPUNIT_ASSERT(ncount == 1); CPPUNIT_ASSERT(ncount == 1);
const char *strName = NULL, *strInfo = NULL; const char *strName = NULL, *strInfo = NULL;
int32 nversion = -1; int32 nversion = -1;
result = proster->GetTranslatorInfo(pids[0], &strName, &strInfo, &nversion); result = proster->GetTranslatorInfo(pids[0], &strName, &strInfo,
&nversion);
CPPUNIT_ASSERT(result == B_OK); CPPUNIT_ASSERT(result == B_OK);
CPPUNIT_ASSERT(strName); CPPUNIT_ASSERT(strName);
CPPUNIT_ASSERT(strInfo); CPPUNIT_ASSERT(strInfo);
@@ -290,16 +355,19 @@ void TranslatorRosterTest::InstantiateTest() {
/** /**
* Tests: * Tests:
* const char *Version(int32 *outCurVersion, int32 *outMinVersion, int32 *inAppVersion = B_TRANSLATION_CURRENT_VERSION) * const char *Version(int32 *outCurVersion, int32 *outMinVersion,
* int32 *inAppVersion = B_TRANSLATION_CURRENT_VERSION)
* *
* @return B_OK if everything went ok, B_ERROR if not * @return B_OK if everything went ok, B_ERROR if not
*/ */
void TranslatorRosterTest::VersionTest() { void
TranslatorRosterTest::VersionTest()
{
NextSubTest();
int32 outCurVersion = 0; int32 outCurVersion = 0;
int32 outMinVersion = 0; int32 outMinVersion = 0;
const char* info = NULL; const char* info = NULL;
NextSubTest();
info = BTranslatorRoster::Version(&outCurVersion, &outMinVersion); info = BTranslatorRoster::Version(&outCurVersion, &outMinVersion);
CPPUNIT_ASSERT(info != NULL); CPPUNIT_ASSERT(info != NULL);
CPPUNIT_ASSERT(outCurVersion > 0); CPPUNIT_ASSERT(outCurVersion > 0);
@@ -311,7 +379,8 @@ void TranslatorRosterTest::VersionTest() {
// ensure that they have the same translators and the // ensure that they have the same translators and the
// same number of translators // same number of translators
// //
void CompareWithDefault(BTranslatorRoster *proster) void
CompareWithDefault(BTranslatorRoster *proster)
{ {
BTranslatorRoster *pDefRoster = BTranslatorRoster::Default(); BTranslatorRoster *pDefRoster = BTranslatorRoster::Default();
CPPUNIT_ASSERT(pDefRoster); CPPUNIT_ASSERT(pDefRoster);
@@ -322,19 +391,24 @@ void CompareWithDefault(BTranslatorRoster *proster)
CPPUNIT_ASSERT(proster->GetAllTranslators(&pInstids, &instcount) == B_OK); CPPUNIT_ASSERT(proster->GetAllTranslators(&pInstids, &instcount) == B_OK);
CPPUNIT_ASSERT(pInstids); CPPUNIT_ASSERT(pInstids);
CPPUNIT_ASSERT(instcount > 0);
CPPUNIT_ASSERT(pDefRoster->GetAllTranslators(&pDefids, &defcount) == B_OK); CPPUNIT_ASSERT(pDefRoster->GetAllTranslators(&pDefids, &defcount) == B_OK);
CPPUNIT_ASSERT(pDefids); CPPUNIT_ASSERT(pDefids);
CPPUNIT_ASSERT(defcount > 0);
CPPUNIT_ASSERT(defcount == instcount); CPPUNIT_ASSERT(defcount == instcount);
// make sure that every translator that is in the default
// BTranslatorRoster is in proster, once and only once
for (int32 i = 0; i < defcount; i++) { for (int32 i = 0; i < defcount; i++) {
int32 matches; int32 matches;
matches = 0; matches = 0;
CPPUNIT_ASSERT( CPPUNIT_ASSERT(pDefRoster->GetTranslatorInfo(pDefids[i], &strDefName,
pDefRoster->GetTranslatorInfo(pDefids[i], &strDefName, &strDummy, &ndummy) == B_OK); &strDummy, &ndummy) == B_OK);
CPPUNIT_ASSERT(strDefName); CPPUNIT_ASSERT(strDefName);
for (int32 k = 0; k < instcount; k++) { for (int32 k = 0; k < instcount; k++) {
CPPUNIT_ASSERT( CPPUNIT_ASSERT(proster->GetTranslatorInfo(pInstids[k],
proster->GetTranslatorInfo(pInstids[k], &strInstName, &strDummy, &ndummy) == B_OK); &strInstName, &strDummy, &ndummy) == B_OK);
CPPUNIT_ASSERT(strInstName); CPPUNIT_ASSERT(strInstName);
if (strcmp(strDefName, strInstName) == 0) if (strcmp(strDefName, strInstName) == 0)
@@ -348,33 +422,31 @@ void CompareWithDefault(BTranslatorRoster *proster)
delete[] pDefids; delete[] pDefids;
pDefids = NULL; pDefids = NULL;
} }
/** /**
* Tests: * Tests:
* virtual status_t AddTranslators(const char *load_path = NULL) * virtual status_t AddTranslators(const char *load_path = NULL)
* *
* @return B_OK if everything went ok, B_ERROR if not * @return B_OK if everything went ok, B_ERROR if not
*/ */
void TranslatorRosterTest::AddTranslatorsTest() { void
TranslatorRosterTest::AddTranslatorsTest()
{
//create basic translatorroster //create basic translatorroster
NextSubTest(); NextSubTest();
BTranslatorRoster* proster = new BTranslatorRoster(); BTranslatorRoster* proster = new BTranslatorRoster();
CPPUNIT_ASSERT(proster);
//load wrong path (generate parse error) CPPUNIT_ASSERT(proster->AddTranslators(
/* "/boot/home/config/add-ons/Translators/:/system/add-ons/Translators/") == B_OK);
CPPUNIT_ASSERT(translator_roster->AddTranslators("?") == B_BAD_VALUE);
*/
//load correct path
CPPUNIT_ASSERT(
proster->AddTranslators("/boot/home/config/add-ons/Translators/:/system/add-ons/Translators/") == B_OK);
NextSubTest(); NextSubTest();
int32 instcount = 0; int32 instcount = 0;
translator_id* translators = NULL; translator_id* translators = NULL;
proster->GetAllTranslators(&translators, &instcount); proster->GetAllTranslators(&translators, &instcount);
CPPUNIT_ASSERT(translators);
CPPUNIT_ASSERT(instcount > 0); CPPUNIT_ASSERT(instcount > 0);
// TODO: count the number of files in all of the directories specified above // TODO: count the number of files in all of the directories specified
// TODO: and make certain that it matches instcount // TODO: above and make certain that it matches instcount
delete[] translators; delete[] translators;
translators = NULL; translators = NULL;
@@ -398,13 +470,14 @@ void TranslatorRosterTest::AddTranslatorsTest() {
* *
* @return B_OK if everything went ok, B_ERROR if not * @return B_OK if everything went ok, B_ERROR if not
*/ */
void TranslatorRosterTest::ArchiveTest() { void
TranslatorRosterTest::ArchiveTest()
{
NextSubTest();
//archive default, and count entries (must be more than 1!) //archive default, and count entries (must be more than 1!)
BMessage translator_message; BMessage translator_message;
BTranslatorRoster *pDefRoster = BTranslatorRoster::Default(); BTranslatorRoster *pDefRoster = BTranslatorRoster::Default();
CPPUNIT_ASSERT(pDefRoster);
NextSubTest();
CPPUNIT_ASSERT(pDefRoster != NULL);
CPPUNIT_ASSERT(pDefRoster->Archive(&translator_message) == B_OK); CPPUNIT_ASSERT(pDefRoster->Archive(&translator_message) == B_OK);
// make sure instantiate makes an "exact" copy of the default translator // make sure instantiate makes an "exact" copy of the default translator
@@ -412,7 +485,7 @@ void TranslatorRosterTest::ArchiveTest() {
BTranslatorRoster *proster = NULL; BTranslatorRoster *proster = NULL;
proster = dynamic_cast<BTranslatorRoster *> proster = dynamic_cast<BTranslatorRoster *>
(BTranslatorRoster::Instantiate(&translator_message)); (BTranslatorRoster::Instantiate(&translator_message));
CPPUNIT_ASSERT(proster != NULL); CPPUNIT_ASSERT(proster);
// make sure that every translator in the pDefRoster is in // make sure that every translator in the pDefRoster is in
// proster, and make certain that it is in there ONLY ONCE // proster, and make certain that it is in there ONLY ONCE
@@ -428,13 +501,13 @@ void TranslatorRosterTest::ArchiveTest() {
* *
* @return B_OK if everything went ok, B_ERROR if not * @return B_OK if everything went ok, B_ERROR if not
*/ */
void TranslatorRosterTest::GetAllTranslatorsTest() { void
TranslatorRosterTest::GetAllTranslatorsTest()
int32 nloaded = 42; {
translator_id* pids = NULL;
// bad parameters // bad parameters
NextSubTest(); NextSubTest();
int32 nloaded = 42;
translator_id* pids = NULL;
BTranslatorRoster roster; BTranslatorRoster roster;
CPPUNIT_ASSERT(roster.GetAllTranslators(NULL, &nloaded) == B_BAD_VALUE); CPPUNIT_ASSERT(roster.GetAllTranslators(NULL, &nloaded) == B_BAD_VALUE);
CPPUNIT_ASSERT(nloaded == 42); CPPUNIT_ASSERT(nloaded == 42);
@@ -514,64 +587,90 @@ void TranslatorRosterTest::GetAllTranslatorsTest() {
/** /**
* Tests: * Tests:
* virtual status_t GetConfigurationMessage(translator_id forTranslator, BMessage *ioExtension) * virtual status_t GetConfigurationMessage(translator_id forTranslator,
* BMessage *ioExtension)
* *
* @return B_OK if everything went ok, B_ERROR if not * @return B_OK if everything went ok, B_ERROR if not
*/ */
void TranslatorRosterTest::GetConfigurationMessageTest() void
TranslatorRosterTest::GetConfigurationMessageTest()
{ {
NextSubTest(); NextSubTest();
BTranslatorRoster *pDefRoster = BTranslatorRoster::Default(); BTranslatorRoster *pDefRoster = BTranslatorRoster::Default();
CPPUNIT_ASSERT(pDefRoster); CPPUNIT_ASSERT(pDefRoster);
NextSubTest();
//get id for a translator (just use the first one) //get id for a translator (just use the first one)
int32 num_translators = -1; int32 num_translators = -1;
translator_id* translators = NULL; translator_id* translators = NULL;
pDefRoster->GetAllTranslators(&translators, &num_translators); CPPUNIT_ASSERT(pDefRoster->GetAllTranslators(&translators,
&num_translators) == B_OK);
CPPUNIT_ASSERT(translators); CPPUNIT_ASSERT(translators);
CPPUNIT_ASSERT(num_translators > 0);
NextSubTest();
translator_id translatorid = translators[0]; translator_id translatorid = translators[0];
delete[] translators; delete[] translators;
translators = NULL; translators = NULL;
//get conf for invalid translator //get conf for invalid translator
BMessage translator_message; BMessage translator_message;
CPPUNIT_ASSERT(pDefRoster->GetConfigurationMessage(-1, &translator_message) == B_NO_TRANSLATOR); CPPUNIT_ASSERT(pDefRoster->GetConfigurationMessage(-1,
&translator_message) == B_NO_TRANSLATOR);
CPPUNIT_ASSERT(translator_message.IsEmpty()); CPPUNIT_ASSERT(translator_message.IsEmpty());
//get conf for invalid ioExtension (BMessage) //get conf for invalid ioExtension (BMessage)
NextSubTest(); NextSubTest();
CPPUNIT_ASSERT(pDefRoster->GetConfigurationMessage(translatorid, NULL) == B_BAD_VALUE); CPPUNIT_ASSERT(
pDefRoster->GetConfigurationMessage(translatorid, NULL) == B_BAD_VALUE);
//get config for actual translator //get config for actual translator
NextSubTest(); NextSubTest();
CPPUNIT_ASSERT(translator_message.MakeEmpty() == B_OK); CPPUNIT_ASSERT(translator_message.MakeEmpty() == B_OK);
CPPUNIT_ASSERT(pDefRoster->GetConfigurationMessage(translatorid, &translator_message) == B_OK); CPPUNIT_ASSERT(pDefRoster->GetConfigurationMessage(translatorid,
&translator_message) == B_OK);
} }
// Code used by both GetInputFormatsTest and GetOutputFormatsTest // Code used by both GetInputFormatsTest and GetOutputFormatsTest
void GetInputOutputFormatsTest(TranslatorRosterTest *prt, bool binput) void
GetInputOutputFormatsTest(TranslatorRosterTest *prt, bool binput)
{ {
prt->NextSubTest(); prt->NextSubTest();
BTranslatorRoster *pDefRoster = BTranslatorRoster::Default(); BTranslatorRoster *pDefRoster = BTranslatorRoster::Default();
CPPUNIT_ASSERT(pDefRoster); CPPUNIT_ASSERT(pDefRoster);
prt->NextSubTest();
translator_id* translators = NULL; translator_id* translators = NULL;
int32 num_translators = -1; int32 num_translators = -1;
pDefRoster->GetAllTranslators(&translators, &num_translators); CPPUNIT_ASSERT(pDefRoster->GetAllTranslators(&translators,
&num_translators) == B_OK);
CPPUNIT_ASSERT(translators);
CPPUNIT_ASSERT(num_translators > 0); CPPUNIT_ASSERT(num_translators > 0);
// Run get Input/output format test on each translator
for (int32 i = 0; i < num_translators; i++) { for (int32 i = 0; i < num_translators; i++) {
const translation_format *fmts = NULL; const translation_format *fmts = NULL;
int32 num_fmts = -1; int32 num_fmts = -1;
status_t result; status_t result;
prt->NextSubTest(); prt->NextSubTest();
if (binput) if (binput)
result = pDefRoster->GetInputFormats(translators[i], &fmts, &num_fmts); result = pDefRoster->GetInputFormats(translators[i], &fmts,
&num_fmts);
else else
result = pDefRoster->GetOutputFormats(translators[i], &fmts, &num_fmts); result = pDefRoster->GetOutputFormats(translators[i], &fmts,
&num_fmts);
CPPUNIT_ASSERT(result == B_OK); CPPUNIT_ASSERT(result == B_OK);
// test input/output formats
CPPUNIT_ASSERT(num_fmts >= 0); CPPUNIT_ASSERT(num_fmts >= 0);
CPPUNIT_ASSERT(num_fmts == 0 || fmts);
for (int32 k = 0; k < num_fmts; k++) {
CPPUNIT_ASSERT(fmts[k].type);
CPPUNIT_ASSERT(fmts[k].group);
CPPUNIT_ASSERT(fmts[k].quality >= 0 && fmts[k].quality <= 1);
CPPUNIT_ASSERT(fmts[k].capability >= 0 && fmts[k].capability <= 1);
CPPUNIT_ASSERT(strlen(fmts[k].MIME) >= 0);
CPPUNIT_ASSERT(strlen(fmts[k].name) > 0);
}
} }
delete[] translators; delete[] translators;
translators = NULL; translators = NULL;
@@ -579,33 +678,39 @@ void GetInputOutputFormatsTest(TranslatorRosterTest *prt, bool binput)
/** /**
* Tests: * Tests:
* virtual status_t GetInputFormats(translator_id forTranslator, const translation_format **outFormats, int32 *outNumFormats) * virtual status_t GetInputFormats(translator_id forTranslator,
* const translation_format **outFormats, int32 *outNumFormats)
* *
* @return B_OK if everything went ok, B_ERROR if not * @return B_OK if everything went ok, B_ERROR if not
*/ */
void TranslatorRosterTest::GetInputFormatsTest() void
TranslatorRosterTest::GetInputFormatsTest()
{ {
GetInputOutputFormatsTest(this, true); GetInputOutputFormatsTest(this, true);
} }
/** /**
* Tests: * Tests:
* virtual status_t GetOutputFormats(translator_id forTranslator, const translation_format **outFormats, int32 *outNumFormats) * virtual status_t GetOutputFormats(translator_id forTranslator,
* const translation_format **outFormats, int32 *outNumFormats)
* *
* @return B_OK if everything went ok, B_ERROR if not * @return B_OK if everything went ok, B_ERROR if not
*/ */
void TranslatorRosterTest::GetOutputFormatsTest() void
TranslatorRosterTest::GetOutputFormatsTest()
{ {
GetInputOutputFormatsTest(this, false); GetInputOutputFormatsTest(this, false);
} }
/** /**
* Tests: * Tests:
* virtual status_t GetTranslatorInfo(translator_id forTranslator, const char **outName, const char **outInfo, int32 *outVersion) * virtual status_t GetTranslatorInfo(translator_id forTranslator,
* const char **outName, const char **outInfo, int32 *outVersion)
* *
* @return B_OK if everything went ok, B_ERROR if not * @return B_OK if everything went ok, B_ERROR if not
*/ */
void TranslatorRosterTest::GetTranslatorInfoTest() void
TranslatorRosterTest::GetTranslatorInfoTest()
{ {
NextSubTest(); NextSubTest();
translator_id* translators = NULL; translator_id* translators = NULL;
@@ -613,17 +718,22 @@ void TranslatorRosterTest::GetTranslatorInfoTest()
BTranslatorRoster *pDefRoster = BTranslatorRoster::Default(); BTranslatorRoster *pDefRoster = BTranslatorRoster::Default();
CPPUNIT_ASSERT(pDefRoster); CPPUNIT_ASSERT(pDefRoster);
CPPUNIT_ASSERT(pDefRoster->GetAllTranslators(&translators, &num_translators) == B_OK); NextSubTest();
CPPUNIT_ASSERT(pDefRoster->GetAllTranslators(&translators,
&num_translators) == B_OK);
CPPUNIT_ASSERT(translators);
CPPUNIT_ASSERT(num_translators > 0);
for (int32 i = 0; i < num_translators; i++) { for (int32 i = 0; i < num_translators; i++) {
const char *outName = NULL; const char *outName = NULL;
const char *outInfo = NULL; const char *outInfo = NULL;
int32 outVersion = -1; int32 outVersion = -1;
NextSubTest(); NextSubTest();
CPPUNIT_ASSERT( CPPUNIT_ASSERT(pDefRoster->GetTranslatorInfo(-1, &outName, &outInfo,
pDefRoster->GetTranslatorInfo(-1, &outName, &outInfo, &outVersion) == B_NO_TRANSLATOR); &outVersion) == B_NO_TRANSLATOR);
CPPUNIT_ASSERT( // TODO: Add B_BAD_VALUE cases
pDefRoster->GetTranslatorInfo(translators[i], &outName, &outInfo, &outVersion) == B_OK); CPPUNIT_ASSERT(pDefRoster->GetTranslatorInfo(translators[i],
&outName, &outInfo, &outVersion) == B_OK);
CPPUNIT_ASSERT(outName); CPPUNIT_ASSERT(outName);
} }
delete[] translators; delete[] translators;
@@ -632,22 +742,28 @@ void TranslatorRosterTest::GetTranslatorInfoTest()
/** /**
* Tests: * Tests:
* virtual status_t GetTranslators(BPositionIO *inSource, BMessage *ioExtension, translator_info **outInfo, int32 *outNumInfo, uint32 inHintType = 0, const char *inHintMIME = NULL, uint32 inWantType = 0) * virtual status_t GetTranslators(BPositionIO *inSource,
* BMessage *ioExtension, translator_info **outInfo, int32 *outNumInfo,
* uint32 inHintType = 0, const char *inHintMIME = NULL, uint32 inWantType = 0)
* *
* @return B_OK if everything went ok, B_ERROR if not * @return B_OK if everything went ok, B_ERROR if not
*/ */
void TranslatorRosterTest::GetTranslatorsTest() void
TranslatorRosterTest::GetTranslatorsTest()
{ {
NextSubTest(); NextSubTest();
BApplication app("application/x-vnd.OpenBeOS-translationkit_translatorrostertest"); BApplication app(
"application/x-vnd.OpenBeOS-translationkit_translatorrostertest");
//open image to get a translator for //open image to get a translator for
BFile image("../src/tests/kits/translation/data/images/image.png", B_READ_ONLY); BFile image("../src/tests/kits/translation/data/images/image.png",
B_READ_ONLY);
CPPUNIT_ASSERT(image.InitCheck() == B_OK); CPPUNIT_ASSERT(image.InitCheck() == B_OK);
NextSubTest(); BFile garbled("../src/tests/kits/translation/data/garbled_data",
BFile garbled("../src/tests/kits/translation/data/garbled_data", B_READ_ONLY); B_READ_ONLY);
CPPUNIT_ASSERT(garbled.InitCheck() == B_OK); CPPUNIT_ASSERT(garbled.InitCheck() == B_OK);
NextSubTest();
translator_info* info = NULL; translator_info* info = NULL;
int32 outCount = -1; int32 outCount = -1;
BTranslatorRoster *pDefRoster = BTranslatorRoster::Default(); BTranslatorRoster *pDefRoster = BTranslatorRoster::Default();
@@ -655,23 +771,26 @@ void TranslatorRosterTest::GetTranslatorsTest()
//get translator, specifying wrong args //get translator, specifying wrong args
NextSubTest(); NextSubTest();
CPPUNIT_ASSERT( CPPUNIT_ASSERT(pDefRoster->GetTranslators(&garbled, NULL, NULL,
pDefRoster->GetTranslators(&garbled, NULL, NULL, &outCount) == B_BAD_VALUE); &outCount) == B_BAD_VALUE);
//get translator, specifying wrong args //get translator, specifying wrong args
NextSubTest(); NextSubTest();
CPPUNIT_ASSERT( CPPUNIT_ASSERT(pDefRoster->GetTranslators(&garbled, NULL, &info,
pDefRoster->GetTranslators(&garbled, NULL, &info, NULL) == B_BAD_VALUE); NULL) == B_BAD_VALUE);
//get translator for garbled data //get translator for garbled data
NextSubTest(); NextSubTest();
CPPUNIT_ASSERT( CPPUNIT_ASSERT(pDefRoster->GetTranslators(&garbled, NULL, &info,
pDefRoster->GetTranslators(&garbled, NULL, &info, &outCount) == B_NO_TRANSLATOR); &outCount) == B_NO_TRANSLATOR);
//get translator for image //get translator for image
NextSubTest(); NextSubTest();
CPPUNIT_ASSERT(pDefRoster->GetTranslators(&image, NULL, &info, &outCount) == B_OK); CPPUNIT_ASSERT(pDefRoster->GetTranslators(&image, NULL, &info,
&outCount) == B_OK);
CPPUNIT_ASSERT(outCount > 0); CPPUNIT_ASSERT(outCount > 0);
// TODO: Add a case where I specify a valid BMessage
delete[] info; delete[] info;
info = NULL; info = NULL;
@@ -679,20 +798,25 @@ void TranslatorRosterTest::GetTranslatorsTest()
/** /**
* Tests: * Tests:
* virtual status_t Identify(BPositionIO *inSource, BMessage *ioExtension, translator_info *outInfo, uint32 inHintType = 0, const char *inHintMIME = NULL, uint32 inWantType = 0) * virtual status_t Identify(BPositionIO *inSource, BMessage *ioExtension,
* translator_info *outInfo, uint32 inHintType = 0,
* const char *inHintMIME = NULL, uint32 inWantType = 0)
* *
* @return B_OK if everything went ok, B_ERROR if not * @return B_OK if everything went ok, B_ERROR if not
*/ */
void TranslatorRosterTest::IdentifyTest() void
TranslatorRosterTest::IdentifyTest()
{ {
NextSubTest(); NextSubTest();
BApplication app("application/x-vnd.OpenBeOS-translationkit_translatorrostertest"); BApplication app(
"application/x-vnd.OpenBeOS-translationkit_translatorrostertest");
//open image to get a translator for //open image to get a translator for
BFile image("../src/tests/kits/translation/data/images/image.png", B_READ_ONLY); BFile image("../src/tests/kits/translation/data/images/image.png",
B_READ_ONLY);
CPPUNIT_ASSERT(image.InitCheck() == B_OK); CPPUNIT_ASSERT(image.InitCheck() == B_OK);
//NextSubTest(); BFile garbled("../src/tests/kits/translation/data/garbled_data",
BFile garbled("../src/tests/kits/translation/data/garbled_data", B_READ_ONLY); B_READ_ONLY);
CPPUNIT_ASSERT(garbled.InitCheck() == B_OK); CPPUNIT_ASSERT(garbled.InitCheck() == B_OK);
NextSubTest(); NextSubTest();
@@ -707,7 +831,8 @@ void TranslatorRosterTest::IdentifyTest()
//get translator for garbled data //get translator for garbled data
NextSubTest(); NextSubTest();
CPPUNIT_ASSERT(pDefRoster->Identify(&garbled, NULL, pinfo) == B_NO_TRANSLATOR); CPPUNIT_ASSERT(pDefRoster->Identify(&garbled, NULL,
pinfo) == B_NO_TRANSLATOR);
//get translator for image //get translator for image
NextSubTest(); NextSubTest();
@@ -716,22 +841,28 @@ void TranslatorRosterTest::IdentifyTest()
memset(pinfo, 0, sizeof(pinfo)); memset(pinfo, 0, sizeof(pinfo));
CPPUNIT_ASSERT(pDefRoster->Identify(&image, NULL, pinfo) == B_OK); CPPUNIT_ASSERT(pDefRoster->Identify(&image, NULL, pinfo) == B_OK);
// TODO: Add a test where I actually use pinfo and a BMessage
// TODO: and check their contents
delete pinfo; delete pinfo;
pinfo = NULL; pinfo = NULL;
} }
/** /**
* Tests: * Tests:
* virtual status_t MakeConfigurationView(translator_id forTranslator, BMessage *ioExtension, BView **outView, BRect *outExtent) * virtual status_t MakeConfigurationView(translator_id forTranslator,
* BMessage *ioExtension, BView **outView, BRect *outExtent)
* *
* @return B_OK if everything went ok, B_ERROR if not * @return B_OK if everything went ok, B_ERROR if not
*/ */
void TranslatorRosterTest::MakeConfigurationViewTest() void
TranslatorRosterTest::MakeConfigurationViewTest()
{ {
//create invalid rect - if it is valid after the //create invalid rect - if it is valid after the
//MakeConfigurationView call the test has succeded //MakeConfigurationView call the test has succeded
NextSubTest(); NextSubTest();
BApplication app("application/x-vnd.OpenBeOS-translationkit_translatorrostertest"); BApplication app(
"application/x-vnd.OpenBeOS-translationkit_translatorrostertest");
BRect extent(-1, -1, -1, -1); BRect extent(-1, -1, -1, -1);
//create config view //create config view
BView *view = NULL; BView *view = NULL;
@@ -748,26 +879,25 @@ void TranslatorRosterTest::MakeConfigurationViewTest()
// bad parameters // bad parameters
NextSubTest(); NextSubTest();
CPPUNIT_ASSERT( CPPUNIT_ASSERT(pDefRoster->MakeConfigurationView(translators[0], NULL,
pDefRoster->MakeConfigurationView(translators[0], NULL, &view, NULL) == B_BAD_VALUE); &view, NULL) == B_BAD_VALUE);
CPPUNIT_ASSERT( CPPUNIT_ASSERT(pDefRoster->MakeConfigurationView(translators[0], NULL,
pDefRoster->MakeConfigurationView(translators[0], NULL, NULL, &extent) == B_BAD_VALUE); NULL, &extent) == B_BAD_VALUE);
CPPUNIT_ASSERT( CPPUNIT_ASSERT(pDefRoster->MakeConfigurationView(translators[0], NULL,
pDefRoster->MakeConfigurationView(translators[0], NULL, NULL, NULL) == B_BAD_VALUE); NULL, NULL) == B_BAD_VALUE);
// bad translator id // bad translator id
NextSubTest(); NextSubTest();
CPPUNIT_ASSERT( CPPUNIT_ASSERT(pDefRoster->MakeConfigurationView(-1, NULL, &view,
pDefRoster->MakeConfigurationView(-1, NULL, &view, &extent) == B_NO_TRANSLATOR); &extent) == B_NO_TRANSLATOR);
// should work // should work
NextSubTest(); NextSubTest();
CPPUNIT_ASSERT( CPPUNIT_ASSERT(pDefRoster->MakeConfigurationView(translators[0], NULL,
pDefRoster->MakeConfigurationView(translators[0], NULL, &view, &extent) == B_OK); &view, &extent) == B_OK);
// TODO: Add a test that uses a valid BMessage with actual settings in it
//check validity
CPPUNIT_ASSERT(extent.IsValid() == true); CPPUNIT_ASSERT(extent.IsValid() == true);
// TODO: Add a test that uses a valid BMessage with actual settings in it
//clean up after ourselves //clean up after ourselves
delete[] translators; delete[] translators;
@@ -776,17 +906,26 @@ void TranslatorRosterTest::MakeConfigurationViewTest()
/** /**
* Tests: * Tests:
* virtual status_t Translate(BPositionIO *inSource, const translator_info *inInfo, BMessage *ioExtension, BPositionIO *outDestination, uint32 inWantOutType, uint32 inHintType = 0, const char *inHintMIME = NULL) * virtual status_t Translate(BPositionIO *inSource,
* virtual status_t Translate(translator_id inTranslator, BPositionIO *inSource, BMessage *ioExtension, BPositionIO *outDestination, uint32 inWantOutType) * const translator_info *inInfo, BMessage *ioExtension,
* BPositionIO *outDestination, uint32 inWantOutType,
* uint32 inHintType = 0, const char *inHintMIME = NULL)
*
* virtual status_t Translate(translator_id inTranslator,
* BPositionIO *inSource, BMessage *ioExtension,
* BPositionIO *outDestination, uint32 inWantOutType)
* *
* @return B_OK if everything went ok, B_ERROR if not * @return B_OK if everything went ok, B_ERROR if not
*/ */
void TranslatorRosterTest::TranslateTest() void
TranslatorRosterTest::TranslateTest()
{ {
NextSubTest(); NextSubTest();
BApplication app("application/x-vnd.OpenBeOS-translationkit_translatorrostertest"); BApplication app(
"application/x-vnd.OpenBeOS-translationkit_translatorrostertest");
//input //input
BFile input("../src/tests/kits/translation/data/images/image.jpg", B_READ_ONLY); BFile input("../src/tests/kits/translation/data/images/image.jpg",
B_READ_ONLY);
CPPUNIT_ASSERT(input.InitCheck() == B_OK); CPPUNIT_ASSERT(input.InitCheck() == B_OK);
//temp file for generic format //temp file for generic format
@@ -808,14 +947,20 @@ void TranslatorRosterTest::TranslateTest()
//translate to generic //translate to generic
NextSubTest(); NextSubTest();
CPPUNIT_ASSERT(pDefRoster->Translate(&input, NULL, NULL, &temp, B_TRANSLATOR_BITMAP) == B_OK); CPPUNIT_ASSERT(pDefRoster->Translate(&input, NULL, NULL, &temp,
B_TRANSLATOR_BITMAP) == B_OK);
//translate to specific //translate to specific
NextSubTest(); NextSubTest();
CPPUNIT_ASSERT(pDefRoster->Translate(&temp, NULL, NULL, &output, B_TGA_FORMAT) == B_OK); CPPUNIT_ASSERT(pDefRoster->Translate(&temp, NULL, NULL, &output,
B_TGA_FORMAT) == B_OK);
// TODO: add Translate using ioExtension BMessage and whatever
// TODO: the other NULL parameter is
} }
int main() int
main()
{ {
//needed by MakeConfigurationView //needed by MakeConfigurationView
TranslatorRosterTest test; TranslatorRosterTest test;
@@ -826,4 +971,6 @@ int main()
test.VersionTest(); test.VersionTest();
test.AddTranslatorsTest(); test.AddTranslatorsTest();
test.ArchiveTest(); test.ArchiveTest();
return 0;
} }