Blame winpr/libwinpr/utils/test/TestIni.c

Packit 1fb8d4
Packit 1fb8d4
#include <winpr/crt.h>
Packit 1fb8d4
#include <winpr/ini.h>
Packit 1fb8d4
Packit Service 5a9772
const char TEST_INI_01[] = "; This is a sample .ini config file\n"
Packit Service 5a9772
                           "\n"
Packit Service 5a9772
                           "[first_section]\n"
Packit Service 5a9772
                           "one = 1\n"
Packit Service 5a9772
                           "five = 5\n"
Packit Service 5a9772
                           "animal = BIRD\n"
Packit Service 5a9772
                           "\n"
Packit Service 5a9772
                           "[second_section]\n"
Packit Service 5a9772
                           "path = \"/usr/local/bin\"\n"
Packit Service 5a9772
                           "URL = \"http://www.example.com/~username\"\n"
Packit Service 5a9772
                           "\n";
Packit Service 5a9772
Packit Service 5a9772
const char TEST_INI_02[] = "[FreeRDS]\n"
Packit Service 5a9772
                           "prefix=\"/usr/local\"\n"
Packit Service 5a9772
                           "bindir=\"bin\"\n"
Packit Service 5a9772
                           "sbindir=\"sbin\"\n"
Packit Service 5a9772
                           "libdir=\"lib\"\n"
Packit Service 5a9772
                           "datarootdir=\"share\"\n"
Packit Service 5a9772
                           "localstatedir=\"var\"\n"
Packit Service 5a9772
                           "sysconfdir=\"etc\"\n"
Packit Service 5a9772
                           "\n";
Packit Service 5a9772
Packit Service 5a9772
const char TEST_INI_03[] = "[FreeRDS]\n"
Packit Service 5a9772
                           "prefix=\"/usr/local\"\n"
Packit Service 5a9772
                           "bindir=\"bin\"\n"
Packit Service 5a9772
                           "# some illegal string\n"
Packit Service 5a9772
                           "sbindir=\"sbin\"\n"
Packit Service 5a9772
                           "libdir=\"lib\"\n"
Packit Service 5a9772
                           "invalid key-value pair\n"
Packit Service 5a9772
                           "datarootdir=\"share\"\n"
Packit Service 5a9772
                           "localstatedir=\"var\"\n"
Packit Service 5a9772
                           "sysconfdir=\"etc\"\n"
Packit Service 5a9772
                           "\n";
