1 /* Copyright (c) 2015 Google Inc
2 * Barret Rhoden <brho@cs.berkeley.edu>
3 * See LICENSE for details. */
5 #include <utest/utest.h>
11 #include <parlib/net.h>
13 TEST_SUITE("DEVVARS");
15 static bool test_read_var(const char *name, const char *val)
20 ret = snprintf(buf, sizeof(buf), "#vars/%s", name);
21 if (snprintf_error(ret, sizeof(buf)))
22 UT_ASSERT_FMT("snprintf failed!", FALSE);
23 fd = open(buf, O_READ);
24 UT_ASSERT_FMT("Could not open vars file %s, check CONFIG_DEVVARS_TEST",
26 ret = read(fd, buf, sizeof(buf));
27 UT_ASSERT_FMT("Could not read vars file %s", ret > 0, buf);
28 UT_ASSERT_FMT("Value differs, got %s, wanted %s", strcmp(buf, val) == 0,
33 bool test_devvars_fmt(void)
35 if (!test_read_var("s!s", "string"))
37 if (!test_read_var("c!c", "x"))
39 if (!test_read_var("u8!ub", "8"))
41 if (!test_read_var("u16!uh", "16"))
43 if (!test_read_var("u32!uw", "32"))
45 if (!test_read_var("u64!ug", "64"))
47 if (!test_read_var("d8!db", "-8"))
49 if (!test_read_var("d16!dh", "-16"))
51 if (!test_read_var("d32!dw", "-32"))
53 if (!test_read_var("d64!dg", "-64"))
55 if (!test_read_var("x8!xb", "0x8"))
57 if (!test_read_var("x16!xh", "0x16"))
59 if (!test_read_var("x32!xw", "0x32"))
61 if (!test_read_var("x64!xg", "0x64"))
63 if (!test_read_var("o8!ob", "01"))
65 if (!test_read_var("o16!oh", "016"))
67 if (!test_read_var("o32!ow", "032"))
69 if (!test_read_var("o64!og", "064"))
74 static bool test_new_var(const char *name, const char *val)
80 ret = snprintf(path, sizeof(path), "#vars/%s", name);
81 if (snprintf_error(ret, sizeof(path)))
82 UT_ASSERT_FMT("snprintf failed!", FALSE);
83 fd = open(path, O_READ | O_CREATE, S_IRUSR);
84 UT_ASSERT_FMT("Could not open vars file %s, check CONFIG_DEVVARS_TEST",
86 ret = read(fd, buf, sizeof(buf));
87 UT_ASSERT_FMT("Could not read vars file %s", ret > 0, path);
88 UT_ASSERT_FMT("Value differs, got %s, wanted %s", strcmp(buf, val) == 0,
91 UT_ASSERT_FMT("Could not remove %s", ret == 0, path);
95 bool test_devvars_newfile(void)
97 if (!test_new_var("devvars_foobar!s", "foobar"))
102 /* Make sure test_read_var() knows how to fail */
103 bool test_devvars_test(void)
105 UT_ASSERT_FMT("Opened when it shouldn't have",
106 !test_read_var("NO_SUCH_FILE!xw", "0x32"));
107 UT_ASSERT_FMT("Got the wrong value but thought it was fine",
108 !test_read_var("x32!xw", "0xdeadbeef"));
112 struct utest utests[] = {
113 UTEST_REG(devvars_fmt),
114 UTEST_REG(devvars_newfile),
115 UTEST_REG(devvars_test),
117 int num_utests = sizeof(utests) / sizeof(struct utest);
119 int main(int argc, char *argv[])
121 char **whitelist = &argv[1];
122 int whitelist_len = argc - 1;
124 RUN_TEST_SUITE(utests, num_utests, whitelist, whitelist_len);