add test for util_path_isrelated dav-2 tip

Wed, 07 Jan 2026 22:31:05 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Wed, 07 Jan 2026 22:31:05 +0100
branch
dav-2
changeset 896
2c765c286536
parent 895
87638f19f6dd

add test for util_path_isrelated

test/base64.c file | annotate | diff | comparison | revisions
test/crypto.c file | annotate | diff | comparison | revisions
test/main.c file | annotate | diff | comparison | revisions
test/utils.c file | annotate | diff | comparison | revisions
test/utils.h file | annotate | diff | comparison | revisions
ucx/cx/test.h file | annotate | diff | comparison | revisions
--- a/test/base64.c	Wed Jan 07 22:23:43 2026 +0100
+++ b/test/base64.c	Wed Jan 07 22:31:05 2026 +0100
@@ -43,10 +43,10 @@
     
     CX_TEST_DO {
     
-        CX_TEST_ASSERTMM(!strcmp(s1, "abc"), "s1 wrong");
-        CX_TEST_ASSERTMM(!strcmp(s2, "hello world"), "s2 wrong");
-        CX_TEST_ASSERTMM(!strcmp(s3, "0"), "s3 wrong");
-        CX_TEST_ASSERTMM(!strcmp(s4, "0xx1"), "s4 wrong");
+        CX_TEST_ASSERTM(!strcmp(s1, "abc"), "s1 wrong");
+        CX_TEST_ASSERTM(!strcmp(s2, "hello world"), "s2 wrong");
+        CX_TEST_ASSERTM(!strcmp(s3, "0"), "s3 wrong");
+        CX_TEST_ASSERTM(!strcmp(s4, "0xx1"), "s4 wrong");
     
     }
     
@@ -67,23 +67,23 @@
     
     CX_TEST_DO {
     
-        CX_TEST_ASSERTMM(!strcmp(s1, "hello"), "s1 wrong");
-        CX_TEST_ASSERTMM(len1 == 5, "len1 wrong");
+        CX_TEST_ASSERTM(!strcmp(s1, "hello"), "s1 wrong");
+        CX_TEST_ASSERTM(len1 == 5, "len1 wrong");
 
-        CX_TEST_ASSERTMM(!strcmp(s2, "012345678901234567890123456789"), "s2 wrong");
-        CX_TEST_ASSERTMM(len2 == 30, "len2 wrong");
+        CX_TEST_ASSERTM(!strcmp(s2, "012345678901234567890123456789"), "s2 wrong");
+        CX_TEST_ASSERTM(len2 == 30, "len2 wrong");
 
-        CX_TEST_ASSERTMM(!strcmp(s3, "."), "s3 wrong");
-        CX_TEST_ASSERTMM(len3 == 1, "len3 wrong");
+        CX_TEST_ASSERTM(!strcmp(s3, "."), "s3 wrong");
+        CX_TEST_ASSERTM(len3 == 1, "len3 wrong");
 
-        CX_TEST_ASSERTMM(!strcmp(s4, "lol"), "s4 wrong");
-        CX_TEST_ASSERTMM(len4 == 3, "len4 wrong");
+        CX_TEST_ASSERTM(!strcmp(s4, "lol"), "s4 wrong");
+        CX_TEST_ASSERTM(len4 == 3, "len4 wrong");
 
-        CX_TEST_ASSERTMM(!strcmp(s5, "abc------3x"), "s5 wrong");
-        CX_TEST_ASSERTMM(len5 == 11, "len5 wrong");
+        CX_TEST_ASSERTM(!strcmp(s5, "abc------3x"), "s5 wrong");
+        CX_TEST_ASSERTM(len5 == 11, "len5 wrong");
 
-        CX_TEST_ASSERTMM(!strcmp(s6, "abcdefg...;;0hello"), "s6 failed");
-        CX_TEST_ASSERTMM(len6 == 18, "len6 wrong");
+        CX_TEST_ASSERTM(!strcmp(s6, "abcdefg...;;0hello"), "s6 failed");
+        CX_TEST_ASSERTM(len6 == 18, "len6 wrong");
     
     }
     
