4 #include <boost/test/unit_test.hpp>
6 #include "zypp/base/LogTools.h"
7 #include "zypp/Pathname.h"
9 using boost::unit_test::test_suite;
10 using boost::unit_test::test_case;
15 BOOST_AUTO_TEST_CASE(pathname_default_ctor)
19 BOOST_CHECK_EQUAL(p.empty(), true );
20 BOOST_CHECK_EQUAL(p.absolute(), false );
21 BOOST_CHECK_EQUAL(p.relative(), false );
22 BOOST_CHECK_EQUAL(p.dirname(), "" );
23 BOOST_CHECK_EQUAL(p.basename(), "" );
24 BOOST_CHECK_EQUAL(p.extension(), "" );
25 BOOST_CHECK_EQUAL(p.absolutename(), "" );
26 BOOST_CHECK_EQUAL(p.relativename(), "" );
29 BOOST_AUTO_TEST_CASE(pathname_root)
33 BOOST_CHECK_EQUAL(p.empty(), false );
34 BOOST_CHECK_EQUAL(p.absolute(), true );
35 BOOST_CHECK_EQUAL(p.relative(), false );
36 BOOST_CHECK_EQUAL(p.dirname(), "/" );
37 BOOST_CHECK_EQUAL(p.basename(), "/" );
38 BOOST_CHECK_EQUAL(p.extension(), "" );
39 BOOST_CHECK_EQUAL(p.absolutename(), "/" );
40 BOOST_CHECK_EQUAL(p.relativename(), "./" );
43 BOOST_AUTO_TEST_CASE(pathname_this)
47 BOOST_CHECK_EQUAL(p.empty(), false );
48 BOOST_CHECK_EQUAL(p.absolute(), false );
49 BOOST_CHECK_EQUAL(p.relative(), true );
50 BOOST_CHECK_EQUAL(p.dirname(), "." );
51 BOOST_CHECK_EQUAL(p.basename(), "." );
52 BOOST_CHECK_EQUAL(p.extension(), "" );
53 BOOST_CHECK_EQUAL(p.absolutename(), "/" );
54 BOOST_CHECK_EQUAL(p.relativename(), "." );
57 BOOST_AUTO_TEST_CASE(pathname_up)
61 BOOST_CHECK_EQUAL(p.empty(), false );
62 BOOST_CHECK_EQUAL(p.absolute(), false );
63 BOOST_CHECK_EQUAL(p.relative(), true );
64 BOOST_CHECK_EQUAL(p.dirname(), "." );
65 BOOST_CHECK_EQUAL(p.basename(), ".." );
66 BOOST_CHECK_EQUAL(p.extension(), "" );
67 BOOST_CHECK_EQUAL(p.absolutename(), "/" );
68 BOOST_CHECK_EQUAL(p.relativename(), ".." );
71 BOOST_AUTO_TEST_CASE(pathname_abs)
73 Pathname p("/foo/baa.ka");
75 BOOST_CHECK_EQUAL(p.empty(), false );
76 BOOST_CHECK_EQUAL(p.absolute(), true );
77 BOOST_CHECK_EQUAL(p.relative(), false );
78 BOOST_CHECK_EQUAL(p.dirname(), "/foo" );
79 BOOST_CHECK_EQUAL(p.basename(), "baa.ka" );
80 BOOST_CHECK_EQUAL(p.extension(), ".ka" );
81 BOOST_CHECK_EQUAL(p.absolutename(), "/foo/baa.ka" );
82 BOOST_CHECK_EQUAL(p.relativename(), "./foo/baa.ka" );
85 BOOST_AUTO_TEST_CASE(pathname_rel)
87 Pathname p("./foo/./../baa.ka");
89 BOOST_CHECK_EQUAL(p.empty(), false );
90 BOOST_CHECK_EQUAL(p.absolute(), false );
91 BOOST_CHECK_EQUAL(p.relative(), true );
92 BOOST_CHECK_EQUAL(p.dirname(), "." );
93 BOOST_CHECK_EQUAL(p.basename(), "baa.ka" );
94 BOOST_CHECK_EQUAL(p.extension(), ".ka" );
95 BOOST_CHECK_EQUAL(p.absolutename(), "/baa.ka" );
96 BOOST_CHECK_EQUAL(p.relativename(), "./baa.ka" );
99 BOOST_AUTO_TEST_CASE(pathname_relup)
101 Pathname p("./../foo/./../baa");
103 BOOST_CHECK_EQUAL(p.empty(), false );
104 BOOST_CHECK_EQUAL(p.absolute(), false );
105 BOOST_CHECK_EQUAL(p.relative(), true );
106 BOOST_CHECK_EQUAL(p.dirname(), ".." );
107 BOOST_CHECK_EQUAL(p.basename(), "baa" );
108 BOOST_CHECK_EQUAL(p.extension(), "" );
109 BOOST_CHECK_EQUAL(p.absolutename(), "/baa" );
110 BOOST_CHECK_EQUAL(p.relativename(), "../baa" );
113 BOOST_AUTO_TEST_CASE(pathname_strval)
115 BOOST_CHECK_EQUAL(Pathname("").asString(), "" );
116 BOOST_CHECK_EQUAL(Pathname("/////./").asString(), "/" );
117 BOOST_CHECK_EQUAL(Pathname("./").asString(), "." );
118 BOOST_CHECK_EQUAL(Pathname("/.").asString(), "/" );
119 BOOST_CHECK_EQUAL(Pathname("./..").asString(), "./.." ); // ? ..
120 BOOST_CHECK_EQUAL(Pathname("../").asString(), "./.." ); // ? ..
121 BOOST_CHECK_EQUAL(Pathname(".././..").asString(), "./../.." ); // ? ../..
124 BOOST_CHECK_EQUAL(Pathname("//baa").asString(), "/baa" );
125 BOOST_CHECK_EQUAL(Pathname("/./baa").asString(), "/baa" );
126 BOOST_CHECK_EQUAL(Pathname("/baa/..").asString(), "/" );
127 BOOST_CHECK_EQUAL(Pathname("/baa/../baa").asString(), "/baa" );
128 BOOST_CHECK_EQUAL(Pathname("/./../foo/./../baa").asString(), "/baa" );
130 BOOST_CHECK_EQUAL(Pathname("/").asString(), "/" );
131 BOOST_CHECK_EQUAL(Pathname(".").asString(), "." );
132 BOOST_CHECK_EQUAL(Pathname("..").asString(), "./.." );
133 BOOST_CHECK_EQUAL(Pathname("/.").asString(), "/" );
134 BOOST_CHECK_EQUAL(Pathname("/..").asString(), "/" );
135 BOOST_CHECK_EQUAL(Pathname("/./.").asString(), "/" );
136 BOOST_CHECK_EQUAL(Pathname("/./..").asString(), "/" );
137 BOOST_CHECK_EQUAL(Pathname("/../.").asString(), "/" );
138 BOOST_CHECK_EQUAL(Pathname("/../..").asString(), "/" );
139 BOOST_CHECK_EQUAL(Pathname("/././").asString(), "/" );
140 BOOST_CHECK_EQUAL(Pathname("/./../").asString(), "/" );
141 BOOST_CHECK_EQUAL(Pathname("/.././").asString(), "/" );
142 BOOST_CHECK_EQUAL(Pathname("/../../").asString(), "/" );
144 BOOST_CHECK_EQUAL(Pathname("a\\b").asString(), "./a\\b" );
145 BOOST_CHECK_EQUAL(Pathname("a/b").asString(), "./a/b" );
146 BOOST_CHECK_EQUAL(Pathname("c:a\\b").asString(), "./c:a\\b" );
147 BOOST_CHECK_EQUAL(Pathname("c:a/b").asString(), "./c:a/b" );
148 BOOST_CHECK_EQUAL(Pathname("cc:a\\b").asString(), "./cc:a\\b" );
149 BOOST_CHECK_EQUAL(Pathname("cc:a/b").asString(), "./cc:a/b" );
152 BOOST_AUTO_TEST_CASE(pathname_stripprefix)
154 BOOST_CHECK_EQUAL( Pathname::stripprefix( "", "" ), "" );
155 BOOST_CHECK_EQUAL( Pathname::stripprefix( "", "/" ), "/" );
156 BOOST_CHECK_EQUAL( Pathname::stripprefix( "", "/foo" ), "/foo" );
157 BOOST_CHECK_EQUAL( Pathname::stripprefix( "/", "" ), "" );
158 BOOST_CHECK_EQUAL( Pathname::stripprefix( "/", "/" ), "/" );
159 BOOST_CHECK_EQUAL( Pathname::stripprefix( "/", "/foo" ), "/foo" );
160 BOOST_CHECK_EQUAL( Pathname::stripprefix( "/f", "" ), "" );
161 BOOST_CHECK_EQUAL( Pathname::stripprefix( "/f", "/" ), "/" );
162 BOOST_CHECK_EQUAL( Pathname::stripprefix( "/f", "/foo" ), "/foo" );
163 BOOST_CHECK_EQUAL( Pathname::stripprefix( "/foo", "" ), "" );
164 BOOST_CHECK_EQUAL( Pathname::stripprefix( "/foo", "/" ), "/" );
165 BOOST_CHECK_EQUAL( Pathname::stripprefix( "/foo", "/foo" ), "/" );
166 BOOST_CHECK_EQUAL( Pathname::stripprefix( "/foo", "/foo/baa" ), "/baa" );