static int mkdirs_test(struct redfish_client *cli) { /* Very simple case-- only creating one directory in the root */ ST_EXPECT_ZERO(redfish_mkdirs(cli, 0644, "/solo")); ST_EXPECT_EQ(stest_stat(cli, "/solo"), STEST_STAT_RES_DIR); stest_set_status(20); /* Create a lot of nested directories */ ST_EXPECT_ZERO(redfish_mkdirs(cli, 0644, "/a/b/c/d/e")); ST_EXPECT_EQ(stest_stat(cli, "/a/b/c/d/e"), STEST_STAT_RES_DIR); ST_EXPECT_EQ(stest_stat(cli, "/a/b/c/d"), STEST_STAT_RES_DIR); ST_EXPECT_EQ(stest_stat(cli, "/a/b/c"), STEST_STAT_RES_DIR); ST_EXPECT_EQ(stest_stat(cli, "/a/b"), STEST_STAT_RES_DIR); ST_EXPECT_EQ(stest_stat(cli, "/a"), STEST_STAT_RES_DIR); stest_set_status(50); /** We should be able to create directories when some of the path * components already exist. */ ST_EXPECT_ZERO(redfish_mkdirs(cli, 0644, "/a/b/foo/bar")); ST_EXPECT_EQ(stest_stat(cli, "/a/b/foo/bar"), STEST_STAT_RES_DIR); ST_EXPECT_EQ(stest_stat(cli, "/a/b/foo"), STEST_STAT_RES_DIR); stest_set_status(70); /** There is no error if all of the directories already exist */ ST_EXPECT_ZERO(redfish_mkdirs(cli, 0644, "/")); ST_EXPECT_ZERO(redfish_mkdirs(cli, 0644, "/a")); stest_set_status(100); return 0; }
int main() { enum { bits = CHAR_BIT*sizeof(void*) }; fprintf(stderr, "\n** C Object System Speed Testsuite (C++, %d bits) **\n", bits); st_methods(); st_multimethods(); st_memory(); stest_stat(); return EXIT_SUCCESS; }