pathtest.cpp

来自「C++ class libraries for network-centric,」· C++ 代码 · 共 825 行 · 第 1/2 页

CPP
825
字号
//// PathTest.cpp//// $Id: //poco/1.2/Foundation/testsuite/src/PathTest.cpp#1 $//// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.// and Contributors.//// Permission is hereby granted, free of charge, to any person or organization// obtaining a copy of the software and accompanying documentation covered by// this license (the "Software") to use, reproduce, display, distribute,// execute, and transmit the Software, and to prepare derivative works of the// Software, and to permit third-parties to whom the Software is furnished to// do so, all subject to the following:// // The copyright notices in the Software and this entire statement, including// the above license grant, this restriction and the following disclaimer,// must be included in all copies of the Software, in whole or in part, and// all derivative works of the Software, unless such copies or derivative// works are solely in the form of machine-executable object code generated by// a source language processor.// // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER// DEALINGS IN THE SOFTWARE.//#include "PathTest.h"#include "CppUnit/TestCaller.h"#include "CppUnit/TestSuite.h"#include "Poco/Path.h"#include "Poco/Exception.h"#include "Poco/Random.h"#include "Poco/Environment.h"#include <iostream>using Poco::Path;using Poco::PathSyntaxException;using Poco::Random;using Poco::Environment;PathTest::PathTest(const std::string& name): CppUnit::TestCase(name){}PathTest::~PathTest(){}void PathTest::testParseUnix1(){	Path p;	p.parse("", Path::PATH_UNIX);	assert (p.isRelative());	assert (!p.isAbsolute());	assert (p.depth() == 0);	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "");	p.parse("/", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 0);	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/");	p.parse("/usr", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 0);	assert (!p.isDirectory());	assert (p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/usr");	p.parse("/usr/", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 1);	assert (p[0] == "usr");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/usr/");	p.parse("usr/", Path::PATH_UNIX);	assert (p.isRelative());	assert (!p.isAbsolute());	assert (p.depth() == 1);	assert (p[0] == "usr");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "usr/");	p.parse("usr", Path::PATH_UNIX);	assert (p.isRelative());	assert (!p.isAbsolute());	assert (p.depth() == 0);	assert (p[0] == "usr");	assert (!p.isDirectory());	assert (p.isFile());	assert (p.toString(Path::PATH_UNIX) == "usr");		p.parse("/usr/local", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 1);	assert (p[0] == "usr");	assert (p[1] == "local");	assert (!p.isDirectory());	assert (p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/usr/local");}void PathTest::testParseUnix2(){	Path p;	p.parse("/usr/local/", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 2);	assert (p[0] == "usr");	assert (p[1] == "local");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/usr/local/");	p.parse("usr/local/", Path::PATH_UNIX);	assert (p.isRelative());	assert (!p.isAbsolute());	assert (p.depth() == 2);	assert (p[0] == "usr");	assert (p[1] == "local");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "usr/local/");	p.parse("usr/local", Path::PATH_UNIX);	assert (p.isRelative());	assert (!p.isAbsolute());	assert (p.depth() == 1);	assert (p[0] == "usr");	assert (p[1] == "local");	assert (!p.isDirectory());	assert (p.isFile());	assert (p.toString(Path::PATH_UNIX) == "usr/local");	p.parse("/usr/local/bin", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 2);	assert (p[0] == "usr");	assert (p[1] == "local");	assert (p[2] == "bin");	assert (!p.isDirectory());	assert (p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/usr/local/bin");	p.parse("/usr/local/bin/", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 3);	assert (p[0] == "usr");	assert (p[1] == "local");	assert (p[2] == "bin");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/usr/local/bin/");}void PathTest::testParseUnix3(){	Path p;	p.parse("//usr/local/bin/", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 3);	assert (p[0] == "usr");	assert (p[1] == "local");	assert (p[2] == "bin");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/usr/local/bin/");	p.parse("/usr//local/bin/", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 3);	assert (p[0] == "usr");	assert (p[1] == "local");	assert (p[2] == "bin");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/usr/local/bin/");	p.parse("/usr/local//bin/", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 3);	assert (p[0] == "usr");	assert (p[1] == "local");	assert (p[2] == "bin");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/usr/local/bin/");	p.parse("/usr/local/bin//", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 3);	assert (p[0] == "usr");	assert (p[1] == "local");	assert (p[2] == "bin");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/usr/local/bin/");		p.parse("/usr/local/./bin/", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 3);	assert (p[0] == "usr");	assert (p[1] == "local");	assert (p[2] == "bin");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/usr/local/bin/");	p.parse("./usr/local/bin/", Path::PATH_UNIX);	assert (p.isRelative());	assert (!p.isAbsolute());	assert (p.depth() == 3);	assert (p[0] == "usr");	assert (p[1] == "local");	assert (p[2] == "bin");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "usr/local/bin/");	p.parse("./usr/local/bin/./", Path::PATH_UNIX);	assert (p.isRelative());	assert (!p.isAbsolute());	assert (p.depth() == 3);	assert (p[0] == "usr");	assert (p[1] == "local");	assert (p[2] == "bin");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "usr/local/bin/");	p.parse("./usr/local/bin/.", Path::PATH_UNIX);	assert (p.isRelative());	assert (!p.isAbsolute());	assert (p.depth() == 3);	assert (p[0] == "usr");	assert (p[1] == "local");	assert (p[2] == "bin");	assert (!p.isDirectory());	assert (p.isFile());	assert (p.toString(Path::PATH_UNIX) == "usr/local/bin/.");}void PathTest::testParseUnix4(){	Path p;	p.parse("/usr/local/lib/../bin/", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 3);	assert (p[0] == "usr");	assert (p[1] == "local");	assert (p[2] == "bin");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/usr/local/bin/");	p.parse("/usr/local/lib/../bin/", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 3);	assert (p[0] == "usr");	assert (p[1] == "local");	assert (p[2] == "bin");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/usr/local/bin/");	p.parse("/usr/local/lib/../../", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 1);	assert (p[0] == "usr");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/usr/");	p.parse("/usr/local/lib/..", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 3);	assert (p[0] == "usr");	assert (p[1] == "local");	assert (p[2] == "lib");	assert (!p.isDirectory());	assert (p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/usr/local/lib/..");	p.parse("../usr/local/lib/", Path::PATH_UNIX);	assert (p.isRelative());	assert (!p.isAbsolute());	assert (p.depth() == 4);	assert (p[0] == "..");	assert (p[1] == "usr");	assert (p[2] == "local");	assert (p[3] == "lib");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "../usr/local/lib/");	p.parse("/usr/../lib/", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 1);	assert (p[0] == "lib");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/lib/");	p.parse("/usr/../../lib/", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 1);	assert (p[0] == "lib");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/lib/");	p.parse("local/../../lib/", Path::PATH_UNIX);	assert (p.isRelative());	assert (!p.isAbsolute());	assert (p.depth() == 2);	assert (p[0] == "..");	assert (p[1] == "lib");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "../lib/");		p.parse("a/b/c/d", Path::PATH_UNIX);	assert (p.isRelative());	assert (!p.isAbsolute());	assert (p.depth() == 3);	assert (p[0] == "a");	assert (p[1] == "b");	assert (p[2] == "c");	assert (!p.isDirectory());	assert (p.isFile());	assert (p.toString(Path::PATH_UNIX) == "a/b/c/d");}void PathTest::testParseUnix5(){	Path p;	p.parse("/c:/windows/system32/", Path::PATH_UNIX);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.getDevice() == "c");	assert (p.depth() == 2);	assert (p[0] == "windows");	assert (p[1] == "system32");	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_UNIX) == "/c:/windows/system32/");	}void PathTest::testParseWindows1(){	Path p;	p.parse("", Path::PATH_WINDOWS);	assert (p.isRelative());	assert (!p.isAbsolute());	assert (p.depth() == 0);	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_WINDOWS) == "");	p.parse("/", Path::PATH_WINDOWS);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 0);	assert (p.isDirectory());	assert (!p.isFile());	assert (p.toString(Path::PATH_WINDOWS) == "\\");	p.parse("\\", Path::PATH_WINDOWS);	assert (!p.isRelative());	assert (p.isAbsolute());	assert (p.depth() == 0);	assert (p.isDirectory());	assert (!p.isFile());

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?