GTEST_TEST_F(LocString, readLocString) { static const byte kData[] = { 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x46, 0xC3, 0xB6, 0xC3, 0xB6, 0x62, 0xC3, 0xA4, 0x72, 0x30, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x46, 0xC3, 0xB6, 0xC3, 0xB6, 0x62, 0xC3, 0xA4, 0x72, 0x31 }; Common::MemoryReadStream stream(kData); Aurora::LocString locString; locString.readLocString(stream); EXPECT_EQ(locString.getID(), 23); EXPECT_TRUE(locString.hasString(Aurora::kLanguageEnglish, Aurora::kLanguageGenderMale )); EXPECT_TRUE(locString.hasString(Aurora::kLanguageEnglish, Aurora::kLanguageGenderFemale)); EXPECT_STREQ(locString.getString(Aurora::kLanguageEnglish, Aurora::kLanguageGenderMale ).c_str(), kUTF8String0); EXPECT_STREQ(locString.getString(Aurora::kLanguageEnglish, Aurora::kLanguageGenderFemale).c_str(), kUTF8String1); EXPECT_STREQ(locString.getFirstString().c_str(), kUTF8String0); EXPECT_STREQ(locString.getString().c_str(), kUTF8String0); }
GTEST_TEST_F(LocString, setID) { Aurora::LocString locString; locString.setID(23); EXPECT_EQ(locString.getID(), 23); }
void GFF3Dumper::dumpField(const Aurora::GFF3Struct &strct, const Common::UString &field) { Aurora::GFF3Struct::FieldType type = strct.getType(field); Common::UString typeName; if (((size_t) type) < ARRAYSIZE(kGFF3FieldTypeNames)) typeName = kGFF3FieldTypeNames[(int)type]; else typeName = "filetype" + Common::composeString((uint64) type); Common::UString label = field; // Structs already open their own tag if (type != Aurora::GFF3Struct::kFieldTypeStruct) { _xml->openTag(typeName); _xml->addProperty("label", label); } switch (type) { case Aurora::GFF3Struct::kFieldTypeChar: _xml->setContents(Common::composeString(strct.getUint(field))); break; case Aurora::GFF3Struct::kFieldTypeByte: case Aurora::GFF3Struct::kFieldTypeUint16: case Aurora::GFF3Struct::kFieldTypeUint32: case Aurora::GFF3Struct::kFieldTypeUint64: _xml->setContents(Common::composeString(strct.getUint(field))); break; case Aurora::GFF3Struct::kFieldTypeSint16: case Aurora::GFF3Struct::kFieldTypeSint32: case Aurora::GFF3Struct::kFieldTypeSint64: _xml->setContents(Common::composeString(strct.getSint(field))); break; case Aurora::GFF3Struct::kFieldTypeFloat: case Aurora::GFF3Struct::kFieldTypeDouble: _xml->setContents(Common::UString::format("%.6f", strct.getDouble(field))); break; case Aurora::GFF3Struct::kFieldTypeStrRef: _xml->setContents(strct.getString(field)); break; case Aurora::GFF3Struct::kFieldTypeExoString: case Aurora::GFF3Struct::kFieldTypeResRef: try { _xml->setContents(strct.getString(field)); } catch (...) { _xml->addProperty("base64", "true"); Common::SeekableReadStream *data = strct.getData(field); _xml->setContents(*data); delete data; } break; case Aurora::GFF3Struct::kFieldTypeLocString: { Aurora::LocString locString; strct.getLocString(field, locString); _xml->addProperty("strref", Common::composeString(locString.getID())); dumpLocString(locString); } break; case Aurora::GFF3Struct::kFieldTypeVoid: _xml->setContents(*strct.getData(field)); break; case Aurora::GFF3Struct::kFieldTypeStruct: dumpStruct(strct.getStruct(field), label); break; case Aurora::GFF3Struct::kFieldTypeList: dumpList(strct.getList(field)); break; case Aurora::GFF3Struct::kFieldTypeOrientation: { double a = 0.0, b = 0.0, c = 0.0, d = 0.0; strct.getOrientation(field, a, b, c, d); _xml->breakLine(); _xml->openTag("double"); _xml->setContents(Common::UString::format("%.6f", a)); _xml->closeTag(); _xml->breakLine(); _xml->openTag("double"); _xml->setContents(Common::UString::format("%.6f", b)); _xml->closeTag(); _xml->breakLine(); _xml->openTag("double"); _xml->setContents(Common::UString::format("%.6f", c)); _xml->closeTag(); _xml->breakLine(); _xml->openTag("double"); _xml->setContents(Common::UString::format("%.6f", d)); _xml->closeTag(); _xml->breakLine(); } break; case Aurora::GFF3Struct::kFieldTypeVector: { double x = 0.0, y = 0.0, z = 0.0; strct.getVector(field, x, y, z); _xml->breakLine(); _xml->openTag("double"); _xml->setContents(Common::UString::format("%.6f", x)); _xml->closeTag(); _xml->breakLine(); _xml->openTag("double"); _xml->setContents(Common::UString::format("%.6f", y)); _xml->closeTag(); _xml->breakLine(); _xml->openTag("double"); _xml->setContents(Common::UString::format("%.6f", z)); _xml->closeTag(); _xml->breakLine(); } break; default: break; } // Structs already close their own tag if (type != Aurora::GFF3Struct::kFieldTypeStruct) { _xml->closeTag(); _xml->breakLine(); } }