@@ -129,17 +129,17 @@
     
     CX_TEST_DO {
     
-        CX_TEST_ASSERTMM(!strcmp(b1, "aGVsbG8gd29ybGQ="), "b1 failed");
-        CX_TEST_ASSERTMM(!strcmp(b2, "dGVzdCBzdHJpbmc="), "b2 failed");
-        CX_TEST_ASSERTMM(!strcmp(b3, "MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODk="), "b3 failed");
-        CX_TEST_ASSERTMM(!strcmp(b4, "AAwDMgJuPwE="), "b4 failed");
+        CX_TEST_ASSERTM(!strcmp(b1, "aGVsbG8gd29ybGQ="), "b1 failed");
+        CX_TEST_ASSERTM(!strcmp(b2, "dGVzdCBzdHJpbmc="), "b2 failed");
+        CX_TEST_ASSERTM(!strcmp(b3, "MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODk="), "b3 failed");
+        CX_TEST_ASSERTM(!strcmp(b4, "AAwDMgJuPwE="), "b4 failed");
 
-        CX_TEST_ASSERTMM(!strcmp(b5, "YQ=="), "b5 failed");
-        CX_TEST_ASSERTMM(!strcmp(b6, "YWI="), "b6 failed");
-        CX_TEST_ASSERTMM(!strcmp(b7, "YWJj"), "b7 failed");
-        CX_TEST_ASSERTMM(!strcmp(b8, "YWJjZA=="), "b8 failed");
-        CX_TEST_ASSERTMM(!strcmp(b9, "YWJjZGU="), "b9 failed");
-        CX_TEST_ASSERTMM(!strcmp(b10, "YWJjZGVm"), "b10 failed");
+        CX_TEST_ASSERTM(!strcmp(b5, "YQ=="), "b5 failed");
+        CX_TEST_ASSERTM(!strcmp(b6, "YWI="), "b6 failed");
+        CX_TEST_ASSERTM(!strcmp(b7, "YWJj"), "b7 failed");
+        CX_TEST_ASSERTM(!strcmp(b8, "YWJjZA=="), "b8 failed");
+        CX_TEST_ASSERTM(!strcmp(b9, "YWJjZGU="), "b9 failed");
+        CX_TEST_ASSERTM(!strcmp(b10, "YWJjZGVm"), "b10 failed");
     
     }
     
--- a/test/crypto.c	Wed Jan 07 22:23:43 2026 +0100
+++ b/test/crypto.c	Wed Jan 07 22:31:05 2026 +0100
@@ -214,8 +214,8 @@
                 char *s128 = util_decrypt_str_k(sn, c1, &keys128[k]);
                 char *s256 = util_decrypt_str_k(sn, c2, &keys256[k]);
 
-                CX_TEST_ASSERTMM(!strcmp(s128, strings[i]), "s128 wrong");
-                CX_TEST_ASSERTMM(!strcmp(s256, strings[i]), "s256 wrong");
+                CX_TEST_ASSERTM(!strcmp(s128, strings[i]), "s128 wrong");
+                CX_TEST_ASSERTM(!strcmp(s256, strings[i]), "s256 wrong");
             }
         }
     
@@ -238,8 +238,8 @@
                 char *dec1 = util_decrypt_str_k(sn, aes128, &keys128[k]);
                 char *dec2 = util_decrypt_str_k(sn, aes256, &keys256[k]);
 
-                CX_TEST_ASSERTMM(!strcmp(dec1, strings[i]), "aes128 encrypt failed");
-                CX_TEST_ASSERTMM(!strcmp(dec2, strings[i]), "aes256 encrypt failed");
+                CX_TEST_ASSERTM(!strcmp(dec1, strings[i]), "aes128 encrypt failed");
+                CX_TEST_ASSERTM(!strcmp(dec2, strings[i]), "aes256 encrypt failed");
             }
         }
     
