]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test-util: add more tests
authorDaniel Mack <daniel@zonque.org>
Thu, 30 Jul 2015 20:10:05 +0000 (22:10 +0200)
committerDaniel Mack <daniel@zonque.org>
Fri, 31 Jul 2015 17:58:29 +0000 (19:58 +0200)
Add tests for safe_ato[iu]16() and some more unbase32hexmem() torture.

src/test/test-util.c

index 7a1a4b6df24879b82e394cc377203c4cae43c871..f4002aa86ef04765a5e83efa857cf044240d3f98 100644 (file)
@@ -280,6 +280,39 @@ static void test_parse_uid(void) {
         r = parse_uid("100", &uid);
         assert_se(r == 0);
         assert_se(uid == 100);
+
+        r = parse_uid("65535", &uid);
+        assert_se(r == -ENXIO);
+}
+
+static void test_safe_atou16(void) {
+        int r;
+        uint16_t l;
+
+        r = safe_atou16("12345", &l);
+        assert_se(r == 0);
+        assert_se(l == 12345);
+
+        r = safe_atou16("123456", &l);
+        assert_se(r == -ERANGE);
+
+        r = safe_atou16("junk", &l);
+        assert_se(r == -EINVAL);
+}
+
+static void test_safe_atoi16(void) {
+        int r;
+        int16_t l;
+
+        r = safe_atoi16("-12345", &l);
+        assert_se(r == 0);
+        assert_se(l == -12345);
+
+        r = safe_atoi16("36536", &l);
+        assert_se(r == -ERANGE);
+
+        r = safe_atoi16("junk", &l);
+        assert_se(r == -EINVAL);
 }
 
 static void test_safe_atolli(void) {
@@ -583,6 +616,15 @@ static void test_unbase32hexmem(void) {
         assert_se(unbase32hexmem("AAAAB===", strlen("AAAAB==="), true, &mem, &len) == -EINVAL);
         assert_se(unbase32hexmem("AAAAAAB=", strlen("AAAAAAB="), true, &mem, &len) == -EINVAL);
 
+        assert_se(unbase32hexmem("XPNMUOJ1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL);
+        assert_se(unbase32hexmem("CXNMUOJ1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL);
+        assert_se(unbase32hexmem("CPXMUOJ1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL);
+        assert_se(unbase32hexmem("CPNXUOJ1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL);
+        assert_se(unbase32hexmem("CPNMXOJ1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL);
+        assert_se(unbase32hexmem("CPNMUXJ1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL);
+        assert_se(unbase32hexmem("CPNMUOX1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL);
+        assert_se(unbase32hexmem("CPNMUOJX", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL);
+
         assert_se(unbase32hexmem("", strlen(""), false, &mem, &len) == 0);
         assert_se(streq(strndupa(mem, len), ""));
         free(mem);
@@ -1260,6 +1302,16 @@ static void test_endswith(void) {
         assert_se(!endswith("foobar", "foobarfoofoo"));
 }
 
+static void test_endswith_no_case(void) {
+        assert_se(endswith_no_case("fooBAR", "bar"));
+        assert_se(endswith_no_case("foobar", ""));
+        assert_se(endswith_no_case("foobar", "FOOBAR"));
+        assert_se(endswith_no_case("", ""));
+
+        assert_se(!endswith_no_case("foobar", "FOO"));
+        assert_se(!endswith_no_case("foobar", "FOOBARFOOFOO"));
+}
+
 static void test_close_nointr(void) {
         char name[] = "/tmp/test-test-close_nointr.XXXXXX";
         int fd;
@@ -2110,6 +2162,8 @@ int main(int argc, char *argv[]) {
         test_parse_boolean();
         test_parse_pid();
         test_parse_uid();
+        test_safe_atou16();
+        test_safe_atoi16();
         test_safe_atolli();
         test_safe_atod();
         test_strappend();
@@ -2159,6 +2213,7 @@ int main(int argc, char *argv[]) {
         test_is_valid_documentation_url();
         test_file_in_same_dir();
         test_endswith();
+        test_endswith_no_case();
         test_close_nointr();
         test_unlink_noerrno();
         test_readlink_and_make_absolute();