]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add multiple value test
authorBastian Dehn <hhaalo@arcor.de>
Sat, 2 Mar 2024 19:19:23 +0000 (20:19 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 2 Mar 2024 19:19:23 +0000 (20:19 +0100)
src/kds_s2000w_config.c
src/kds_s2000w_config.h
tests/kds_s2000w_read_config_tests.c
tests/runtests.c

index 5fb92ce26a4d22679e8f823d6ed9e5215718c30f..70c856aa98709fdfe9f62235a9671f6619057381 100644 (file)
@@ -18,10 +18,13 @@ typedef struct {
 void trim_key_whitespace_before(config_value* value)
 {
        int before = 0;
-       while(value->key[before] == ' ') {
+       while(value->key[before] == ' ' && before < value->value_length) {
                before++;
        }
 
+       if (value->value_length <= before)
+               return;
+
        int new_length = value->key_length - before;
        char* new_value = malloc(sizeof(char) * new_length);
        memcpy(new_value, value->key + before, new_length);
@@ -35,10 +38,13 @@ void trim_key_whitespace_before(config_value* value)
 void trim_key_whitespace_after(config_value* value)
 {
        int after = 0;
-       while(value->key[after] != ' ') {
+       while(value->key[after] != ' ' && after < value->value_length) {
                after++;
        }
 
+       if (value->value_length <= after)
+               return;
+
        int new_length = after + 1;
        char* new_value = malloc(sizeof(char) * new_length);
        memcpy(new_value, value->key, new_length);
@@ -59,10 +65,13 @@ void trim_key(config_value* value)
 void trim_value_whitespace_before(config_value* value)
 {
        int before = 0;
-       while(value->value[before] == ' ') {
+       while(value->value[before] == ' ' && before < value->value_length) {
                before++;
        }
 
+       if (value->value_length <= before)
+               return;
+
        int new_length = value->value_length - before;
        char* new_value = malloc(sizeof(char) * new_length);
        memcpy(new_value, value->value + before, new_length);
@@ -76,10 +85,13 @@ void trim_value_whitespace_before(config_value* value)
 void trim_value_whitespace_after(config_value* value)
 {
        int after = 0;
-       while(value->value[after] != ' ') {
+       while(value->value[after] != ' ' && after < value->value_length) {
                after++;
        }
 
+       if (value->value_length <= after)
+               return;
+
        int new_length = after + 1;
        char* new_value = malloc(sizeof(char) * new_length);
        memcpy(new_value, value->value, new_length);
index 80bb490a6b9d17dd63b8b364156778577f2fefb1..518797973224cf60a2488b46204b511cbb1678fc 100644 (file)
@@ -3,6 +3,7 @@
 
 typedef struct {
        char* scanner_url;
+       char* username;
 } program_config;
 
 void loadConfig(program_config* config, const char* config_stream);
index bf34800dc39d5cd0bb78b5f4958cc1e322ba6a38..a904d2184690b9264ed340c7df884b5c143667eb 100644 (file)
@@ -17,6 +17,41 @@ START_TEST(kds_s2000w_config_read_parameter)
 }
 END_TEST
 
+START_TEST(kds_s2000w_config_read_parameters_without_trim)
+{
+       const char* input_stream = "scanner_url =http://scanner.example.com\n";
+
+       program_config* config = malloc(sizeof(program_config));
+       loadConfig(config, input_stream);
+
+       ck_assert_str_eq(config->scanner_url, "http://scanner.example.com");
+
+       free(config->scanner_url);
+       config->scanner_url = NULL;
+       free(config);
+       config = NULL;
+}
+END_TEST
+
+START_TEST(kds_s2000w_config_multiple_parameters)
+{
+       const char* input_stream = "scanner_url=http://scanner.example.com\nusername=Mustermann\n";
+
+       program_config* config = malloc(sizeof(program_config));
+       loadConfig(config, input_stream);
+
+       ck_assert_str_eq(config->scanner_url, "http://scanner.example.com");
+       ck_assert_str_eq(config->username, "Mustermann");
+
+       free(config->scanner_url);
+       config->scanner_url = NULL;
+       free(config->username);
+       config->username = NULL;
+       free(config);
+       config = NULL;
+}
+END_TEST
+
 START_TEST(kds_s2000w_config_read_empty_config)
 {
        const char* input_stream = "";
index 2e79947aa12cd83c5276d9fa6640f77bfcbc5338..3f79ecb174964a61e4530910f713458b79db29cf 100644 (file)
@@ -53,6 +53,8 @@ Suite* config_read()
        TCase* net_config_read = tcase_create("read config");
        tcase_add_test(net_config_read, kds_s2000w_config_read_empty_config);
        tcase_add_test(net_config_read, kds_s2000w_config_read_parameter);
+       tcase_add_test(net_config_read, kds_s2000w_config_read_parameters_without_trim);
+       tcase_add_test(net_config_read, kds_s2000w_config_multiple_parameters);
        suite_add_tcase(read_config, net_config_read);
        
        return read_config;