diff --git a/src/tests/kits/translation/TranslationUtilsTest.cpp b/src/tests/kits/translation/TranslationUtilsTest.cpp index 2769d4a1fa..62a378d248 100644 --- a/src/tests/kits/translation/TranslationUtilsTest.cpp +++ b/src/tests/kits/translation/TranslationUtilsTest.cpp @@ -36,6 +36,9 @@ // for B_TRANSLATOR_EXT_* #include #include +#include +#include +#include #include #include #include @@ -69,8 +72,7 @@ TranslationUtilsTest::Suite() /* add suckers */ suite->addTest(new CppUnit::TestCaller("TranslationUtilsTest::GetBitmap Test", &TranslationUtilsTest::GetBitmapTest)); - suite->addTest(new CppUnit::TestCaller("TranslationUtilsTest::GetStyledText Test", &TranslationUtilsTest::GetStyledTextTest)); - suite->addTest(new CppUnit::TestCaller("TranslationUtilsTest::PutStyledText Test", &TranslationUtilsTest::PutStyledTextTest)); + suite->addTest(new CppUnit::TestCaller("TranslationUtilsTest::GetPutStyledText Test", &TranslationUtilsTest::GetPutStyledTextTest)); suite->addTest(new CppUnit::TestCaller("TranslationUtilsTest::GetDefaultSettings Test", &TranslationUtilsTest::GetDefaultSettingsTest)); suite->addTest(new CppUnit::TestCaller("TranslationUtilsTest::AddTranslationItems Test", &TranslationUtilsTest::AddTranslationItemsTest)); @@ -102,6 +104,10 @@ TranslationUtilsTest::GetBitmapTest() delete pbits; pbits = NULL; + // File (passing it a file that isn't actually there) + pbits = BTranslationUtils::GetBitmap("/tmp/no-file-here.bmp"); + CPPUNIT_ASSERT(pbits == NULL); + // File (GetBitmapFile) NextSubTest(); pbits = BTranslationUtils::GetBitmapFile( @@ -110,6 +116,11 @@ TranslationUtilsTest::GetBitmapTest() delete pbits; pbits = NULL; + // File (passing GetBitmapFile a file that isn't there) + NextSubTest(); + pbits = BTranslationUtils::GetBitmapFile("/tmp/no-file-here.bmp"); + CPPUNIT_ASSERT(pbits == NULL); + // File (entry_ref) NextSubTest(); entry_ref ref; @@ -122,6 +133,12 @@ TranslationUtilsTest::GetBitmapTest() delete pbits; pbits = NULL; + // File (NULL entry_ref) + NextSubTest(); + entry_ref *pref = NULL; + pbits = BTranslationUtils::GetBitmap(pref); + CPPUNIT_ASSERT(pbits == NULL); + // Resource NextSubTest(); pbits = BTranslationUtils::GetBitmap("res_image"); @@ -129,6 +146,11 @@ TranslationUtilsTest::GetBitmapTest() delete pbits; pbits = NULL; + // Resource (bad resource name) + NextSubTest(); + pbits = BTranslationUtils::GetBitmap("Michael Wilber"); + CPPUNIT_ASSERT(pbits == NULL); + // Resource by Type & Id NextSubTest(); pbits = BTranslationUtils::GetBitmap( @@ -137,6 +159,17 @@ TranslationUtilsTest::GetBitmapTest() delete pbits; pbits = NULL; + // Resource by Type & Id (wrong resource type) + NextSubTest(); + pbits = BTranslationUtils::GetBitmap(B_TRANSLATOR_TEXT, 246); + CPPUNIT_ASSERT(pbits == NULL); + + // Resource by Type & Id (wrong resource Id) + NextSubTest(); + pbits = BTranslationUtils::GetBitmap(B_TRANSLATOR_BITMAP, + 166); + CPPUNIT_ASSERT(pbits == NULL); + // Resource by Type & Name NextSubTest(); pbits = BTranslationUtils::GetBitmap( @@ -145,6 +178,18 @@ TranslationUtilsTest::GetBitmapTest() delete pbits; pbits = NULL; + // Resource by Type & Name (wrong resource type) + NextSubTest(); + pbits = BTranslationUtils::GetBitmap(B_TRANSLATOR_TEXT, + "res_image"); + CPPUNIT_ASSERT(pbits == NULL); + + // Resource by Type & Name (wrong resource name) + NextSubTest(); + pbits = BTranslationUtils::GetBitmap(B_TRANSLATOR_BITMAP, + "Michael Wilber"); + CPPUNIT_ASSERT(pbits == NULL); + // Stream (open file, translate to BBitmapStream, // pass that BBitmapStream to GetBitmap) NextSubTest(); @@ -164,15 +209,68 @@ TranslationUtilsTest::GetBitmapTest() } void -TranslationUtilsTest::GetStyledTextTest() +TranslationUtilsTest::GetPutStyledTextTest() { + // Insert text into view with styles OFF NextSubTest(); -} - -void -TranslationUtilsTest::PutStyledTextTest() -{ + BApplication app( + "application/x-vnd.OpenBeOS-translationkit_translationutilstest"); + BTextView *ptextview = NULL; + ptextview = new BTextView(BRect(0, 0, 100, 100), + "utilstest_textview", BRect(0, 0, 100, 100), + B_FOLLOW_ALL_SIDES, B_WILL_DRAW | B_PULSE_NEEDED); + CPPUNIT_ASSERT(ptextview); + ptextview->SetStylable(false); + BFile stylfile( + "../src/tests/kits/translation/data/styled_text.stxt", + B_READ_ONLY); + CPPUNIT_ASSERT(stylfile.InitCheck() == B_OK); + CPPUNIT_ASSERT(BTranslationUtils::GetStyledText(&stylfile, ptextview) == B_OK); + CPPUNIT_ASSERT(ptextview->TextLength() == 77); + CPPUNIT_ASSERT(strcmp(ptextview->Text(), + "Ask not what open source can do for you, ask what you can do for open source.") == 0); + + // Insert text into view with styles ON NextSubTest(); + ptextview->SetText(""); + CPPUNIT_ASSERT(ptextview->TextLength() == 0); + ptextview->SetStylable(true); + CPPUNIT_ASSERT(BTranslationUtils::GetStyledText(&stylfile, ptextview) == B_OK); + CPPUNIT_ASSERT(ptextview->TextLength() == 77); + CPPUNIT_ASSERT(strcmp(ptextview->Text(), + "Ask not what open source can do for you, ask what you can do for open source.") == 0); + + // Write current contents of the BTextView to a file, and make + // sure that it matches the source file exactly + NextSubTest(); + BFile tmpfile("/tmp/out_styled_text.stxt", B_READ_WRITE | B_CREATE_FILE | B_ERASE_FILE); + CPPUNIT_ASSERT(tmpfile.InitCheck() == B_OK); + CPPUNIT_ASSERT(BTranslationUtils::PutStyledText(ptextview, &tmpfile) == B_OK); + off_t stylsize = 0, tmpsize = 0; + CPPUNIT_ASSERT(stylfile.GetSize(&stylsize) == B_OK); + CPPUNIT_ASSERT(tmpfile.GetSize(&tmpsize) == B_OK); + CPPUNIT_ASSERT(stylsize == tmpsize); + char *stylbuf = NULL, *tmpbuf = NULL; + stylbuf = new char[stylsize]; + tmpbuf = new char[tmpsize]; + CPPUNIT_ASSERT(stylbuf && tmpbuf); + CPPUNIT_ASSERT(stylfile.ReadAt(0, stylbuf, stylsize) == stylsize); + CPPUNIT_ASSERT(tmpfile.ReadAt(0, tmpbuf, tmpsize) == tmpsize); + CPPUNIT_ASSERT(memcmp(stylbuf, tmpbuf, stylsize) == 0); + delete[] stylbuf; + delete[] tmpbuf; + stylbuf = NULL; + tmpbuf = NULL; + + // Send NULL pointers to GetStyledText + NextSubTest(); + CPPUNIT_ASSERT(BTranslationUtils::GetStyledText(NULL, ptextview) == B_BAD_VALUE); + CPPUNIT_ASSERT(BTranslationUtils::GetStyledText(&stylfile, NULL) == B_BAD_VALUE); + + // Send NULL pointers to PutStyledText + NextSubTest(); + CPPUNIT_ASSERT(BTranslationUtils::PutStyledText(NULL, &tmpfile) == B_BAD_VALUE); + CPPUNIT_ASSERT(BTranslationUtils::PutStyledText(ptextview, NULL) == B_BAD_VALUE); } void @@ -216,11 +314,62 @@ TranslationUtilsTest::GetDefaultSettingsTest() CPPUNIT_ASSERT(pmsg->FindBool("tga /rle", &bdummy) == B_OK); delete pmsg; pmsg = NULL; + + // Try to get a translator that isn't there + NextSubTest(); + pmsg = BTranslationUtils::GetDefaultSettings("Michael Wilber", 0); + CPPUNIT_ASSERT(pmsg == NULL); + + // Try to get a version of a translator that we don't have + NextSubTest(); + pmsg = BTranslationUtils::GetDefaultSettings("PPM Images", 1); + CPPUNIT_ASSERT(pmsg == NULL); } void TranslationUtilsTest::AddTranslationItemsTest() { + // Make menu of bitmap translators NextSubTest(); + BApplication app( + "application/x-vnd.OpenBeOS-translationkit_translationutilstest"); + BMenu *pmenu = new BMenu("utilstest_menu"); + CPPUNIT_ASSERT(pmenu); + CPPUNIT_ASSERT(BTranslationUtils::AddTranslationItems(pmenu, + B_TRANSLATOR_BITMAP) == B_OK); + CPPUNIT_ASSERT(pmenu->CountItems() > 0); + + // Make menu of text translators + NextSubTest(); + int32 nitem = 0; + while (pmenu->CountItems()) + delete pmenu->RemoveItem(nitem); + CPPUNIT_ASSERT(pmenu->CountItems() == 0); + CPPUNIT_ASSERT(BTranslationUtils::AddTranslationItems(pmenu, + B_TRANSLATOR_TEXT) == B_OK); + CPPUNIT_ASSERT(pmenu->CountItems() > 0); + + // Make menu of 1 translator + NextSubTest(); + while (pmenu->CountItems()) + delete pmenu->RemoveItem(nitem); + CPPUNIT_ASSERT(pmenu->CountItems() == 0); + BTranslatorRoster *proster = new BTranslatorRoster(); + CPPUNIT_ASSERT(proster); + CPPUNIT_ASSERT(proster->AddTranslators( + "/boot/beos/system/add-ons/Translators/PPMTranslator") == B_OK); + CPPUNIT_ASSERT(BTranslationUtils::AddTranslationItems(pmenu, + B_TRANSLATOR_BITMAP, NULL, NULL, NULL, proster) == B_OK); + CPPUNIT_ASSERT(pmenu->CountItems() == 1); + delete proster; + proster = NULL; + + delete pmenu; + pmenu = NULL; + + // Bad Input + NextSubTest(); + CPPUNIT_ASSERT(BTranslationUtils::AddTranslationItems(NULL, + B_TRANSLATOR_BITMAP) == B_BAD_VALUE); } diff --git a/src/tests/kits/translation/TranslationUtilsTest.h b/src/tests/kits/translation/TranslationUtilsTest.h index e6c4b435a6..d63c140e01 100644 --- a/src/tests/kits/translation/TranslationUtilsTest.h +++ b/src/tests/kits/translation/TranslationUtilsTest.h @@ -49,8 +49,7 @@ public: //actual tests void GetBitmapTest(); - void GetStyledTextTest(); - void PutStyledTextTest(); + void GetPutStyledTextTest(); void GetDefaultSettingsTest(); void AddTranslationItemsTest();