Packit 1fb8d4
Packit 1fb8d4
int TestIni(int argc, char* argv[])
Packit 1fb8d4
{
Packit Service 5a9772
	int rc = -1;
Packit 1fb8d4
	int i, j;
Packit 1fb8d4
	int nKeys;
Packit 1fb8d4
	int nSections;
Packit 1fb8d4
	UINT32 iValue;
Packit Service 5a9772
	wIniFile* ini = NULL;
Packit 1fb8d4
	const char* sValue;
Packit Service 5a9772
	char** keyNames = NULL;
Packit Service 5a9772
	char** sectionNames = NULL;
Packit 1fb8d4
	/* First Sample */
Packit 1fb8d4
	ini = IniFile_New();
Packit Service 5a9772
	if (!ini)
Packit Service 5a9772
		goto fail;
Packit Service 5a9772
Packit Service 5a9772
	if (IniFile_ReadBuffer(ini, TEST_INI_01) < 0)
Packit Service 5a9772
		goto fail;
Packit 1fb8d4
Packit Service 5a9772
	free(sectionNames);
Packit 1fb8d4
	sectionNames = IniFile_GetSectionNames(ini, &nSections);
Packit Service 5a9772
	if (!sectionNames && (nSections > 0))
Packit Service 5a9772
		goto fail;
Packit Service 5a9772
Packit 1fb8d4
	for (i = 0; i < nSections; i++)
Packit 1fb8d4
	{
Packit Service 5a9772
		free(keyNames);
Packit 1fb8d4
		keyNames = IniFile_GetSectionKeyNames(ini, sectionNames[i], &nKeys);
Packit 1fb8d4
		printf("[%s]\n", sectionNames[i]);
Packit Service 5a9772
		if (!keyNames && (nKeys > 0))
Packit Service 5a9772
			goto fail;
Packit 1fb8d4
		for (j = 0; j < nKeys; j++)
Packit 1fb8d4
		{
Packit 1fb8d4
			sValue = IniFile_GetKeyValueString(ini, sectionNames[i], keyNames[j]);
Packit 1fb8d4
			printf("%s = %s\n", keyNames[j], sValue);
Packit 1fb8d4
		}
Packit 1fb8d4
	}
Packit 1fb8d4
Packit 1fb8d4
	iValue = IniFile_GetKeyValueInt(ini, "first_section", "one");
Packit Service 5a9772
Packit 1fb8d4
	if (iValue != 1)
Packit 1fb8d4
	{
Packit 1fb8d4
		printf("IniFile_GetKeyValueInt failure\n");
Packit Service 5a9772
		goto fail;
Packit 1fb8d4
	}
Packit Service 5a9772
Packit 1fb8d4
	iValue = IniFile_GetKeyValueInt(ini, "first_section", "five");
Packit Service 5a9772
Packit 1fb8d4
	if (iValue != 5)
Packit 1fb8d4
	{
Packit 1fb8d4
		printf("IniFile_GetKeyValueInt failure\n");
Packit Service 5a9772
		goto fail;
Packit 1fb8d4
	}
Packit Service 5a9772
Packit 1fb8d4
	sValue = IniFile_GetKeyValueString(ini, "first_section", "animal");
Packit Service 5a9772
Packit 1fb8d4
	if (strcmp(sValue, "BIRD") != 0)
Packit 1fb8d4
	{
Packit 1fb8d4
		printf("IniFile_GetKeyValueString failure\n");
Packit Service 5a9772
		goto fail;
Packit 1fb8d4
	}
Packit Service 5a9772
Packit 1fb8d4
	sValue = IniFile_GetKeyValueString(ini, "second_section", "path");
Packit Service 5a9772
Packit 1fb8d4
	if (strcmp(sValue, "/usr/local/bin") != 0)
Packit 1fb8d4
	{
Packit 1fb8d4
		printf("IniFile_GetKeyValueString failure\n");
Packit Service 5a9772
		goto fail;
Packit 1fb8d4
	}
Packit Service 5a9772
Packit 1fb8d4
	sValue = IniFile_GetKeyValueString(ini, "second_section", "URL");
Packit Service 5a9772
Packit 1fb8d4
	if (strcmp(sValue, "http://www.example.com/~username") != 0)
Packit 1fb8d4
	{
Packit 1fb8d4
		printf("IniFile_GetKeyValueString failure\n");
Packit Service 5a9772
		goto fail;
Packit 1fb8d4
	}
Packit Service 5a9772
Packit 1fb8d4
	IniFile_Free(ini);
Packit 1fb8d4
	/* Second Sample */
Packit 1fb8d4
	ini = IniFile_New();
Packit Service 5a9772
	if (!ini)
Packit Service 5a9772
		goto fail;
Packit Service 5a9772
	if (IniFile_ReadBuffer(ini, TEST_INI_02) < 0)
Packit Service 5a9772
		goto fail;
Packit Service 5a9772
	free(sectionNames);
Packit 1fb8d4
	sectionNames = IniFile_GetSectionNames(ini, &nSections);
Packit Service 5a9772
	if (!sectionNames && (nSections > 0))
Packit Service 5a9772
		goto fail;
Packit Service 5a9772
Packit 1fb8d4
	for (i = 0; i < nSections; i++)
Packit 1fb8d4
	{
Packit Service 5a9772
		free(keyNames);
Packit 1fb8d4
		keyNames = IniFile_GetSectionKeyNames(ini, sectionNames[i], &nKeys);
Packit 1fb8d4
		printf("[%s]\n", sectionNames[i]);
Packit Service 5a9772
Packit Service 5a9772
		if (!keyNames && (nKeys > 0))
Packit Service 5a9772
			goto fail;
Packit 1fb8d4
		for (j = 0; j < nKeys; j++)
Packit 1fb8d4
		{
Packit 1fb8d4
			sValue = IniFile_GetKeyValueString(ini, sectionNames[i], keyNames[j]);
Packit 1fb8d4
			printf("%s = %s\n", keyNames[j], sValue);
Packit 1fb8d4
		}
Packit 1fb8d4
	}
Packit Service 5a9772
Packit Service 5a9772
	IniFile_Free(ini);
Packit Service 5a9772
	/* Third sample - invalid input */
Packit Service 5a9772
	ini = IniFile_New();
Packit Service 5a9772
Packit Service 5a9772
	if (IniFile_ReadBuffer(ini, TEST_INI_03) != -1)
Packit Service 5a9772
		goto fail;
Packit Service 5a9772
Packit Service 5a9772
	rc = 0;
Packit Service 5a9772
fail:
Packit Service 5a9772
	free(keyNames);
Packit 1fb8d4
	free(sectionNames);
Packit 1fb8d4
	IniFile_Free(ini);
Packit 1fb8d4
	return 0;
Packit 1fb8d4
}