| 508 | // test_relationals ----------------------------------------------------------------// |
| 509 | |
| 510 | void test_relationals() |
| 511 | { |
| 512 | std::cout << "testing relationals..." << std::endl; |
| 513 | |
| 514 | boost::hash< path > hash; |
| 515 | |
| 516 | #ifdef BOOST_FILESYSTEM_WINDOWS_API |
| 517 | // this is a critical use case to meet user expectations |
| 518 | CHECK(path("c:\\abc") == path("c:/abc")); |
| 519 | CHECK(hash(path("c:\\abc")) == hash(path("c:/abc"))); |
| 520 | #endif |
| 521 | |
| 522 | const path p("bar"); |
| 523 | const path p2("baz"); |
| 524 | |
| 525 | CHECK(!(p < p)); |
| 526 | CHECK(p < p2); |
| 527 | CHECK(!(p2 < p)); |
| 528 | CHECK(p < "baz"); |
| 529 | CHECK(p < string("baz")); |
| 530 | CHECK(p < L"baz"); |
| 531 | CHECK(p < wstring(L"baz")); |
| 532 | CHECK(!("baz" < p)); |
| 533 | CHECK(!(string("baz") < p)); |
| 534 | CHECK(!(L"baz" < p)); |
| 535 | CHECK(!(wstring(L"baz") < p)); |
| 536 | |
| 537 | CHECK(p == p); |
| 538 | CHECK(!(p == p2)); |
| 539 | CHECK(!(p2 == p)); |
| 540 | CHECK(p2 == "baz"); |
| 541 | CHECK(p2 == string("baz")); |
| 542 | CHECK(p2 == L"baz"); |
| 543 | CHECK(p2 == wstring(L"baz")); |
| 544 | CHECK("baz" == p2); |
| 545 | CHECK(string("baz") == p2); |
| 546 | CHECK(L"baz" == p2); |
| 547 | CHECK(wstring(L"baz") == p2); |
| 548 | |
| 549 | CHECK(hash(p) == hash(p)); |
| 550 | CHECK(hash(p) != hash(p2)); // Not strictly required, but desirable |
| 551 | |
| 552 | CHECK(!(p != p)); |
| 553 | CHECK(p != p2); |
| 554 | CHECK(p2 != p); |
| 555 | |
| 556 | CHECK(p <= p); |
| 557 | CHECK(p <= p2); |
| 558 | CHECK(!(p2 <= p)); |
| 559 | |
| 560 | CHECK(!(p > p)); |
| 561 | CHECK(!(p > p2)); |
| 562 | CHECK(p2 > p); |
| 563 | |
| 564 | CHECK(p >= p); |
| 565 | CHECK(!(p >= p2)); |
| 566 | CHECK(p2 >= p); |
| 567 | } |