@@ -258,20 +258,20 @@
                 content->pos = 0;
 
                 CxBuffer *enc = aes_encrypt_buffer(content, key);
-                CX_TEST_ASSERTMM(enc->size >= content->size + 16, "aes_encrypt_buffer failed");
+                CX_TEST_ASSERTM(enc->size >= content->size + 16, "aes_encrypt_buffer failed");
 
                 char *base64 = util_base64encode(enc->space, enc->size);
                 size_t plainlen = 0;
                 char *plain = aes_decrypt(base64, &plainlen, key);
 
-                CX_TEST_ASSERTMM(plain, "aes_decrypt failed");
-                CX_TEST_ASSERTMM(plainlen == content->size, "aes_decrypt: wrong length");
-                CX_TEST_ASSERTMM(!memcmp(plain, content->space, plainlen), "aes_decrypt: wrong content");
+                CX_TEST_ASSERTM(plain, "aes_decrypt failed");
+                CX_TEST_ASSERTM(plainlen == content->size, "aes_decrypt: wrong length");
+                CX_TEST_ASSERTM(!memcmp(plain, content->space, plainlen), "aes_decrypt: wrong content");
 
                 CxBuffer *dec = aes_decrypt_buffer(enc, key);
-                CX_TEST_ASSERTMM(dec->size == content->size, "aes_decrypt_buffer failed");
+                CX_TEST_ASSERTM(dec->size == content->size, "aes_decrypt_buffer failed");
 
-                CX_TEST_ASSERTMM(!memcmp(content->space, dec->space, dec->size), "decrypted buffer has wrong content");
+                CX_TEST_ASSERTM(!memcmp(content->space, dec->space, dec->size), "decrypted buffer has wrong content");
 
                 cxBufferFree(content);
                 cxBufferFree(enc);
@@ -318,15 +318,15 @@
                 aes_decrypter_shutdown(dec);
                 aes_decrypter_close(dec);
 
-                CX_TEST_ASSERTMM(slen == pbuf->pos, "wrong length after enc-dec");
-                CX_TEST_ASSERTMM(!memcmp(strings[j], pbuf->space, slen), "wrong content after enc-dec");
+                CX_TEST_ASSERTM(slen == pbuf->pos, "wrong length after enc-dec");
+                CX_TEST_ASSERTM(!memcmp(strings[j], pbuf->space, slen), "wrong content after enc-dec");
 
                 data->pos = 0;
                 CxBuffer *enc2 = aes_encrypt_buffer(data, key);
                 CxBuffer *dec2 = aes_decrypt_buffer(enc2, key);
 
-                CX_TEST_ASSERTMM(dec2->size == data->size, "dec2 has wrong size");
-                CX_TEST_ASSERTMM(!memcmp(strings[j], dec2->space, dec2->size), "dec2 has wrong content");
+                CX_TEST_ASSERTM(dec2->size == data->size, "dec2 has wrong size");
+                CX_TEST_ASSERTM(!memcmp(strings[j], dec2->space, dec2->size), "dec2 has wrong content");
             }
         }
     
@@ -456,9 +456,9 @@
                     int index = 16*p + 4*s + i;
                     int keylen = index % 2 == 0 ? 16 : 32;
 
-                    CX_TEST_ASSERTMM(key, "no key");
-                    CX_TEST_ASSERTMM(keylen == key->length, "wrong key length");
-                    CX_TEST_ASSERTMM(!memcmp(key->data, pwgenkeys[index], keylen), "wrong key data");
+                    CX_TEST_ASSERTM(key, "no key");
+                    CX_TEST_ASSERTM(keylen == key->length, "wrong key length");
+                    CX_TEST_ASSERTM(!memcmp(key->data, pwgenkeys[index], keylen), "wrong key data");
                 }
             }
         }
