From 12ec690044b26a1b70ca0e8e3d0c6a033df50c40 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 30 Jan 2020 17:02:52 +0100 Subject: [PATCH] Add samples test file for config_file --- libretro-common/file/config_file.c | 60 -------------- .../samples/file/config_file/Makefile | 35 ++++++++ .../file/config_file/config_file_test.c | 79 +++++++++++++++++++ 3 files changed, 114 insertions(+), 60 deletions(-) create mode 100644 libretro-common/samples/file/config_file/Makefile create mode 100644 libretro-common/samples/file/config_file/config_file_test.c diff --git a/libretro-common/file/config_file.c b/libretro-common/file/config_file.c index 874565c218..5e55f82b92 100644 --- a/libretro-common/file/config_file.c +++ b/libretro-common/file/config_file.c @@ -1143,63 +1143,3 @@ bool config_file_exists(const char *path) config_file_free(config); return true; } - -#if 0 -static void test_config_file_parse_contains( - const char * cfgtext, - const char *key, const char *val) -{ - config_file_t *cfg = config_file_new_from_string(cfgtext, NULL); - char *out = NULL; - bool ok = false; - - if (!cfg) - abort(); - - ok = config_get_string(cfg, key, &out); - if (ok != (bool)val) - abort(); - if (!val) - return; - - if (!out) - out = strdup(""); - if (strcmp(out, val) != 0) - abort(); - free(out); -} - -static void test_config_file(void) -{ - test_config_file_parse_contains("foo = \"bar\"\n", "foo", "bar"); - test_config_file_parse_contains("foo = \"bar\"", "foo", "bar"); - test_config_file_parse_contains("foo = \"bar\"\r\n", "foo", "bar"); - test_config_file_parse_contains("foo = \"bar\"", "foo", "bar"); - -#if 0 - /* turns out it treats empty as nonexistent - - * should probably be fixed */ - test_config_file_parse_contains("foo = \"\"\n", "foo", ""); - test_config_file_parse_contains("foo = \"\"", "foo", ""); - test_config_file_parse_contains("foo = \"\"\r\n", "foo", ""); - test_config_file_parse_contains("foo = \"\"", "foo", ""); -#endif - - test_config_file_parse_contains("foo = \"\"\n", "bar", NULL); - test_config_file_parse_contains("foo = \"\"", "bar", NULL); - test_config_file_parse_contains("foo = \"\"\r\n", "bar", NULL); - test_config_file_parse_contains("foo = \"\"", "bar", NULL); -} - -/* compile with: - gcc config_file.c -g -I ../include/ \ - ../streams/file_stream.c ../vfs/vfs_implementation.c ../lists/string_list.c \ - ../compat/compat_strl.c file_path.c ../compat/compat_strcasestr.c \ - && ./a.out -*/ - -int main(void) -{ - test_config_file(); -} -#endif diff --git a/libretro-common/samples/file/config_file/Makefile b/libretro-common/samples/file/config_file/Makefile new file mode 100644 index 0000000000..18578d9276 --- /dev/null +++ b/libretro-common/samples/file/config_file/Makefile @@ -0,0 +1,35 @@ +TARGET := config_file_test + +LIBRETRO_COMM_DIR := ../../.. + +SOURCES := \ + config_file_test.c \ + $(LIBRETRO_COMM_DIR)/compat/fopen_utf8.c \ + $(LIBRETRO_COMM_DIR)/compat/compat_strl.c \ + $(LIBRETRO_COMM_DIR)/compat/compat_strcasestr.c \ + $(LIBRETRO_COMM_DIR)/compat/compat_posix_string.c \ + $(LIBRETRO_COMM_DIR)/encodings/encoding_utf.c \ + $(LIBRETRO_COMM_DIR)/file/file_path.c \ + $(LIBRETRO_COMM_DIR)/file/file_path_io.c \ + $(LIBRETRO_COMM_DIR)/file/config_file.c \ + $(LIBRETRO_COMM_DIR)/lists/string_list.c \ + $(LIBRETRO_COMM_DIR)/string/stdstring.c \ + $(LIBRETRO_COMM_DIR)/streams/file_stream.c \ + $(LIBRETRO_COMM_DIR)/vfs/vfs_implementation.c + +OBJS := $(SOURCES:.c=.o) + +CFLAGS += -Wall -pedantic -std=gnu99 -g -I$(LIBRETRO_COMM_DIR)/include + +all: $(TARGET) + +%.o: %.c + $(CC) -c -o $@ $< $(CFLAGS) + +$(TARGET): $(OBJS) + $(CC) -o $@ $^ $(LDFLAGS) + +clean: + rm -f $(TARGET) $(OBJS) + +.PHONY: clean diff --git a/libretro-common/samples/file/config_file/config_file_test.c b/libretro-common/samples/file/config_file/config_file_test.c new file mode 100644 index 0000000000..5b2823e0ad --- /dev/null +++ b/libretro-common/samples/file/config_file/config_file_test.c @@ -0,0 +1,79 @@ +/* Copyright (C) 2010-2020 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (config_file_test.c). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include +#include +#include + +#include + +static void test_config_file_parse_contains( + const char * cfgtext, + const char *key, const char *val) +{ + config_file_t *cfg = config_file_new_from_string(cfgtext, NULL); + char *out = NULL; + bool ok = false; + + if (!cfg) + abort(); + + ok = config_get_string(cfg, key, &out); + if (ok != (bool)val) + abort(); + if (!val) + return; + + if (!out) + out = strdup(""); + if (strcmp(out, val) != 0) + { + printf("[FAILED] Key [%s] Doesn't contain val [%s]\n", key, val); + abort(); + } + printf("[SUCCESS] Key [%s] contains val [%s]\n", key, val); + free(out); +} + +int main(void) +{ + test_config_file_parse_contains("foo = \"bar\"\n", "foo", "bar"); + test_config_file_parse_contains("foo = \"bar\"", "foo", "bar"); + test_config_file_parse_contains("foo = \"bar\"\r\n", "foo", "bar"); + test_config_file_parse_contains("foo = \"bar\"", "foo", "bar"); + +#if 0 + /* turns out it treats empty as nonexistent - + * should probably be fixed */ + test_config_file_parse_contains("foo = \"\"\n", "foo", ""); + test_config_file_parse_contains("foo = \"\"", "foo", ""); + test_config_file_parse_contains("foo = \"\"\r\n", "foo", ""); + test_config_file_parse_contains("foo = \"\"", "foo", ""); +#endif + + test_config_file_parse_contains("foo = \"\"\n", "bar", NULL); + test_config_file_parse_contains("foo = \"\"", "bar", NULL); + test_config_file_parse_contains("foo = \"\"\r\n", "bar", NULL); + test_config_file_parse_contains("foo = \"\"", "bar", NULL); +}