Пример #1
0
int main(int argc, char **argv) {
    char *sta, *end;
    int argi = 1, testi;
     
    init_testcase();
//    init_directories(); /* OS HW6 */
    remove_directories(); // avoid collisions
    do {
	if (argi >= argc)
	    end = sta = NULL;
	else if (ISTEST(argv[argi]))
	    end = sta = argv[argi];
	else if (ISRANGE(argv[argi]))
	    end = (sta = argv[argi]) + 3;
	else {
	    fprintf(stderr, "invalid: %s\n", argv[argi]);
	    fprintf(stderr, "USAGE: ./test\n");
	    fprintf(stderr, " ./test [num] ...\n");
	    fprintf(stderr, " ./test [num]-[num] ...\n");
	    continue;
	}
	 
	for (testi = 0 ; testcase[testi] != NULL ; testi++) {
	    if (sta == NULL || end == NULL || (
			strncmp(sta, testcase[testi]->num, 2) <= 0 &&
			strncmp(end, testcase[testi]->num, 2) >= 0))
		 
		runtest(testcase[testi]);
	}
    } while (++argi < argc);
    //  remove_directories();
    return 0;
}
	LEMON_UNITTEST_CASE(FileSystemUnittest,exist_Test)
	{
		String current = current_directory();

		current_directory(current);

		LEMON_CHECK(current_directory() == current);

		String dirName = LEMON_TEXT("{C3F0C7DD-A2A8-42B5-BF87-277345DE9774}");

		if(exists(dirName))
		{
			if(is_directory(dirName)) remove_directories(dirName);

			else remove_file(dirName);
		}

		create_directory(dirName);

		LEMON_CHECK(exists(dirName));

		const static size_t children = 100;

		for(size_t i = 0; i < children ; ++ i)
		{
			StringStream stream;

			stream << LEMON_TEXT("{C3F0C7DD-A2A8-42B5-BF87-277345DE9774}/") << i;

			String currentFile = stream.str();

			create_directory(currentFile);

			LEMON_CHECK(exists(currentFile));
		}

		directory_iteartor_t iter(dirName);

		directory_iteartor_t end;

		size_t i;

		for(i = 0;iter != end; ++ iter,++i)
		{
			if(LEMON_TEXT(".") == *iter) continue;

			if(LEMON_TEXT("..") == *iter) continue;

			String path = dirName + LEMON_TEXT("/") + *iter;

			remove_directory(path);

			LEMON_CHECK(!exists(path));
		}

		LEMON_CHECK(children == (i - 2));

		remove_directory(dirName);

		LEMON_CHECK(!exists(dirName));
	}