annotate 3rdparty/vmime/tests/utility/pathTest.cpp @ 0:a4671277546c tip

created the repository for the thymian project
author ferencd
date Tue, 17 Aug 2021 11:19:54 +0200
parents
children
rev   line source
ferencd@0 1 //
ferencd@0 2 // VMime library (http://www.vmime.org)
ferencd@0 3 // Copyright (C) 2002-2013 Vincent Richard <vincent@vmime.org>
ferencd@0 4 //
ferencd@0 5 // This program is free software; you can redistribute it and/or
ferencd@0 6 // modify it under the terms of the GNU General Public License as
ferencd@0 7 // published by the Free Software Foundation; either version 3 of
ferencd@0 8 // the License, or (at your option) any later version.
ferencd@0 9 //
ferencd@0 10 // This program is distributed in the hope that it will be useful,
ferencd@0 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
ferencd@0 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
ferencd@0 13 // General Public License for more details.
ferencd@0 14 //
ferencd@0 15 // You should have received a copy of the GNU General Public License along
ferencd@0 16 // with this program; if not, write to the Free Software Foundation, Inc.,
ferencd@0 17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
ferencd@0 18 //
ferencd@0 19 // Linking this library statically or dynamically with other modules is making
ferencd@0 20 // a combined work based on this library. Thus, the terms and conditions of
ferencd@0 21 // the GNU General Public License cover the whole combination.
ferencd@0 22 //
ferencd@0 23
ferencd@0 24 #include "tests/testUtils.hpp"
ferencd@0 25
ferencd@0 26 #include "vmime/utility/path.hpp"
ferencd@0 27
ferencd@0 28
ferencd@0 29 VMIME_TEST_SUITE_BEGIN(utilityPathTest)
ferencd@0 30
ferencd@0 31 VMIME_TEST_LIST_BEGIN
ferencd@0 32 VMIME_TEST(testConstruct1)
ferencd@0 33 VMIME_TEST(testConstruct2)
ferencd@0 34 VMIME_TEST(testConstruct3)
ferencd@0 35 VMIME_TEST(testConstruct4)
ferencd@0 36
ferencd@0 37 VMIME_TEST(testAppendComponent)
ferencd@0 38
ferencd@0 39 VMIME_TEST(testOperatorDiv1)
ferencd@0 40 VMIME_TEST(testOperatorDiv2)
ferencd@0 41
ferencd@0 42 VMIME_TEST(testOperatorDivEqual1)
ferencd@0 43 VMIME_TEST(testOperatorDivEqual2)
ferencd@0 44
ferencd@0 45 VMIME_TEST(testGetParent)
ferencd@0 46
ferencd@0 47 VMIME_TEST(testComparison)
ferencd@0 48
ferencd@0 49 VMIME_TEST(testGetLastComponent)
ferencd@0 50
ferencd@0 51 VMIME_TEST(testIsDirectParentOf)
ferencd@0 52 VMIME_TEST(testIsParentOf)
ferencd@0 53 VMIME_TEST(testIsParentOf_EquivalentCharset)
ferencd@0 54
ferencd@0 55 VMIME_TEST(testRenameParent)
ferencd@0 56
ferencd@0 57 VMIME_TEST(testFromString)
ferencd@0 58 VMIME_TEST(testFromString_IgnoreLeadingOrTrailingSep)
ferencd@0 59 VMIME_TEST(testToString)
ferencd@0 60 VMIME_TEST_LIST_END
ferencd@0 61
ferencd@0 62
ferencd@0 63 typedef vmime::utility::path path;
ferencd@0 64 typedef vmime::utility::path::component comp;
ferencd@0 65
ferencd@0 66
ferencd@0 67 void testConstruct1()
ferencd@0 68 {
ferencd@0 69 VASSERT_EQ("1", true, path().isEmpty());
ferencd@0 70 VASSERT_EQ("2", 0, path().getSize());
ferencd@0 71 }
ferencd@0 72
ferencd@0 73 void testConstruct2()
ferencd@0 74 {
ferencd@0 75 path p(comp("foo"));
ferencd@0 76
ferencd@0 77 VASSERT_EQ("1", false, p.isEmpty());
ferencd@0 78 VASSERT_EQ("2", 1, p.getSize());
ferencd@0 79 VASSERT_EQ("3", "foo", p.getComponentAt(0).getBuffer());
ferencd@0 80 }
ferencd@0 81
ferencd@0 82 void testAppendComponent()
ferencd@0 83 {
ferencd@0 84 path p;
ferencd@0 85
ferencd@0 86 VASSERT_EQ("1", 0, p.getSize());
ferencd@0 87
ferencd@0 88 comp c("foo");
ferencd@0 89 p.appendComponent(c);
ferencd@0 90
ferencd@0 91 VASSERT_EQ("2", 1, p.getSize());
ferencd@0 92 VASSERT_EQ("3", c.getBuffer(), p.getComponentAt(0).getBuffer());
ferencd@0 93 }
ferencd@0 94
ferencd@0 95 void testConstruct3()
ferencd@0 96 {
ferencd@0 97 path p1;
ferencd@0 98 p1.appendComponent(comp("foo"));
ferencd@0 99 p1.appendComponent(comp("bar"));
ferencd@0 100
ferencd@0 101 path p2(p1);
ferencd@0 102
ferencd@0 103 VASSERT_EQ("1", 2, p2.getSize());
ferencd@0 104 VASSERT_EQ("2", "foo", p2.getComponentAt(0).getBuffer());
ferencd@0 105 VASSERT_EQ("3", "bar", p2.getComponentAt(1).getBuffer());
ferencd@0 106 }
ferencd@0 107
ferencd@0 108 void testConstruct4()
ferencd@0 109 {
ferencd@0 110 // Same as path::path(const component&)
ferencd@0 111 path p("foo");
ferencd@0 112
ferencd@0 113 VASSERT_EQ("1", false, p.isEmpty());
ferencd@0 114 VASSERT_EQ("2", 1, p.getSize());
ferencd@0 115 VASSERT_EQ("3", "foo", p.getComponentAt(0).getBuffer());
ferencd@0 116 }
ferencd@0 117
ferencd@0 118 void testOperatorDiv1()
ferencd@0 119 {
ferencd@0 120 path p1;
ferencd@0 121 p1.appendComponent(comp("foo"));
ferencd@0 122 p1.appendComponent(comp("bar"));
ferencd@0 123
ferencd@0 124 path p2;
ferencd@0 125 p2.appendComponent(comp("baz"));
ferencd@0 126
ferencd@0 127 path p3 = p1 / p2;
ferencd@0 128
ferencd@0 129 VASSERT_EQ("1", 3, p3.getSize());
ferencd@0 130 VASSERT_EQ("2", p1.getComponentAt(0).getBuffer(), p3.getComponentAt(0).getBuffer());
ferencd@0 131 VASSERT_EQ("3", p1.getComponentAt(1).getBuffer(), p3.getComponentAt(1).getBuffer());
ferencd@0 132 VASSERT_EQ("4", p2.getComponentAt(0).getBuffer(), p3.getComponentAt(2).getBuffer());
ferencd@0 133 }
ferencd@0 134
ferencd@0 135 void testOperatorDiv2()
ferencd@0 136 {
ferencd@0 137 path p1;
ferencd@0 138 p1.appendComponent(comp("foo"));
ferencd@0 139 p1.appendComponent(comp("bar"));
ferencd@0 140
ferencd@0 141 comp c("baz");
ferencd@0 142
ferencd@0 143 path p2 = p1 / c;
ferencd@0 144
ferencd@0 145 VASSERT_EQ("1", 3, p2.getSize());
ferencd@0 146 VASSERT_EQ("2", p1.getComponentAt(0).getBuffer(), p2.getComponentAt(0).getBuffer());
ferencd@0 147 VASSERT_EQ("3", p1.getComponentAt(1).getBuffer(), p2.getComponentAt(1).getBuffer());
ferencd@0 148 VASSERT_EQ("4", c.getBuffer(), p2.getComponentAt(2).getBuffer());
ferencd@0 149 }
ferencd@0 150
ferencd@0 151 void testOperatorDivEqual1()
ferencd@0 152 {
ferencd@0 153 path p1;
ferencd@0 154 p1.appendComponent(comp("foo"));
ferencd@0 155 p1.appendComponent(comp("bar"));
ferencd@0 156
ferencd@0 157 path p2;
ferencd@0 158 p2.appendComponent(comp("baz"));
ferencd@0 159
ferencd@0 160 path p3(p1);
ferencd@0 161 p3 /= p2;
ferencd@0 162
ferencd@0 163 VASSERT_EQ("1", 3, p3.getSize());
ferencd@0 164 VASSERT_EQ("2", p1.getComponentAt(0).getBuffer(), p3.getComponentAt(0).getBuffer());
ferencd@0 165 VASSERT_EQ("3", p1.getComponentAt(1).getBuffer(), p3.getComponentAt(1).getBuffer());
ferencd@0 166 VASSERT_EQ("4", p2.getComponentAt(0).getBuffer(), p3.getComponentAt(2).getBuffer());
ferencd@0 167 }
ferencd@0 168
ferencd@0 169 void testOperatorDivEqual2()
ferencd@0 170 {
ferencd@0 171 path p1;
ferencd@0 172 p1.appendComponent(comp("foo"));
ferencd@0 173 p1.appendComponent(comp("bar"));
ferencd@0 174
ferencd@0 175 comp c("baz");
ferencd@0 176
ferencd@0 177 path p2(p1);
ferencd@0 178 p2 /= c;
ferencd@0 179
ferencd@0 180 VASSERT_EQ("1", 3, p2.getSize());
ferencd@0 181 VASSERT_EQ("2", p1.getComponentAt(0).getBuffer(), p2.getComponentAt(0).getBuffer());
ferencd@0 182 VASSERT_EQ("3", p1.getComponentAt(1).getBuffer(), p2.getComponentAt(1).getBuffer());
ferencd@0 183 VASSERT_EQ("4", c.getBuffer(), p2.getComponentAt(2).getBuffer());
ferencd@0 184 }
ferencd@0 185
ferencd@0 186 void testGetParent()
ferencd@0 187 {
ferencd@0 188 path p1;
ferencd@0 189 path p1p = p1.getParent();
ferencd@0 190
ferencd@0 191 VASSERT_EQ("1", true, p1p.isEmpty());
ferencd@0 192
ferencd@0 193 path p2;
ferencd@0 194 p2.appendComponent(comp("foo"));
ferencd@0 195 p2.appendComponent(comp("bar"));
ferencd@0 196
ferencd@0 197 path p2p = p2.getParent();
ferencd@0 198
ferencd@0 199 VASSERT_EQ("2", 1, p2p.getSize());
ferencd@0 200 VASSERT_EQ("3", p2.getComponentAt(0).getBuffer(), p2p.getComponentAt(0).getBuffer());
ferencd@0 201 }
ferencd@0 202
ferencd@0 203 void testComparison()
ferencd@0 204 {
ferencd@0 205 path p1;
ferencd@0 206 p1.appendComponent(comp("foo"));
ferencd@0 207 p1.appendComponent(comp("bar"));
ferencd@0 208
ferencd@0 209 path p2;
ferencd@0 210 p2.appendComponent(comp("foo"));
ferencd@0 211 p2.appendComponent(comp("bar"));
ferencd@0 212
ferencd@0 213 path p3;
ferencd@0 214 p3.appendComponent(comp("foo"));
ferencd@0 215 p3.appendComponent(comp("bar"));
ferencd@0 216 p3.appendComponent(comp("baz"));
ferencd@0 217
ferencd@0 218 VASSERT_EQ("1", true, p1 == p2);
ferencd@0 219 VASSERT_EQ("2", false, p1 == p3);
ferencd@0 220
ferencd@0 221 VASSERT_EQ("3", false, p1 != p2);
ferencd@0 222 VASSERT_EQ("4", true, p1 != p3);
ferencd@0 223
ferencd@0 224 VASSERT_EQ("5", true, p3.getParent() == p1);
ferencd@0 225 }
ferencd@0 226
ferencd@0 227 void testGetLastComponent()
ferencd@0 228 {
ferencd@0 229 path p1;
ferencd@0 230 p1.appendComponent(comp("foo"));
ferencd@0 231 p1.appendComponent(comp("bar"));
ferencd@0 232 p1.appendComponent(comp("baz"));
ferencd@0 233
ferencd@0 234 VASSERT_EQ("1", "baz", p1.getLastComponent().getBuffer());
ferencd@0 235 VASSERT_EQ("2", "bar", p1.getParent().getLastComponent().getBuffer());
ferencd@0 236 VASSERT_EQ("3", "foo", p1.getParent().getParent().getLastComponent().getBuffer());
ferencd@0 237 }
ferencd@0 238
ferencd@0 239 void testIsDirectParentOf()
ferencd@0 240 {
ferencd@0 241 path p1;
ferencd@0 242 p1.appendComponent(comp("foo"));
ferencd@0 243
ferencd@0 244 path p2;
ferencd@0 245 p2.appendComponent(comp("foo"));
ferencd@0 246 p2.appendComponent(comp("bar"));
ferencd@0 247
ferencd@0 248 path p3;
ferencd@0 249 p3.appendComponent(comp("foo"));
ferencd@0 250 p3.appendComponent(comp("bar"));
ferencd@0 251 p3.appendComponent(comp("baz"));
ferencd@0 252
ferencd@0 253 VASSERT_EQ("1", true, p1.isDirectParentOf(p2));
ferencd@0 254 VASSERT_EQ("2", true, p2.isDirectParentOf(p3));
ferencd@0 255 VASSERT_EQ("3", false, p1.isDirectParentOf(p3));
ferencd@0 256 VASSERT_EQ("4", false, p2.isDirectParentOf(p1));
ferencd@0 257 }
ferencd@0 258
ferencd@0 259 void testIsParentOf()
ferencd@0 260 {
ferencd@0 261 path p1;
ferencd@0 262 p1.appendComponent(comp("foo"));
ferencd@0 263
ferencd@0 264 path p2;
ferencd@0 265 p2.appendComponent(comp("foo"));
ferencd@0 266 p2.appendComponent(comp("bar"));
ferencd@0 267
ferencd@0 268 path p3;
ferencd@0 269 p3.appendComponent(comp("foo"));
ferencd@0 270 p3.appendComponent(comp("bar"));
ferencd@0 271 p3.appendComponent(comp("baz"));
ferencd@0 272
ferencd@0 273 VASSERT_EQ("1", true, p1.isParentOf(p2));
ferencd@0 274 VASSERT_EQ("2", true, p2.isParentOf(p3));
ferencd@0 275 VASSERT_EQ("3", true, p1.isParentOf(p3));
ferencd@0 276 VASSERT_EQ("4", false, p2.isParentOf(p1));
ferencd@0 277 }
ferencd@0 278
ferencd@0 279 void testIsParentOf_EquivalentCharset()
ferencd@0 280 {
ferencd@0 281 path p1;
ferencd@0 282 p1.appendComponent(comp("foo", "us-ascii"));
ferencd@0 283
ferencd@0 284 path p2;
ferencd@0 285 p2.appendComponent(comp("foo", "utf-8"));
ferencd@0 286 p2.appendComponent(comp("bar"));
ferencd@0 287 p2.appendComponent(comp("baz"));
ferencd@0 288
ferencd@0 289 VASSERT_EQ("1", true, p1.isParentOf(p2));
ferencd@0 290 }
ferencd@0 291
ferencd@0 292 void testRenameParent()
ferencd@0 293 {
ferencd@0 294 path p1;
ferencd@0 295 p1.appendComponent(comp("a"));
ferencd@0 296 p1.appendComponent(comp("b"));
ferencd@0 297 p1.appendComponent(comp("c"));
ferencd@0 298 p1.appendComponent(comp("d"));
ferencd@0 299
ferencd@0 300 path p2;
ferencd@0 301 p2.appendComponent(comp("a"));
ferencd@0 302 p2.appendComponent(comp("b"));
ferencd@0 303
ferencd@0 304 path p3;
ferencd@0 305 p3.appendComponent(comp("x"));
ferencd@0 306 p3.appendComponent(comp("y"));
ferencd@0 307 p3.appendComponent(comp("z"));
ferencd@0 308
ferencd@0 309 path p(p1);
ferencd@0 310 p.renameParent(p2, p3);
ferencd@0 311
ferencd@0 312 VASSERT_EQ("1", 5, p.getSize());
ferencd@0 313 VASSERT_EQ("2", "x", p.getComponentAt(0).getBuffer());
ferencd@0 314 VASSERT_EQ("3", "y", p.getComponentAt(1).getBuffer());
ferencd@0 315 VASSERT_EQ("4", "z", p.getComponentAt(2).getBuffer());
ferencd@0 316 VASSERT_EQ("5", "c", p.getComponentAt(3).getBuffer());
ferencd@0 317 VASSERT_EQ("6", "d", p.getComponentAt(4).getBuffer());
ferencd@0 318 }
ferencd@0 319
ferencd@0 320 void testFromString()
ferencd@0 321 {
ferencd@0 322 path p = path::fromString("ab/cde/f", "/", vmime::charset("my-charset"));
ferencd@0 323
ferencd@0 324 VASSERT_EQ("count", 3, p.getSize());
ferencd@0 325 VASSERT_EQ("buffer1", "ab", p.getComponentAt(0).getBuffer());
ferencd@0 326 VASSERT_EQ("charset1", "my-charset", p.getComponentAt(0).getCharset().getName());
ferencd@0 327 VASSERT_EQ("buffer2", "cde", p.getComponentAt(1).getBuffer());
ferencd@0 328 VASSERT_EQ("charset2", "my-charset", p.getComponentAt(1).getCharset().getName());
ferencd@0 329 VASSERT_EQ("buffer3", "f", p.getComponentAt(2).getBuffer());
ferencd@0 330 VASSERT_EQ("charset3", "my-charset", p.getComponentAt(2).getCharset().getName());
ferencd@0 331 }
ferencd@0 332
ferencd@0 333 void testFromString_IgnoreLeadingOrTrailingSep()
ferencd@0 334 {
ferencd@0 335 path p = path::fromString("//ab/cde/f////", "/", vmime::charset("my-charset"));
ferencd@0 336
ferencd@0 337 VASSERT_EQ("count", 3, p.getSize());
ferencd@0 338 VASSERT_EQ("buffer1", "ab", p.getComponentAt(0).getBuffer());
ferencd@0 339 VASSERT_EQ("charset1", "my-charset", p.getComponentAt(0).getCharset().getName());
ferencd@0 340 VASSERT_EQ("buffer2", "cde", p.getComponentAt(1).getBuffer());
ferencd@0 341 VASSERT_EQ("charset2", "my-charset", p.getComponentAt(1).getCharset().getName());
ferencd@0 342 VASSERT_EQ("buffer3", "f", p.getComponentAt(2).getBuffer());
ferencd@0 343 VASSERT_EQ("charset3", "my-charset", p.getComponentAt(2).getCharset().getName());
ferencd@0 344 }
ferencd@0 345
ferencd@0 346 void testToString()
ferencd@0 347 {
ferencd@0 348 path p;
ferencd@0 349 p.appendComponent(comp("ab"));
ferencd@0 350 p.appendComponent(comp("cde"));
ferencd@0 351 p.appendComponent(comp("f"));
ferencd@0 352
ferencd@0 353 VASSERT_EQ("string", "ab/cde/f", p.toString("/", vmime::charset("us-ascii")));
ferencd@0 354 }
ferencd@0 355
ferencd@0 356 VMIME_TEST_SUITE_END
ferencd@0 357