--- a/test/main.c	Wed Jan 07 22:23:43 2026 +0100
+++ b/test/main.c	Wed Jan 07 22:31:05 2026 +0100
@@ -62,6 +62,7 @@
     cx_test_register(suite, test_crypto_stream);
     cx_test_register(suite, test_dav_pw2key);
     cx_test_register(suite, test_util_parse_creationdate);
+    cx_test_register(suite, test_util_path_isrelated);
     
     cx_test_run_stdout(suite);
     cx_test_suite_free(suite);
--- a/test/utils.c	Wed Jan 07 22:23:43 2026 +0100
+++ b/test/utils.c	Wed Jan 07 22:31:05 2026 +0100
@@ -37,20 +37,41 @@
         time_t t2 = util_parse_creationdate("2023-09-17T13:03:00+02:00");
 
         struct tm *tm = gmtime(&t1);
-        CX_TEST_ASSERTMM(tm->tm_year == 112, "t1: wrong year");
-        CX_TEST_ASSERTMM(tm->tm_mon == 10, "t1: wrong month");
-        CX_TEST_ASSERTMM(tm->tm_mday == 29, "t1: wrong day");
-        CX_TEST_ASSERTMM(tm->tm_hour == 21, "t1: wrong hour");
-        CX_TEST_ASSERTMM(tm->tm_min == 35, "t1: wrong minute");
-        CX_TEST_ASSERTMM(tm->tm_sec == 36, "t1: wrong second");
+        CX_TEST_ASSERTM(tm->tm_year == 112, "t1: wrong year");
+        CX_TEST_ASSERTM(tm->tm_mon == 10, "t1: wrong month");
+        CX_TEST_ASSERTM(tm->tm_mday == 29, "t1: wrong day");
+        CX_TEST_ASSERTM(tm->tm_hour == 21, "t1: wrong hour");
+        CX_TEST_ASSERTM(tm->tm_min == 35, "t1: wrong minute");
+        CX_TEST_ASSERTM(tm->tm_sec == 36, "t1: wrong second");
 
         tm = gmtime(&t2);
-        CX_TEST_ASSERTMM(tm->tm_year == 123, "t2: wrong year");
-        CX_TEST_ASSERTMM(tm->tm_mon == 8, "t2: wrong month");
-        CX_TEST_ASSERTMM(tm->tm_mday == 17, "t2: wrong day");
-        CX_TEST_ASSERTMM(tm->tm_hour == 11, "t2: wrong hour");
-        CX_TEST_ASSERTMM(tm->tm_min == 03, "t2: wrong minute");
-        CX_TEST_ASSERTMM(tm->tm_sec == 0, "t2: wrong second");
+        CX_TEST_ASSERTM(tm->tm_year == 123, "t2: wrong year");
+        CX_TEST_ASSERTM(tm->tm_mon == 8, "t2: wrong month");
+        CX_TEST_ASSERTM(tm->tm_mday == 17, "t2: wrong day");
+        CX_TEST_ASSERTM(tm->tm_hour == 11, "t2: wrong hour");
+        CX_TEST_ASSERTM(tm->tm_min == 03, "t2: wrong minute");
+        CX_TEST_ASSERTM(tm->tm_sec == 0, "t2: wrong second");
 
     }
 }
