Files
2022-10-26 12:25:11 +08:00

161 lines
5.3 KiB
C++

#include "stdafx.h"
#include <gtest/gtest.h>
#include "DBCharacter.h"
#include <TinyXml/tinyxml.h>
#include <atltime.h>
TEST(DBCharacterTest, MemberSizeCheck)
{
DBCharacter dbcharacter;
//dbcharacter.Initialize();
printf("DBCharacter size is %d \n", \
sizeof(DBCharacter));
printf("DBCharacter_Achievements size is %d \n", \
sizeof(DBCharacter_Achievements)); // 14002
printf("REPURCHASITEM_TOTAL_INFO : %d\n", \
sizeof(REPURCHASITEM_TOTAL_INFO /*repurchase_items_*/)); // 226 byte
printf("CHAR_INVITATEDFRIEND_INFOs : %d\n", \
sizeof(CHAR_INVITATEDFRIEND_INFOs /*Invitatedfriend_count_*/)); // 1001 byte
printf("nsSlot::InventoryConfig : %d\n", \
sizeof(nsSlot::InventoryConfig /*inventory_config_*/)); // 20
printf("nsQuery::DBQueryProxyCharNode : %d\n", \
sizeof(nsQuery::DBQueryProxyCharNode /*db_query_node_*/)); // 34992 byte
;
printf("sQUERY_CHARACTER : %d\n", sizeof(sQUERY_CHARACTER));
}
void test_DBCharacterTest()
{
DBCharacter db_character;
TiXmlDocument doc;
TiXmlElement* toggle_info = new TiXmlElement("TOGGLE_ITEM");
doc.LinkEndChild(toggle_info);
//nsSlot::TOGGLE_ITEMS* toggle_item_info = db_character.GetToggleItemInfo();
//ToggleItemType toggle_item_enum[] = {
// kToggleItem_Badge,
// kToggleItem_Badge, // test
// kToggleItem_Badge, // test
//};
//for (int i = 0; i < sizeof(toggle_item_enum)/sizeof(toggle_item_enum[0]); i++)
//{
// ToggleItemType toggle_item_type = toggle_item_enum[i];
// TiXmlElement* item_info = new TiXmlElement("ITEM_INFO");
// item_info->SetAttribute("TYPE", toggle_item_type);
// item_info->SetAttribute("EQUIP", toggle_item_info[toggle_item_type].is_equiped_);
// item_info->SetAttribute("POS", toggle_item_info[toggle_item_type].item_pos_);
// item_info->SetAttribute("CODE", toggle_item_info[toggle_item_type].item_code_);
// toggle_info->LinkEndChild(item_info);
//}
int toggle_item_enum[] = {
1, 2, 3,
};
for (int i = 0; i < sizeof(toggle_item_enum)/sizeof(toggle_item_enum[0]); i++)
{
int toggle_item_type = toggle_item_enum[i];
TiXmlElement* item_info = new TiXmlElement("ITEM_INFO");
item_info->SetAttribute("TYPE", toggle_item_type);
item_info->SetAttribute("EQUIP", toggle_item_type);
item_info->SetAttribute("POS", toggle_item_type);
item_info->SetAttribute("CODE", toggle_item_type);
toggle_info->LinkEndChild(item_info);
}
//doc.Print();
TiXmlPrinter printer;
doc.Accept(&printer);
const char* xml_string = printer.CStr();
printf("%s", xml_string);
printf("%d", strlen(xml_string));
TiXmlDocument character_info_ex_doc;
character_info_ex_doc.Parse(xml_string);
;{
TiXmlPrinter printer;
doc.Accept(&printer);
const char* xml_string = printer.CStr();
printf("%s", xml_string);
printf("%d", strlen(xml_string));
};
TiXmlElement* toggle_item_elem = character_info_ex_doc.FirstChildElement("TOGGLE_ITEM");
if (toggle_item_elem)
{
for (TiXmlElement* elem = toggle_item_elem->FirstChildElement("ITEM_INFO");
elem; elem = elem->NextSiblingElement())
{
int toggle_item_type, is_equiped, item_pos, item_code;
elem->QueryIntAttribute("TYPE", &toggle_item_type);
elem->QueryIntAttribute("EQUIP", &is_equiped);
elem->QueryIntAttribute("POS", &item_pos);
elem->QueryIntAttribute("CODE", &item_code);
printf("%d, %d, %d, %d\n", toggle_item_type, is_equiped, item_pos, item_code);
}
}
}
void test_CTime_String()
{
CTime current_time = util::TimeSync::_time64(NULL);
TiXmlDocument doc;
TiXmlPrinter printer;
const char* xml_string = NULL;
char datetime_string[MAX_DATETIME_SIZE+1] = { 0, };
util::GetSQLDateTime_YYYYMMDDHHMMSSNNN( \
util::GetDateTime_YYYYMMDDHHMMSS(current_time.GetTime())*1000, datetime_string);
TiXmlElement* daily_quest_reset_time_elem = new TiXmlElement("DAILY_QUEST_RESET_TIME");
daily_quest_reset_time_elem->SetAttribute("TIME", datetime_string);
doc.LinkEndChild(daily_quest_reset_time_elem);
doc.Accept(&printer);
xml_string = printer.CStr();
printf("%s\n", xml_string);
//////////////////////////////////////////////////////////////////////////
const char* datetime = daily_quest_reset_time_elem->Attribute("TIME");
struct tm s_tm;
sscanf(datetime_string, "%4d-%2d-%2d %2d:%2d:%2d",
&s_tm.tm_year, &s_tm.tm_mon, &s_tm.tm_mday,
&s_tm.tm_hour, &s_tm.tm_min, &s_tm.tm_sec);
;{
CTime current_time = util::TimeSync::_time64(NULL);
CTime last_daily_init_time = CTime(current_time.GetYear(),
current_time.GetMonth(),
current_time.GetDay(),
4,
0,
0);
if (last_daily_init_time > current_time) {
last_daily_init_time -= CTimeSpan(1, 0, 0, 0);
}
DWORD64 last_init_time = util::GetDateTime_YYYYMMDDHHMMSS(last_daily_init_time.GetTime());
printf("%ld", last_init_time);
};
}
TEST(DBCharacterTest, xml_string_test)
{
test_DBCharacterTest();
test_CTime_String();
}