added more testing
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1815 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -104,11 +104,11 @@ void TranslatorRosterTest::ConstructorTest() {
|
|||||||
//shared instance of TranslatorRoster
|
//shared instance of TranslatorRoster
|
||||||
BTranslatorRoster* proster;
|
BTranslatorRoster* proster;
|
||||||
|
|
||||||
//Create TranslatorRoster using noargs constructor
|
// Create TranslatorRoster using noargs constructor
|
||||||
|
// (GetAllTranslatorsTest also tests this constructor)
|
||||||
NextSubTest();
|
NextSubTest();
|
||||||
proster = new BTranslatorRoster();
|
proster = new BTranslatorRoster();
|
||||||
CPPUNIT_ASSERT(proster != NULL);
|
CPPUNIT_ASSERT(proster != NULL);
|
||||||
|
|
||||||
delete proster;
|
delete proster;
|
||||||
proster = NULL;
|
proster = NULL;
|
||||||
|
|
||||||
@@ -117,10 +117,64 @@ void TranslatorRosterTest::ConstructorTest() {
|
|||||||
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);
|
||||||
// TODO: count the number of translators in the path above and compare
|
|
||||||
// TODO: that number to the translator count
|
// Make sure the correct number of translators were loaded
|
||||||
|
NextSubTest();
|
||||||
|
int32 nloaded = -42;
|
||||||
|
translator_id *pids = NULL;
|
||||||
|
CPPUNIT_ASSERT(proster->GetAllTranslators(&pids, &nloaded) == B_NO_ERROR);
|
||||||
|
CPPUNIT_ASSERT(nloaded > 0);
|
||||||
|
CPPUNIT_ASSERT(pids != NULL);
|
||||||
|
|
||||||
|
// Make sure the correct translators were loaded
|
||||||
|
NextSubTest();
|
||||||
|
const char *kaTranslatorNames[] = {
|
||||||
|
"TGA Images",
|
||||||
|
"MNGTranslator",
|
||||||
|
"BMP Images",
|
||||||
|
"TestBmpTranslator",
|
||||||
|
"BBitmap Images",
|
||||||
|
"GIMPPatternHandler"
|
||||||
|
};
|
||||||
|
int32 naCounts[sizeof(kaTranslatorNames) /
|
||||||
|
sizeof(const char *)] = { 0 };
|
||||||
|
CPPUNIT_ASSERT(nloaded == sizeof(kaTranslatorNames) /
|
||||||
|
sizeof(const char *));
|
||||||
|
|
||||||
|
for (int32 i = 0; i < nloaded; i++) {
|
||||||
|
const char *kTranslatorName, *kTranslatorInfo;
|
||||||
|
int32 nTranslatorVersion;
|
||||||
|
|
||||||
|
CPPUNIT_ASSERT(pids[i] > 0);
|
||||||
|
|
||||||
|
kTranslatorName = kTranslatorInfo = NULL;
|
||||||
|
nTranslatorVersion = -246;
|
||||||
|
|
||||||
|
proster->GetTranslatorInfo(pids[i], &kTranslatorName,
|
||||||
|
&kTranslatorInfo, &nTranslatorVersion);
|
||||||
|
|
||||||
|
CPPUNIT_ASSERT(kTranslatorName);
|
||||||
|
CPPUNIT_ASSERT(kTranslatorInfo);
|
||||||
|
CPPUNIT_ASSERT(nTranslatorVersion > 0);
|
||||||
|
|
||||||
|
// make sure that the translator matches
|
||||||
|
// one from the list
|
||||||
|
int32 npresent = 0;
|
||||||
|
for (int32 k = 0; k < nloaded; k++) {
|
||||||
|
if (!strcmp(kaTranslatorNames[k], kTranslatorName)) {
|
||||||
|
npresent++;
|
||||||
|
naCounts[k]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CPPUNIT_ASSERT(npresent == 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// make certain that each translator in kaTranslatorNames
|
||||||
|
// is loaded exactly once
|
||||||
|
for (int32 i = 0; i < nloaded; i++)
|
||||||
|
CPPUNIT_ASSERT(naCounts[i] == 1);
|
||||||
|
|
||||||
delete proster;
|
delete proster;
|
||||||
proster = NULL;
|
proster = NULL;
|
||||||
}
|
}
|
||||||
@@ -142,6 +196,7 @@ 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()
|
||||||
void TranslatorRosterTest::InstantiateTest() {
|
void TranslatorRosterTest::InstantiateTest() {
|
||||||
//shared instance of TranslatorRoster
|
//shared instance of TranslatorRoster
|
||||||
BTranslatorRoster* proster = NULL;
|
BTranslatorRoster* proster = NULL;
|
||||||
@@ -154,6 +209,10 @@ void TranslatorRosterTest::InstantiateTest() {
|
|||||||
CPPUNIT_ASSERT(proster == NULL);
|
CPPUNIT_ASSERT(proster == NULL);
|
||||||
delete proster;
|
delete proster;
|
||||||
proster = NULL;
|
proster = NULL;
|
||||||
|
|
||||||
|
// TODO: add a case with a BMessage containing a single Translator to load
|
||||||
|
// TODO: add a case with a BMessage containing multiple Translators to load
|
||||||
|
// TODO: add a case with a slightly corrupt BMessage
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -285,37 +344,86 @@ void TranslatorRosterTest::ArchiveTest() {
|
|||||||
*/
|
*/
|
||||||
void TranslatorRosterTest::GetAllTranslatorsTest() {
|
void TranslatorRosterTest::GetAllTranslatorsTest() {
|
||||||
|
|
||||||
int32 num_translators = 42;
|
int32 nloaded = 42;
|
||||||
translator_id* translators = NULL;
|
translator_id* pids = NULL;
|
||||||
|
|
||||||
|
// bad parameters
|
||||||
|
NextSubTest();
|
||||||
|
BTranslatorRoster roster;
|
||||||
|
CPPUNIT_ASSERT(roster.GetAllTranslators(NULL, &nloaded) == B_BAD_VALUE);
|
||||||
|
CPPUNIT_ASSERT(nloaded == 42);
|
||||||
|
CPPUNIT_ASSERT(roster.GetAllTranslators(&pids, NULL) == B_BAD_VALUE);
|
||||||
|
CPPUNIT_ASSERT(pids == NULL);
|
||||||
|
CPPUNIT_ASSERT(roster.GetAllTranslators(NULL, NULL) == B_BAD_VALUE);
|
||||||
|
|
||||||
// no translators
|
// no translators
|
||||||
NextSubTest();
|
NextSubTest();
|
||||||
BTranslatorRoster roster;
|
|
||||||
CPPUNIT_ASSERT(
|
CPPUNIT_ASSERT(
|
||||||
roster.GetAllTranslators(&translators, &num_translators) == B_NO_ERROR);
|
roster.GetAllTranslators(&pids, &nloaded) == B_NO_ERROR);
|
||||||
|
CPPUNIT_ASSERT(nloaded == 0);
|
||||||
NextSubTest();
|
delete[] pids;
|
||||||
CPPUNIT_ASSERT(translators == NULL);
|
pids = NULL;
|
||||||
|
|
||||||
NextSubTest();
|
|
||||||
CPPUNIT_ASSERT(num_translators == 0);
|
|
||||||
|
|
||||||
// default translators
|
// default translators
|
||||||
NextSubTest();
|
NextSubTest();
|
||||||
num_translators = 42;
|
nloaded = 42;
|
||||||
translators = NULL;
|
|
||||||
BTranslatorRoster *proster = BTranslatorRoster::Default();
|
BTranslatorRoster *proster = BTranslatorRoster::Default();
|
||||||
CPPUNIT_ASSERT(
|
CPPUNIT_ASSERT(
|
||||||
proster->GetAllTranslators(&translators, &num_translators) == B_NO_ERROR);
|
proster->GetAllTranslators(&pids, &nloaded) == B_NO_ERROR);
|
||||||
|
CPPUNIT_ASSERT(nloaded > 0);
|
||||||
NextSubTest();
|
CPPUNIT_ASSERT(pids != NULL);
|
||||||
CPPUNIT_ASSERT(num_translators > 0);
|
|
||||||
|
|
||||||
|
// Make sure the correct translators were loaded
|
||||||
NextSubTest();
|
NextSubTest();
|
||||||
for (int32 i = 0; i < num_translators; i++)
|
const char *kaTranslatorNames[] = {
|
||||||
CPPUNIT_ASSERT(translators[i] > 0);
|
"Gobe MS-WORD Translator",
|
||||||
|
"Gobe Text Translator",
|
||||||
|
"TIFF Images",
|
||||||
|
"Gobe SYLK Translator",
|
||||||
|
"StyledEdit Files",
|
||||||
|
"Gobe RTF Translator",
|
||||||
|
"PPM Images",
|
||||||
|
"JPEG Images",
|
||||||
|
"Gobe HTML Translator",
|
||||||
|
"Gobe Excel Translator",
|
||||||
|
"TGA Images",
|
||||||
|
"MNGTranslator",
|
||||||
|
"GIMPPatternHandler",
|
||||||
|
"TestBmpTranslator",
|
||||||
|
"BMP Images",
|
||||||
|
"BBitmap Images"
|
||||||
|
};
|
||||||
|
CPPUNIT_ASSERT(nloaded == sizeof(kaTranslatorNames) /
|
||||||
|
sizeof(const char *));
|
||||||
|
|
||||||
|
for (int32 i = 0; i < nloaded; i++) {
|
||||||
|
const char *kTranslatorName, *kTranslatorInfo;
|
||||||
|
int32 nTranslatorVersion;
|
||||||
|
|
||||||
|
CPPUNIT_ASSERT(pids[i] > 0);
|
||||||
|
|
||||||
|
kTranslatorName = kTranslatorInfo = NULL;
|
||||||
|
nTranslatorVersion = -246;
|
||||||
|
|
||||||
|
proster->GetTranslatorInfo(pids[i], &kTranslatorName,
|
||||||
|
&kTranslatorInfo, &nTranslatorVersion);
|
||||||
|
|
||||||
|
CPPUNIT_ASSERT(kTranslatorName);
|
||||||
|
CPPUNIT_ASSERT(kTranslatorInfo);
|
||||||
|
CPPUNIT_ASSERT(nTranslatorVersion > 0);
|
||||||
|
|
||||||
|
// make sure each translator is loaded exactly once
|
||||||
|
// no more, no less
|
||||||
|
int32 npassed = 0;
|
||||||
|
for (int32 k = 0; k < nloaded; k++) {
|
||||||
|
if (!strcmp(kaTranslatorNames[k], kTranslatorName))
|
||||||
|
npassed++;
|
||||||
|
}
|
||||||
|
CPPUNIT_ASSERT(npassed == 1);
|
||||||
|
}
|
||||||
|
|
||||||
delete [] translators;
|
delete[] pids;
|
||||||
|
pids = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -335,7 +443,8 @@ void TranslatorRosterTest::GetConfigurationMessageTest() {
|
|||||||
translator_id* translators;
|
translator_id* translators;
|
||||||
proster->GetAllTranslators(&translators, &num_translators);
|
proster->GetAllTranslators(&translators, &num_translators);
|
||||||
translatorid = translators[0];
|
translatorid = translators[0];
|
||||||
delete [] translators;
|
delete[] translators;
|
||||||
|
translators = NULL;
|
||||||
|
|
||||||
//get conf for invalid translator
|
//get conf for invalid translator
|
||||||
CPPUNIT_ASSERT(proster->GetConfigurationMessage(-1, &translator_message) == B_NO_TRANSLATOR);
|
CPPUNIT_ASSERT(proster->GetConfigurationMessage(-1, &translator_message) == B_NO_TRANSLATOR);
|
||||||
@@ -416,7 +525,8 @@ void TranslatorRosterTest::GetTranslatorInfoTest() {
|
|||||||
NextSubTest();
|
NextSubTest();
|
||||||
CPPUNIT_ASSERT(proster->GetTranslatorInfo(translators[i], &outName, &outInfo, &outVersion) == B_OK);
|
CPPUNIT_ASSERT(proster->GetTranslatorInfo(translators[i], &outName, &outInfo, &outVersion) == B_OK);
|
||||||
}
|
}
|
||||||
delete [] translators;
|
delete[] translators;
|
||||||
|
translators = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -459,7 +569,8 @@ void TranslatorRosterTest::GetTranslatorsTest() {
|
|||||||
|
|
||||||
CPPUNIT_ASSERT(outCount > 0);
|
CPPUNIT_ASSERT(outCount > 0);
|
||||||
|
|
||||||
delete [] info;
|
delete[] info;
|
||||||
|
info = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -496,6 +607,7 @@ void TranslatorRosterTest::IdentifyTest() {
|
|||||||
CPPUNIT_ASSERT(proster->Identify(&image, NULL, info) == B_OK);
|
CPPUNIT_ASSERT(proster->Identify(&image, NULL, info) == B_OK);
|
||||||
|
|
||||||
delete info;
|
delete info;
|
||||||
|
info = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -522,7 +634,8 @@ void TranslatorRosterTest::MakeConfigurationViewTest() {
|
|||||||
CPPUNIT_ASSERT(extent.IsValid() == true);
|
CPPUNIT_ASSERT(extent.IsValid() == true);
|
||||||
|
|
||||||
//clean up after ourselves
|
//clean up after ourselves
|
||||||
delete [] translators;
|
delete[] translators;
|
||||||
|
translators = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -547,7 +660,7 @@ void TranslatorRosterTest::TranslateTest() {
|
|||||||
|
|
||||||
//output file
|
//output file
|
||||||
NextSubTest();
|
NextSubTest();
|
||||||
BFile output("../src/tests/kits/translation/data/images/image.out.png",
|
BFile output("../src/tests/kits/translation/data/images/image.out.tga",
|
||||||
B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE);
|
B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE);
|
||||||
CPPUNIT_ASSERT(output.InitCheck() == B_OK);
|
CPPUNIT_ASSERT(output.InitCheck() == B_OK);
|
||||||
|
|
||||||
@@ -562,7 +675,7 @@ void TranslatorRosterTest::TranslateTest() {
|
|||||||
|
|
||||||
//translate to specific
|
//translate to specific
|
||||||
NextSubTest();
|
NextSubTest();
|
||||||
CPPUNIT_ASSERT(proster->Translate(&temp, NULL, NULL, &output, B_PNG_FORMAT) == B_OK);
|
CPPUNIT_ASSERT(proster->Translate(&temp, NULL, NULL, &output, B_TGA_FORMAT) == B_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
|
|||||||
Reference in New Issue
Block a user