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:
@@ -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;
|
||||||
@@ -335,6 +332,18 @@ TranslatorRosterTest::InstantiateTest()
|
|||||||
CPPUNIT_ASSERT(strcmp("BMP Images", strName) == 0);
|
CPPUNIT_ASSERT(strcmp("BMP Images", strName) == 0);
|
||||||
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
|
||||||
|
|
||||||
@@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user