+
+CX_TEST(test_util_path_isrelated) {
+    CX_TEST_DO {
+        CX_TEST_ASSERT(util_path_isrelated("/", "/"));
+        CX_TEST_ASSERT(util_path_isrelated("/", "/test"));
+        CX_TEST_ASSERT(util_path_isrelated("/", "/test/"));
+        CX_TEST_ASSERT(util_path_isrelated("/", "/test/sub"));
+        CX_TEST_ASSERT(util_path_isrelated("/", "/test/sub/"));
+        CX_TEST_ASSERT(util_path_isrelated("/dir1/", "/dir1"));
+        CX_TEST_ASSERT(util_path_isrelated("/dir1/", "/dir1/"));
+        CX_TEST_ASSERT(util_path_isrelated("/abc/test/123/", "/abc/test/123"));
+        CX_TEST_ASSERT(util_path_isrelated("/abc/test/123/", "/abc/test/123/test/sub/"));
+        
+        CX_TEST_ASSERT(!util_path_isrelated("/dir1/", "/dir2/"));
+        CX_TEST_ASSERT(!util_path_isrelated("/dir1/", "/dir2"));
+        CX_TEST_ASSERT(!util_path_isrelated("/dir1", "/dir2/"));
+        CX_TEST_ASSERT(!util_path_isrelated("/abc/123/test1", "/abc/123/xxx"));
+        CX_TEST_ASSERT(!util_path_isrelated("/abc/123/test1", "/abc/zzz/123/"));
+        CX_TEST_ASSERT(!util_path_isrelated("/dir1/", "/"));
+    }
+}
--- a/test/utils.h	Wed Jan 07 22:23:43 2026 +0100
+++ b/test/utils.h	Wed Jan 07 22:31:05 2026 +0100
@@ -36,6 +36,7 @@
 #endif
 
 CX_TEST(test_util_parse_creationdate);
+CX_TEST(test_util_path_isrelated);
 
 
 #ifdef __cplusplus
--- a/ucx/cx/test.h	Wed Jan 07 22:23:43 2026 +0100
+++ b/ucx/cx/test.h	Wed Jan 07 22:31:05 2026 +0100
@@ -43,13 +43,13 @@
  * **** IN SOURCE FILE: ****
  * <code>
  * CX_TEST_SUBROUTINE(subroutine_name, paramlist) {
- *   // tests with CX_TEST_ASSERTM()
+ *   // tests with CX_TEST_ASSERT()
  * }
  * 
  * CX_TEST(function_name) {
  *   // memory allocation and other stuff here
  *   #CX_TEST_DO {
- *     // tests with CX_TEST_ASSERTM() and/or
+ *     // tests with CX_TEST_ASSERT() and/or
  *     // calls with CX_TEST_CALL_SUBROUTINE() here
  *   }
  *   // cleanup of memory here
@@ -57,7 +57,7 @@
  * </code>
  * 
  * @attention Do not call own functions within a test that use
- * CX_TEST_ASSERTM() macros and are not defined by using CX_TEST_SUBROUTINE().
+ * CX_TEST_ASSERT() macros and are not defined by using CX_TEST_SUBROUTINE().
  *
  * @author Mike Becker
  * @author Olaf Wintermann
@@ -255,7 +255,7 @@
  * }
  * @endcode
  *
- * @attention Any CX_TEST_ASSERTM() calls must be performed in the scope of
+ * @attention Any CX_TEST_ASSERT() calls must be performed in the scope of
  * #CX_TEST_DO.
  */
 #define CX_TEST_DO _writefnc_("Running ", 1, 8, _output_);\
@@ -275,7 +275,7 @@
  * @param condition (@c bool) the condition to check
  * @param message (@c char*) the message that shall be printed out on failure
  */
-#define CX_TEST_ASSERTMM(condition,message) if (!(condition)) { \
+#define CX_TEST_ASSERTM(condition,message) if (!(condition)) { \
         const char *_assert_msg_ = message; \
         _writefnc_(_assert_msg_, 1, strlen(_assert_msg_), _output_); \
         _writefnc_(".\n", 1, 2, _output_); \
@@ -290,7 +290,7 @@
  * written to the test suites output stream.
  * @param condition (@c bool) the condition to check
  */
-#define CX_TEST_ASSERTM(condition) CX_TEST_ASSERTMM(condition, #condition " failed")
+#define CX_TEST_ASSERT(condition) CX_TEST_ASSERTM(condition, #condition " failed")
 
 /**
  * Macro for a test subroutine function header.

mercurial