1/*****************************************************************************/ 2// Haiku Translation Kit Test 3// Author: Michael Wilber 4// Version: 5// 6// This is the Test application for BTranslator 7// 8// 9// This application and all source files used in its construction, except 10// where noted, are licensed under the MIT License, and have been written 11// and are: 12// 13// Copyright (c) 2002 Haiku Project 14// 15// Permission is hereby granted, free of charge, to any person obtaining a 16// copy of this software and associated documentation files (the "Software"), 17// to deal in the Software without restriction, including without limitation 18// the rights to use, copy, modify, merge, publish, distribute, sublicense, 19// and/or sell copies of the Software, and to permit persons to whom the 20// Software is furnished to do so, subject to the following conditions: 21// 22// The above copyright notice and this permission notice shall be included 23// in all copies or substantial portions of the Software. 24// 25// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 26// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 27// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 28// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 29// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 30// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 31// DEALINGS IN THE SOFTWARE. 32/*****************************************************************************/ 33#include "TranslatorTest.h" 34#include <TranslatorRoster.h> 35#include <Application.h> 36#include <OS.h> 37#include <stdio.h> 38 39/* cppunit framework */ 40#include <cppunit/Test.h> 41#include <cppunit/TestCaller.h> 42#include <cppunit/TestSuite.h> 43 44// BTranslator derived class to test with 45class BTranslatorTester : public BTranslator { 46public: 47 BTranslatorTester(); 48 49 virtual const char *TranslatorName() const { return "NoName"; }; 50 virtual const char *TranslatorInfo() const { return "NoInfo"; }; 51 virtual int32 TranslatorVersion() const { return 100; }; 52 53 virtual const translation_format *InputFormats(int32 *out_count) const; 54 virtual const translation_format *OutputFormats(int32 *out_count) const; 55 56 virtual status_t Identify(BPositionIO *inSource, 57 const translation_format *inFormat, BMessage *ioExtension, 58 translator_info *outInfo, uint32 outType) { return B_ERROR; }; 59 60 virtual status_t Translate(BPositionIO *inSource, 61 const translator_info *inInfo, BMessage *ioExtension, 62 uint32 outType, BPositionIO *outDestination) { return B_ERROR; }; 63}; 64 65BTranslatorTester::BTranslatorTester() 66 : BTranslator() 67{ 68} 69 70const translation_format * 71BTranslatorTester::InputFormats(int32 *out_count) const 72{ 73 if (out_count) *out_count = 0; 74 return NULL; 75} 76 77const translation_format * 78BTranslatorTester::OutputFormats(int32 *out_count) const 79{ 80 if (out_count) *out_count = 0; 81 return NULL; 82} 83 84/** 85 * Default constructor - no work 86 */ 87TranslatorTest::TranslatorTest(std::string name) 88 : BTestCase(name) 89{ 90} 91 92/** 93 * Default destructor - no work 94 */ 95TranslatorTest::~TranslatorTest() 96{ 97} 98 99CppUnit::Test * 100TranslatorTest::Suite() 101{ 102 /* create our suite */ 103 CppUnit::TestSuite *suite = new CppUnit::TestSuite("Translator"); 104 105 /* add suckers */ 106 suite->addTest(new CppUnit::TestCaller<TranslatorTest>("TranslatorTest::AcquireRelease Test", &TranslatorTest::AcquireReleaseTest)); 107 suite->addTest(new CppUnit::TestCaller<TranslatorTest>("TranslatorTest::MakeConfigurationView Test", &TranslatorTest::MakeConfigurationViewTest)); 108 suite->addTest(new CppUnit::TestCaller<TranslatorTest>("TranslatorTest::GetConfigurationMessage Test", &TranslatorTest::GetConfigurationMessageTest)); 109 110 return suite; 111} 112 113void 114TranslatorTest::AcquireReleaseTest() 115{ 116 // Create new BTranslator 117 NextSubTest(); 118 BTranslatorTester *ptt = new BTranslatorTester(); 119 CPPUNIT_ASSERT(ptt); 120 BTranslator *ptranslator = static_cast<BTranslator *>(ptt); 121 CPPUNIT_ASSERT(ptranslator); 122 CPPUNIT_ASSERT(ptranslator->ReferenceCount() == 1); 123 124 // Do some Acquire()ing 125 NextSubTest(); 126 BTranslator *pcomptran; 127 pcomptran = ptranslator->Acquire(); 128 CPPUNIT_ASSERT(pcomptran == ptranslator); 129 CPPUNIT_ASSERT(ptranslator->ReferenceCount() == 2); 130 131 // Release() 132 NextSubTest(); 133 CPPUNIT_ASSERT(ptranslator->Release() == ptranslator); 134 CPPUNIT_ASSERT(ptranslator->ReferenceCount() == 1); 135 136 // Destroy 137 NextSubTest(); 138 CPPUNIT_ASSERT(ptranslator->Release() == NULL); 139 ptranslator = NULL; 140 ptt = NULL; 141 pcomptran = NULL; 142} 143 144void 145TranslatorTest::MakeConfigurationViewTest() 146{ 147 // Create new BTranslator 148 NextSubTest(); 149 BApplication app( 150 "application/x-vnd.OpenBeOS-translationkit_translatortest"); 151 BTranslatorTester *ptt = new BTranslatorTester(); 152 CPPUNIT_ASSERT(ptt); 153 BTranslator *ptranslator = static_cast<BTranslator *>(ptt); 154 CPPUNIT_ASSERT(ptranslator); 155 CPPUNIT_ASSERT(ptranslator->ReferenceCount() == 1); 156 157 // Try GetConfigurationMessage 158 NextSubTest(); 159 BMessage bmsg; 160 BView *pview = NULL; 161 BRect rect; 162 CPPUNIT_ASSERT(ptranslator->MakeConfigurationView(NULL, 163 NULL, NULL) == B_ERROR); 164 CPPUNIT_ASSERT(ptranslator->MakeConfigurationView(&bmsg, 165 &pview, &rect) == B_ERROR); 166 CPPUNIT_ASSERT(bmsg.IsEmpty() == true); 167 168 // Destroy 169 NextSubTest(); 170 CPPUNIT_ASSERT(ptranslator->Release() == NULL); 171 ptranslator = NULL; 172 ptt = NULL; 173} 174 175void 176TranslatorTest::GetConfigurationMessageTest() 177{ 178 // Create new BTranslator 179 NextSubTest(); 180 BTranslatorTester *ptt = new BTranslatorTester(); 181 CPPUNIT_ASSERT(ptt); 182 BTranslator *ptranslator = static_cast<BTranslator *>(ptt); 183 CPPUNIT_ASSERT(ptranslator); 184 CPPUNIT_ASSERT(ptranslator->ReferenceCount() == 1); 185 186 // Try GetConfigurationMessage 187 NextSubTest(); 188 BMessage bmsg; 189 CPPUNIT_ASSERT(ptranslator->GetConfigurationMessage(NULL) == B_ERROR); 190 CPPUNIT_ASSERT(ptranslator->GetConfigurationMessage(&bmsg) == B_ERROR); 191 CPPUNIT_ASSERT(bmsg.IsEmpty() == true); 192 193 // Destroy 194 NextSubTest(); 195 CPPUNIT_ASSERT(ptranslator->Release() == NULL); 196 ptranslator = NULL; 197 ptt = NULL; 198} 199 200