From 7663ea012e9b66ccb1864dfba8169575893886e7 Mon Sep 17 00:00:00 2001 From: p9evjq4zb <2175226286@qq.com> Date: Mon, 20 Jan 2025 17:01:17 +0800 Subject: [PATCH] ADD file via upload --- inifile_test.cpp | 288 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 288 insertions(+) create mode 100644 inifile_test.cpp diff --git a/inifile_test.cpp b/inifile_test.cpp new file mode 100644 index 0000000..e4dae6f --- /dev/null +++ b/inifile_test.cpp @@ -0,0 +1,288 @@ +#include +#include +#include +#include "gtest/gtest.h" +#define private public +#define protected public + +#include "inifile.h" + +using std::cout; +using std::endl; + +using namespace inifile; +namespace { +TEST(inifile, trim) +{ + string buf = " aaa "; + IniFile::trim(buf); + + EXPECT_EQ(buf, string("aaa")); + + buf = " aaa"; + IniFile::trim(buf); + EXPECT_EQ(buf, string("aaa")); + + buf = "aaa "; + IniFile::trim(buf); + EXPECT_EQ(buf, string("aaa")); +} + +TEST(inifile, trimleft) +{ + string p = " aaa "; + IniFile::trimleft(p); + + EXPECT_EQ(p, string("aaa ")); + + p = " aaa"; + IniFile::trimleft(p); + EXPECT_EQ(p, string("aaa")); + + p = "aaa "; + IniFile::trimleft(p); + EXPECT_EQ(p, string("aaa ")); +} + +TEST(inifile, trimright) +{ + string p = " aaa "; + IniFile::trimright(p); + + EXPECT_EQ(p, string(" aaa")); + + p = " aaa"; + IniFile::trimright(p); + EXPECT_EQ(p, string(" aaa")); + + p = "aaa "; + IniFile::trimright(p); + EXPECT_EQ(p, string("aaa")); +} + +//////////////////////////// + +TEST(IniFile, pasre) +{ + IniFile section; + string s = "DB=sys"; + string key, value; + + EXPECT_EQ(section.parse(s, &key, &value), true); + EXPECT_EQ(key, "DB"); + EXPECT_EQ(value, "sys"); + + s = "DB"; + key = value = ""; + + EXPECT_EQ(section.parse(s, &key, &value), false); + + s = "DB="; + key = value = ""; + + EXPECT_EQ(section.parse(s, &key, &value), true); + EXPECT_EQ(key, "DB"); + EXPECT_EQ(value, ""); + + s = "=sys"; + key = value = ""; + + EXPECT_EQ(section.parse(s, &key, &value), true); + EXPECT_EQ(key, ""); + EXPECT_EQ(value, "sys"); +} + +TEST(IniFile, hasSection_and_getValue) +{ + // create a new ini file + char filepath[] = "test.ini"; + FILE *fp = fopen(filepath, "w+"); + char content[] = " USER=root \r\n [COMMON] \n DB=sys \nPASSWD=tt \n#commit \n #--------- \n[DEFINE] \nname=cxy\nvalue=1\nbooltest=True #测试\n"; + fwrite(content, 1, strlen(content), fp); + fclose(fp); + + // test + IniFile ini; + ini.Load(filepath); + + EXPECT_EQ(ini.HasSection(string("")), true); + EXPECT_EQ(ini.HasSection("COMMON"), true); + EXPECT_EQ(ini.HasSection("DEFINE"), true); + EXPECT_EQ(ini.HasSection("ss"), false); + + string value; + int intValue; + bool boolValue; + EXPECT_EQ(ini.GetStringValue("", "USER", &value), 0); + EXPECT_EQ(value, string("root")); + EXPECT_EQ(ini.GetStringValue("COMMON", "DB", &value), 0); + EXPECT_EQ(value, string("sys")); + EXPECT_EQ(ini.GetStringValue("COMMON", "PASSWD", &value), 0); + EXPECT_EQ(value, string("tt")); + EXPECT_EQ(ini.GetStringValue("DEFINE", "name", &value), 0); + EXPECT_EQ(value, string("cxy")); + EXPECT_EQ(ini.GetIntValue("DEFINE", "value", &intValue), 0); + EXPECT_EQ(intValue, 1); + EXPECT_EQ(ini.GetBoolValue("DEFINE", "booltest", &boolValue), 0); + EXPECT_EQ(boolValue, true); +} + +TEST(IniFile, getValue) +{ + // write config + char filepath[] = "getValueTest.ini"; + FILE *fp = fopen(filepath, "w"); + char content[] = " USER=root \r\n [COMMON] \n DB=sys \nPASSWD=tt \nPASSWD=dd \n#commit \n ;--------- \n[DEFINE] \nname=cxy\nvalue=1 #test"; + fwrite(content, sizeof(char), strlen(content), fp); + fclose(fp); + + // read config + IniFile ini; + ini.Load(filepath); + string value; + vector valueList; + ini.getValue("", "USER", &value); + EXPECT_EQ(value, string("root")); + ini.getValue("COMMON", "DB", &value); + EXPECT_EQ(value, string("sys")); + ini.GetValues("COMMON", "PASSWD", &valueList); + EXPECT_EQ(valueList.size(), 2); + EXPECT_EQ(valueList[0], string("tt")); + EXPECT_EQ(valueList[1], string("dd")); +} + +TEST(IniFile, reopen) +{ + // create a new ini file + char filepath[] = "test.ini"; + FILE *fp = fopen(filepath, "w"); + char content[] = " USER=root \r\n [COMMON] \n DB=sys \nPASSWD=tt \n#commit \n #--------- \n[DEFINE] \nname=cxy\n"; + fwrite(content, sizeof(char), strlen(content), fp); + fclose(fp); + + // test + IniFile ini; + ini.Load(filepath); + + // reopen + + fp = fopen(filepath, "w"); + strcpy(content, " USER=root2 \r\n [COMMON] \n DB=sys2 \n\n#commit \n #--------- \n\n\n"); + fwrite(content, sizeof(char), strlen(content), fp); + fclose(fp); + + // test + ini.Load(filepath); + + EXPECT_EQ(ini.HasSection(""), true); + EXPECT_EQ(ini.HasSection("COMMON"), true); + EXPECT_EQ(ini.HasSection("DEFINE"), false); + + string value; + EXPECT_EQ(ini.GetStringValue("", "USER", &value), 0); + EXPECT_EQ(value, string("root2")); + EXPECT_EQ(ini.GetStringValue("COMMON", "DB", &value), 0); + EXPECT_EQ(value, string("sys2")); + EXPECT_EQ(ini.GetStringValue("COMMON", "PASSWD", &value), ERR_NOT_FOUND_KEY); + EXPECT_EQ(ini.GetStringValue("DEFINE", "name", &value), ERR_NOT_FOUND_SECTION); +} + +TEST(IniFile, SaveAs) +{ + // create a new ini file + char filepath[] = "test.ini"; + FILE *fp = fopen(filepath, "w"); + char content[] = " USER=root \r\n [COMMON] \n DB=sys \nPASSWD=tt \n#commit \n #--------- \n[DEFINE] \nname=cxy\nvalue=1 #测试"; + fwrite(content, sizeof(char), strlen(content), fp); + fclose(fp); + + IniFile ini; + ini.Load(filepath); + + char saveas_path[] = "test_save_as.ini"; + + ini.SaveAs(saveas_path); + + fp = fopen(saveas_path, "r"); + char buf[200]; + memset(buf, 0, 200 * sizeof(char)); + + fread(buf, sizeof(char), 200, fp); + fclose(fp); + EXPECT_EQ(buf, string("USER=root\n[COMMON]\nDB=sys\nPASSWD=tt\n#commit\n#---------\n[DEFINE]\nname=cxy\nvalue=1 #测试\n")); +} + +TEST(IniFile, setValue) +{ + IniFile ini; + + ini.setValue("COMMON", "DB", "sys", "数据库"); + ini.setValue("COMMON", "PASSWD", "root", "数据库密码"); + ini.setValue("", "NAME", "cxy", ""); + + char filepath[] = "test_set.ini"; + ini.SaveAs(filepath); + + FILE *fp = fopen(filepath, "r"); + char buf[200]; + memset(buf, 0, 200 * sizeof(char)); + + fread(buf, sizeof(char), 200, fp); + fclose(fp); + EXPECT_EQ(buf, string("NAME=cxy\n[COMMON]\n#数据库\nDB=sys\n#数据库密码\nPASSWD=root\n")); +} +TEST(IniFile, DeleteSection) +{ + // create a new ini file + char filepath[] = "test.ini"; + FILE *fp = fopen(filepath, "w"); + char content[] = " USER=root \r\n [COMMON] \n DB=sys \nPASSWD=tt \n#commit \n #--------- \n[DEFINE] \nname=cxy\n"; + fwrite(content, sizeof(char), strlen(content), fp); + fclose(fp); + + IniFile ini; + ini.Load(filepath); + + ini.DeleteSection("COMMON"); + + char saveas_path[] = "test_save_deleteS.ini"; + + ini.SaveAs(saveas_path); + + fp = fopen(saveas_path, "r"); + char buf[200]; + memset(buf, 0, 200 * sizeof(char)); + + fread(buf, sizeof(char), 200, fp); + fclose(fp); + EXPECT_EQ(buf, string("USER=root\n#commit\n#---------\n[DEFINE]\nname=cxy\n")); +} + +TEST(IniFile, DeleteKey) +{ + // create a new ini file + char filepath[] = "test.ini"; + FILE *fp = fopen(filepath, "w"); + char content[] = " USER=root \r\n [COMMON] \n DB=sys \nPASSWD=tt \n#commit \n #--------- \n[DEFINE] \nname=cxy\n"; + fwrite(content, sizeof(char), strlen(content), fp); + fclose(fp); + + IniFile ini; + ini.Load(filepath); + + ini.DeleteKey("COMMON", "DB"); + + char saveas_path[] = "test_save_deleteK.ini"; + + ini.SaveAs(saveas_path); + + fp = fopen(saveas_path, "r"); + char buf[200]; + memset(buf, 0, 200 * sizeof(char)); + + fread(buf, sizeof(char), 200, fp); + fclose(fp); + EXPECT_EQ(buf, string("USER=root\n[COMMON]\nPASSWD=tt\n#commit\n#---------\n[DEFINE]\nname=cxy\n")); +} + +}