diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 01:24:41 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 01:24:41 +0000 |
commit | a9bcc81f821d7c66f623779fa5147e728eb3c388 (patch) | |
tree | 98676963bcdd537ae5908a067a8eb110b93486a6 /winpr/libwinpr/utils/test/TestIni.c | |
parent | Initial commit. (diff) | |
download | freerdp3-a9bcc81f821d7c66f623779fa5147e728eb3c388.tar.xz freerdp3-a9bcc81f821d7c66f623779fa5147e728eb3c388.zip |
Adding upstream version 3.3.0+dfsg1.upstream/3.3.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'winpr/libwinpr/utils/test/TestIni.c')
-rw-r--r-- | winpr/libwinpr/utils/test/TestIni.c | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/winpr/libwinpr/utils/test/TestIni.c b/winpr/libwinpr/utils/test/TestIni.c new file mode 100644 index 0000000..2dd24f0 --- /dev/null +++ b/winpr/libwinpr/utils/test/TestIni.c @@ -0,0 +1,160 @@ + +#include <winpr/crt.h> +#include <winpr/ini.h> + +static const char TEST_INI_01[] = "; This is a sample .ini config file\n" + "\n" + "[first_section]\n" + "one = 1\n" + "five = 5\n" + "animal = BIRD\n" + "\n" + "[second_section]\n" + "path = \"/usr/local/bin\"\n" + "URL = \"http://www.example.com/~username\"\n" + "\n"; + +static const char TEST_INI_02[] = "[FreeRDS]\n" + "prefix=\"/usr/local\"\n" + "bindir=\"bin\"\n" + "sbindir=\"sbin\"\n" + "libdir=\"lib\"\n" + "datarootdir=\"share\"\n" + "localstatedir=\"var\"\n" + "sysconfdir=\"etc\"\n" + "\n"; + +static const char TEST_INI_03[] = "[FreeRDS]\n" + "prefix=\"/usr/local\"\n" + "bindir=\"bin\"\n" + "# some illegal string\n" + "sbindir=\"sbin\"\n" + "libdir=\"lib\"\n" + "invalid key-value pair\n" + "datarootdir=\"share\"\n" + "localstatedir=\"var\"\n" + "sysconfdir=\"etc\"\n" + "\n"; + +int TestIni(int argc, char* argv[]) +{ + int rc = -1; + size_t nKeys = 0; + size_t nSections = 0; + UINT32 iValue = 0; + wIniFile* ini = NULL; + const char* sValue = NULL; + char** keyNames = NULL; + char** sectionNames = NULL; + + WINPR_UNUSED(argc); + WINPR_UNUSED(argv); + + /* First Sample */ + ini = IniFile_New(); + if (!ini) + goto fail; + + if (IniFile_ReadBuffer(ini, TEST_INI_01) < 0) + goto fail; + + free(sectionNames); + sectionNames = IniFile_GetSectionNames(ini, &nSections); + if (!sectionNames && (nSections > 0)) + goto fail; + + for (size_t i = 0; i < nSections; i++) + { + free(keyNames); + keyNames = IniFile_GetSectionKeyNames(ini, sectionNames[i], &nKeys); + printf("[%s]\n", sectionNames[i]); + if (!keyNames && (nKeys > 0)) + goto fail; + for (size_t j = 0; j < nKeys; j++) + { + sValue = IniFile_GetKeyValueString(ini, sectionNames[i], keyNames[j]); + printf("%s = %s\n", keyNames[j], sValue); + } + } + + iValue = IniFile_GetKeyValueInt(ini, "first_section", "one"); + + if (iValue != 1) + { + printf("IniFile_GetKeyValueInt failure\n"); + goto fail; + } + + iValue = IniFile_GetKeyValueInt(ini, "first_section", "five"); + + if (iValue != 5) + { + printf("IniFile_GetKeyValueInt failure\n"); + goto fail; + } + + sValue = IniFile_GetKeyValueString(ini, "first_section", "animal"); + + if (strcmp(sValue, "BIRD") != 0) + { + printf("IniFile_GetKeyValueString failure\n"); + goto fail; + } + + sValue = IniFile_GetKeyValueString(ini, "second_section", "path"); + + if (strcmp(sValue, "/usr/local/bin") != 0) + { + printf("IniFile_GetKeyValueString failure\n"); + goto fail; + } + + sValue = IniFile_GetKeyValueString(ini, "second_section", "URL"); + + if (strcmp(sValue, "http://www.example.com/~username") != 0) + { + printf("IniFile_GetKeyValueString failure\n"); + goto fail; + } + + IniFile_Free(ini); + /* Second Sample */ + ini = IniFile_New(); + if (!ini) + goto fail; + if (IniFile_ReadBuffer(ini, TEST_INI_02) < 0) + goto fail; + free(sectionNames); + sectionNames = IniFile_GetSectionNames(ini, &nSections); + if (!sectionNames && (nSections > 0)) + goto fail; + + for (size_t i = 0; i < nSections; i++) + { + free(keyNames); + keyNames = IniFile_GetSectionKeyNames(ini, sectionNames[i], &nKeys); + printf("[%s]\n", sectionNames[i]); + + if (!keyNames && (nKeys > 0)) + goto fail; + for (size_t j = 0; j < nKeys; j++) + { + sValue = IniFile_GetKeyValueString(ini, sectionNames[i], keyNames[j]); + printf("%s = %s\n", keyNames[j], sValue); + } + } + + IniFile_Free(ini); + /* Third sample - invalid input */ + ini = IniFile_New(); + + if (IniFile_ReadBuffer(ini, TEST_INI_03) != -1) + goto fail; + + rc = 0; +fail: + free(keyNames); + free(sectionNames); + IniFile_Free(ini); + return rc; +} |