added a few little tests, made existing tests a bit more thorough

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2161 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Matthew Wilber
2002-12-05 03:41:14 +00:00
parent 424880282f
commit d5b36fec12
@@ -303,9 +303,6 @@ 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;
@@ -336,6 +333,18 @@ TranslatorRosterTest::InstantiateTest()
delete proster; delete proster;
proster = NULL; proster = NULL;
// BMessage is valid, but does not contain any translators
NextSubTest();
result = bmsg.MakeEmpty();
CPPUNIT_ASSERT(result == B_OK);
result = bmsg.AddString("class", "BTranslatorRoster");
CPPUNIT_ASSERT(result == B_OK);
proster = dynamic_cast<BTranslatorRoster *>
(BTranslatorRoster::Instantiate(&bmsg));
CPPUNIT_ASSERT(proster);
delete proster;
proster = NULL;
// TODO: add a case with a BMessage containing multiple Translators to load // TODO: add a case with a BMessage containing multiple Translators to load
// slightly corrupt BMessage, Instantiate // slightly corrupt BMessage, Instantiate
@@ -731,7 +740,24 @@ TranslatorRosterTest::GetTranslatorInfoTest()
NextSubTest(); NextSubTest();
CPPUNIT_ASSERT(pDefRoster->GetTranslatorInfo(-1, &outName, &outInfo, CPPUNIT_ASSERT(pDefRoster->GetTranslatorInfo(-1, &outName, &outInfo,
&outVersion) == B_NO_TRANSLATOR); &outVersion) == B_NO_TRANSLATOR);
// TODO: Add B_BAD_VALUE cases
// B_BAD_VALUE cases
CPPUNIT_ASSERT(pDefRoster->GetTranslatorInfo(translators[i],
NULL, &outInfo, &outVersion) == B_BAD_VALUE);
CPPUNIT_ASSERT(outInfo == NULL && outVersion == -1);
CPPUNIT_ASSERT(pDefRoster->GetTranslatorInfo(translators[i],
&outName, NULL, &outVersion) == B_BAD_VALUE);
CPPUNIT_ASSERT(outName == NULL && outVersion == -1);
CPPUNIT_ASSERT(pDefRoster->GetTranslatorInfo(translators[i],
&outName, &outInfo, NULL) == B_BAD_VALUE);
CPPUNIT_ASSERT(outName == NULL && outInfo == NULL);
CPPUNIT_ASSERT(pDefRoster->GetTranslatorInfo(translators[i],
NULL, NULL, NULL) == B_BAD_VALUE);
// Good values
CPPUNIT_ASSERT(pDefRoster->GetTranslatorInfo(translators[i], CPPUNIT_ASSERT(pDefRoster->GetTranslatorInfo(translators[i],
&outName, &outInfo, &outVersion) == B_OK); &outName, &outInfo, &outVersion) == B_OK);
CPPUNIT_ASSERT(outName); CPPUNIT_ASSERT(outName);
@@ -740,6 +766,20 @@ TranslatorRosterTest::GetTranslatorInfoTest()
translators = NULL; translators = NULL;
} }
void
CheckTranslatorInfo(translator_info *pinfo, int32 nitems)
{
for (int32 k = 0; k < nitems; k++) {
CPPUNIT_ASSERT(pinfo[k].translator > 0);
CPPUNIT_ASSERT(pinfo[k].type);
CPPUNIT_ASSERT(pinfo[k].group);
CPPUNIT_ASSERT(pinfo[k].quality >= 0 && pinfo[k].quality <= 1);
CPPUNIT_ASSERT(pinfo[k].capability >= 0 && pinfo[k].capability <= 1);
CPPUNIT_ASSERT(strlen(pinfo[k].MIME) >= 0);
CPPUNIT_ASSERT(strlen(pinfo[k].name) > 0);
}
}
/** /**
* Tests: * Tests:
* virtual status_t GetTranslators(BPositionIO *inSource, * virtual status_t GetTranslators(BPositionIO *inSource,
@@ -764,7 +804,7 @@ TranslatorRosterTest::GetTranslatorsTest()
CPPUNIT_ASSERT(garbled.InitCheck() == B_OK); CPPUNIT_ASSERT(garbled.InitCheck() == B_OK);
NextSubTest(); NextSubTest();
translator_info* info = NULL; translator_info* pinfo = NULL;
int32 outCount = -1; int32 outCount = -1;
BTranslatorRoster *pDefRoster = BTranslatorRoster::Default(); BTranslatorRoster *pDefRoster = BTranslatorRoster::Default();
CPPUNIT_ASSERT(pDefRoster); CPPUNIT_ASSERT(pDefRoster);
@@ -776,24 +816,35 @@ TranslatorRosterTest::GetTranslatorsTest()
//get translator, specifying wrong args //get translator, specifying wrong args
NextSubTest(); NextSubTest();
CPPUNIT_ASSERT(pDefRoster->GetTranslators(&garbled, NULL, &info, CPPUNIT_ASSERT(pDefRoster->GetTranslators(&garbled, NULL, &pinfo,
NULL) == B_BAD_VALUE); NULL) == B_BAD_VALUE);
//get translator for garbled data //get translator for garbled data
NextSubTest(); NextSubTest();
CPPUNIT_ASSERT(pDefRoster->GetTranslators(&garbled, NULL, &info, CPPUNIT_ASSERT(pDefRoster->GetTranslators(&garbled, NULL, &pinfo,
&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, CPPUNIT_ASSERT(pDefRoster->GetTranslators(&image, NULL, &pinfo,
&outCount) == B_OK); &outCount) == B_OK);
CPPUNIT_ASSERT(outCount > 0); CPPUNIT_ASSERT(outCount > 0);
CheckTranslatorInfo(pinfo, outCount);
delete[] pinfo;
pinfo = NULL;
outCount = -1;
// TODO: Add a case where I specify a valid BMessage //specify a valid BMessage
NextSubTest();
delete[] info; BMessage bmsg;
info = NULL; CPPUNIT_ASSERT(
bmsg.AddBool(B_TRANSLATOR_EXT_DATA_ONLY, true) == B_OK);
CPPUNIT_ASSERT(pDefRoster->GetTranslators(&image, &bmsg, &pinfo,
&outCount, 0, NULL, B_TRANSLATOR_BITMAP) == B_OK);
CPPUNIT_ASSERT(outCount > 0);
CheckTranslatorInfo(pinfo, outCount);
delete[] pinfo;
pinfo = NULL;
} }
/** /**
@@ -820,8 +871,8 @@ TranslatorRosterTest::IdentifyTest()
CPPUNIT_ASSERT(garbled.InitCheck() == B_OK); CPPUNIT_ASSERT(garbled.InitCheck() == B_OK);
NextSubTest(); NextSubTest();
translator_info *pinfo = new translator_info; translator_info info;
memset(pinfo, 0, sizeof(translator_info)); memset(&info, 0, sizeof(translator_info));
BTranslatorRoster *pDefRoster = BTranslatorRoster::Default(); BTranslatorRoster *pDefRoster = BTranslatorRoster::Default();
CPPUNIT_ASSERT(pDefRoster); CPPUNIT_ASSERT(pDefRoster);
@@ -832,20 +883,23 @@ TranslatorRosterTest::IdentifyTest()
//get translator for garbled data //get translator for garbled data
NextSubTest(); NextSubTest();
CPPUNIT_ASSERT(pDefRoster->Identify(&garbled, NULL, CPPUNIT_ASSERT(pDefRoster->Identify(&garbled, NULL,
pinfo) == B_NO_TRANSLATOR); &info) == B_NO_TRANSLATOR);
//get translator for image //get translator for image
NextSubTest(); NextSubTest();
delete pinfo; memset(&info, 0, sizeof(translator_info));
pinfo = new translator_info; CPPUNIT_ASSERT(pDefRoster->Identify(&image, NULL, &info) == B_OK);
memset(pinfo, 0, sizeof(pinfo)); CheckTranslatorInfo(&info, 1);
CPPUNIT_ASSERT(pDefRoster->Identify(&image, NULL, pinfo) == B_OK);
//supply desired output type
NextSubTest();
memset(&info, 0, sizeof(translator_info));
CPPUNIT_ASSERT(pDefRoster->Identify(&image, NULL, &info,
0, NULL, B_TRANSLATOR_BITMAP) == B_OK);
CheckTranslatorInfo(&info, 1);
// TODO: Add a test where I actually use pinfo and a BMessage // TODO: Add a test where I actually use pinfo and a BMessage
// TODO: and check their contents // TODO: and check their contents
delete pinfo;
pinfo = NULL;
} }
/** /**