diff options
| author | Albert Cervin <albert@acervin.com> | 2023-02-21 22:26:36 +0100 |
|---|---|---|
| committer | Albert Cervin <albert@acervin.com> | 2023-02-21 22:26:36 +0100 |
| commit | 44fd8cde61e3e89e5f83c98900a403e922073727 (patch) | |
| tree | 22ed65a8b3c766fa21c35fe4d567399e3810454a /test/settings.c | |
| parent | d7bf8702bf32720d93c4e690937bc8b683926be1 (diff) | |
| download | dged-44fd8cde61e3e89e5f83c98900a403e922073727.tar.gz dged-44fd8cde61e3e89e5f83c98900a403e922073727.tar.xz dged-44fd8cde61e3e89e5f83c98900a403e922073727.zip | |
Implement support for settings
Settings are a flat "dictionary" containing
paths to settings on the format:
<category>.<sub-category>.<setting>.
Diffstat (limited to 'test/settings.c')
| -rw-r--r-- | test/settings.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/test/settings.c b/test/settings.c new file mode 100644 index 0000000..181cd73 --- /dev/null +++ b/test/settings.c @@ -0,0 +1,73 @@ +#include "assert.h" +#include "test.h" + +#include "settings.h" +#include <stdlib.h> + +void test_get() { + settings_init(10); + settings_register_setting( + "my.setting", + (struct setting_value){.type = Setting_Bool, .bool_value = false}); + + struct setting *s = settings_get("my.setting"); + ASSERT(s != NULL, "Expected setting to exist after being inserted"); + ASSERT(s->value.type == Setting_Bool, + "Expected inserted setting to have the same type when retrieved"); + ASSERT(!s->value.bool_value, + "Expected inserted setting to have the same value when retrieved"); + + settings_register_setting( + "other.setting", + (struct setting_value){.type = Setting_Number, .number_value = 28}); + + struct setting **res = NULL; + uint32_t nres = 0; + settings_get_prefix("my", &res, &nres); + + ASSERT(nres == 1, "Expected to get one result back"); + ASSERT(s->value.type == Setting_Bool, "Expected inserted setting to have the " + "same type when retrieved by prefix"); + ASSERT(!s->value.bool_value, "Expected inserted setting to have the same " + "value when retrieved by prefix"); + + free(res); + + settings_destroy(); +} + +void test_set() { + settings_init(10); + settings_register_setting( + "my.setting", + (struct setting_value){.type = Setting_Bool, .bool_value = false}); + + // test that wrong type is ignored; + settings_set("my.setting", (struct setting_value){.type = Setting_String, + .string_value = "bonan"}); + + struct setting *s = settings_get("my.setting"); + ASSERT(s != NULL, "Expected setting to exist after being inserted"); + ASSERT(s->value.type == Setting_Bool, + "Expected inserted setting type to not have been changed"); + ASSERT(!s->value.bool_value, + "Expected inserted setting value to not have been changed"); + + // test that correct type is indeed changed + settings_set("my.setting", (struct setting_value){.type = Setting_Bool, + .bool_value = true}); + + s = settings_get("my.setting"); + ASSERT(s != NULL, "Expected setting to exist"); + ASSERT(s->value.type == Setting_Bool, + "Expected inserted setting type to not have been changed"); + ASSERT(s->value.bool_value, + "Expected inserted setting value to _have_ been changed"); + + settings_destroy(); +} + +void run_settings_tests() { + run_test(test_get); + run_test(test_set); +} |
