Systemd/src/test/test-strxcpyx.c
Zbigniew Jędrzejewski-Szmek 11a1589223 tree-wide: drop license boilerplate
Files which are installed as-is (any .service and other unit files, .conf
files, .policy files, etc), are left as is. My assumption is that SPDX
identifiers are not yet that well known, so it's better to retain the
extended header to avoid any doubt.

I also kept any copyright lines. We can probably remove them, but it'd nice to
obtain explicit acks from all involved authors before doing that.
2018-04-06 18:58:55 +02:00

95 lines
2.5 KiB
C

/* SPDX-License-Identifier: LGPL-2.1+ */
/***
This file is part of systemd.
Copyright 2013 Thomas H.P. Andersen
***/
#include <string.h>
#include "string-util.h"
#include "strxcpyx.h"
#include "util.h"
static void test_strpcpy(void) {
char target[25];
char *s = target;
size_t space_left;
space_left = sizeof(target);
space_left = strpcpy(&s, space_left, "12345");
space_left = strpcpy(&s, space_left, "hey hey hey");
space_left = strpcpy(&s, space_left, "waldo");
space_left = strpcpy(&s, space_left, "ba");
space_left = strpcpy(&s, space_left, "r");
space_left = strpcpy(&s, space_left, "foo");
assert_se(streq(target, "12345hey hey heywaldobar"));
assert_se(space_left == 0);
}
static void test_strpcpyf(void) {
char target[25];
char *s = target;
size_t space_left;
space_left = sizeof(target);
space_left = strpcpyf(&s, space_left, "space left: %zu. ", space_left);
space_left = strpcpyf(&s, space_left, "foo%s", "bar");
assert_se(streq(target, "space left: 25. foobar"));
assert_se(space_left == 3);
/* test overflow */
s = target;
space_left = strpcpyf(&s, 12, "00 left: %i. ", 999);
assert_se(streq(target, "00 left: 99"));
assert_se(space_left == 0);
assert_se(target[12] == '2');
}
static void test_strpcpyl(void) {
char target[25];
char *s = target;
size_t space_left;
space_left = sizeof(target);
space_left = strpcpyl(&s, space_left, "waldo", " test", " waldo. ", NULL);
space_left = strpcpyl(&s, space_left, "Banana", NULL);
assert_se(streq(target, "waldo test waldo. Banana"));
assert_se(space_left == 1);
}
static void test_strscpy(void) {
char target[25];
size_t space_left;
space_left = sizeof(target);
space_left = strscpy(target, space_left, "12345");
assert_se(streq(target, "12345"));
assert_se(space_left == 20);
}
static void test_strscpyl(void) {
char target[25];
size_t space_left;
space_left = sizeof(target);
space_left = strscpyl(target, space_left, "12345", "waldo", "waldo", NULL);
assert_se(streq(target, "12345waldowaldo"));
assert_se(space_left == 10);
}
int main(int argc, char *argv[]) {
test_strpcpy();
test_strpcpyf();
test_strpcpyl();
test_strscpy();
test_strscpyl();
return 0;
}