** Copyright 2003, Oliver Tappe, zooey@hirschkaefer.de. All rights reserved.
** Distributed under the terms of the MIT License.
*/
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <CatalogInAddOn.h>
#include <DefaultCatalog.h>
class CatalogTestAddOn {
public:
void Run();
void Check();
};
#define B_TRANSLATION_CONTEXT "CatalogTestAddOn"
#define catSig "add-ons/catalogTest/catalogTestAddOn"
#define catName catSig".catalog"
void
CatalogTestAddOn::Run() {
printf("addon...");
status_t res;
BString s;
s << "string" << "\x01" << B_TRANSLATION_CONTEXT << "\x01";
size_t hashVal = CatKey::HashFun(s.String());
assert(be_locale != NULL);
system("mkdir -p ./locale/catalogs/"catSig);
BPrivate::EditableCatalog cat1("Default", catSig, "German");
assert(cat1.InitCheck() == B_OK);
res = cat1.SetString("string", "Schnur_A", B_TRANSLATION_CONTEXT);
assert(res == B_OK);
res = cat1.SetString(hashVal, "Schnur_id_A");
assert(res == B_OK);
res = cat1.SetString("string", "String_A", "programming");
assert(res == B_OK);
res = cat1.SetString("string", "Textpuffer_A", "programming",
"Deutsches Fachbuch");
assert(res == B_OK);
res = cat1.SetString("string", "Leine_A", B_TRANSLATION_CONTEXT,
"Deutsches Fachbuch");
assert(res == B_OK);
res = cat1.WriteToFile("./locale/catalogs/"catSig"/german.catalog");
assert(res == B_OK);
s = cat1.GetString("string", B_TRANSLATION_CONTEXT);
assert(s == "Schnur_A");
s = cat1.GetString(hashVal);
assert(s == "Schnur_id_A");
s = cat1.GetString("string", "programming");
assert(s == "String_A");
s = cat1.GetString("string", "programming", "Deutsches Fachbuch");
assert(s == "Textpuffer_A");
s = cat1.GetString("string", B_TRANSLATION_CONTEXT, "Deutsches Fachbuch");
assert(s == "Leine_A");
BPrivate::EditableCatalog cat2("Default", catSig, "English");
assert(cat2.InitCheck() == B_OK);
res = cat2.SetString("string", "string_A", "base");
assert(res == B_OK);
res = cat2.SetString(32, "hashed string_A");
assert(res == B_OK);
res = cat2.SetString("string", "hidden_A", B_TRANSLATION_CONTEXT);
assert(res == B_OK);
entry_ref addOnRef;
res = get_add_on_ref(&addOnRef);
assert(res == B_OK);
res = cat2.WriteToResource(&addOnRef);
assert(res == B_OK);
printf("ok.\n");
Check();
}
void
CatalogTestAddOn::Check() {
status_t res;
printf("addon-check...");
BString s;
s << "string" << "\x01" << B_TRANSLATION_CONTEXT << "\x01";
size_t hashVal = CatKey::HashFun(s.String());
BCatalog cat;
res = get_add_on_catalog(&cat, catSig);
assert(res == B_OK);
uint32 fingerprint;
res = cat.GetFingerprint(&fingerprint);
assert(res == B_OK);
BString lang;
res = cat.GetLanguage(&lang);
assert(res == B_OK);
assert(lang == "german");
BString sig;
res = cat.GetSignature(&sig);
assert(res == B_OK);
assert(sig == catSig);
s = B_TRANSLATE_ID(hashVal);
assert(s == "Schnur_id_A");
s = B_TRANSLATE_ALL("string", "programming", "");
assert(s == "String_A");
s = B_TRANSLATE_ALL("string", "programming", "Deutsches Fachbuch");
assert(s == "Textpuffer_A");
s = B_TRANSLATE_COMMENT("string", "Deutsches Fachbuch");
assert(s == "Leine_A");
s = B_TRANSLATE_ALL("string", "base", "");
assert(s == "string_A");
s = B_TRANSLATE_ID(32);
assert(s == "hashed string_A");
s = B_TRANSLATE_ID(-1);
assert(s == "");
s = B_TRANSLATE("string");
assert(s == "Schnur_A");
BCatalog appCat;
res = be_locale->GetAppCatalog(&appCat);
assert(res == B_OK);
s = be_app_catalog->GetString("string", "CatalogTest");
assert(s == "Schnur");
s = be_app_catalog->GetString("string", "CatalogTest",
"Deutsches Fachbuch");
assert(s == "Leine");
s = be_app_catalog->GetString("string", "programming",
"Deutsches Fachbuch");
assert(s == "Textpuffer");
printf("ok.\n");
}
extern "C" _EXPORT void run_test_add_on()
{
CatalogTestAddOn catTest;
catTest.Run();
}