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:
parent
424880282f
commit
d5b36fec12
@ -303,9 +303,6 @@ TranslatorRosterTest::InstantiateTest()
|
||||
delete proster;
|
||||
proster = NULL;
|
||||
|
||||
// TODO: Add test where the BMessage is valid, but does not contain
|
||||
// TODO: any translators
|
||||
|
||||
// BMessage containing a single Translator to load
|
||||
NextSubTest();
|
||||
status_t result;
|
||||
@ -335,6 +332,18 @@ TranslatorRosterTest::InstantiateTest()
|
||||
CPPUNIT_ASSERT(strcmp("BMP Images", strName) == 0);
|
||||
delete proster;
|
||||
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
|
||||
|
||||
@ -731,7 +740,24 @@ TranslatorRosterTest::GetTranslatorInfoTest()
|
||||
NextSubTest();
|
||||
CPPUNIT_ASSERT(pDefRoster->GetTranslatorInfo(-1, &outName, &outInfo,
|
||||
&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],
|
||||
&outName, &outInfo, &outVersion) == B_OK);
|
||||
CPPUNIT_ASSERT(outName);
|
||||
@ -740,6 +766,20 @@ TranslatorRosterTest::GetTranslatorInfoTest()
|
||||
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:
|
||||
* virtual status_t GetTranslators(BPositionIO *inSource,
|
||||
@ -764,7 +804,7 @@ TranslatorRosterTest::GetTranslatorsTest()
|
||||
CPPUNIT_ASSERT(garbled.InitCheck() == B_OK);
|
||||
|
||||
NextSubTest();
|
||||
translator_info* info = NULL;
|
||||
translator_info* pinfo = NULL;
|
||||
int32 outCount = -1;
|
||||
BTranslatorRoster *pDefRoster = BTranslatorRoster::Default();
|
||||
CPPUNIT_ASSERT(pDefRoster);
|
||||
@ -776,24 +816,35 @@ TranslatorRosterTest::GetTranslatorsTest()
|
||||
|
||||
//get translator, specifying wrong args
|
||||
NextSubTest();
|
||||
CPPUNIT_ASSERT(pDefRoster->GetTranslators(&garbled, NULL, &info,
|
||||
CPPUNIT_ASSERT(pDefRoster->GetTranslators(&garbled, NULL, &pinfo,
|
||||
NULL) == B_BAD_VALUE);
|
||||
|
||||
//get translator for garbled data
|
||||
NextSubTest();
|
||||
CPPUNIT_ASSERT(pDefRoster->GetTranslators(&garbled, NULL, &info,
|
||||
CPPUNIT_ASSERT(pDefRoster->GetTranslators(&garbled, NULL, &pinfo,
|
||||
&outCount) == B_NO_TRANSLATOR);
|
||||
|
||||
//get translator for image
|
||||
NextSubTest();
|
||||
CPPUNIT_ASSERT(pDefRoster->GetTranslators(&image, NULL, &info,
|
||||
CPPUNIT_ASSERT(pDefRoster->GetTranslators(&image, NULL, &pinfo,
|
||||
&outCount) == B_OK);
|
||||
CPPUNIT_ASSERT(outCount > 0);
|
||||
CheckTranslatorInfo(pinfo, outCount);
|
||||
delete[] pinfo;
|
||||
pinfo = NULL;
|
||||
outCount = -1;
|
||||
|
||||
// TODO: Add a case where I specify a valid BMessage
|
||||
|
||||
delete[] info;
|
||||
info = NULL;
|
||||
//specify a valid BMessage
|
||||
NextSubTest();
|
||||
BMessage bmsg;
|
||||
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);
|
||||
|
||||
NextSubTest();
|
||||
translator_info *pinfo = new translator_info;
|
||||
memset(pinfo, 0, sizeof(translator_info));
|
||||
translator_info info;
|
||||
memset(&info, 0, sizeof(translator_info));
|
||||
BTranslatorRoster *pDefRoster = BTranslatorRoster::Default();
|
||||
CPPUNIT_ASSERT(pDefRoster);
|
||||
|
||||
@ -832,20 +883,23 @@ TranslatorRosterTest::IdentifyTest()
|
||||
//get translator for garbled data
|
||||
NextSubTest();
|
||||
CPPUNIT_ASSERT(pDefRoster->Identify(&garbled, NULL,
|
||||
pinfo) == B_NO_TRANSLATOR);
|
||||
&info) == B_NO_TRANSLATOR);
|
||||
|
||||
//get translator for image
|
||||
NextSubTest();
|
||||
delete pinfo;
|
||||
pinfo = new translator_info;
|
||||
memset(pinfo, 0, sizeof(pinfo));
|
||||
CPPUNIT_ASSERT(pDefRoster->Identify(&image, NULL, pinfo) == B_OK);
|
||||
memset(&info, 0, sizeof(translator_info));
|
||||
CPPUNIT_ASSERT(pDefRoster->Identify(&image, NULL, &info) == B_OK);
|
||||
CheckTranslatorInfo(&info, 1);
|
||||
|
||||
//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: and check their contents
|
||||
|
||||
delete pinfo;
|
||||
pinfo = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user