diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 9c3aff3..25980bb 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -56,5 +56,6 @@ test-suite conversion [ run lexical_cast_stream_detection_test.cpp ] [ run lexical_cast_stream_traits_test.cpp ] [ compile-fail lexical_cast_to_pointer_test.cpp ] + [ run lexical_cast_filesystem_test.cpp ../../filesystem/build//boost_filesystem/static ] ; diff --git a/test/lexical_cast_filesystem_test.cpp b/test/lexical_cast_filesystem_test.cpp new file mode 100644 index 0000000..154d107 --- /dev/null +++ b/test/lexical_cast_filesystem_test.cpp @@ -0,0 +1,46 @@ +// Unit test for boost::lexical_cast. +// +// See http://www.boost.org for most recent version, including documentation. +// +// Copyright Antony Polukhin, 2013. +// +// Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt). +// +// Test lexical_cast usage with long filesystem::path. Bug 7704. + +#include + +#include +#include +#include + +using namespace boost; + +void test_filesystem(); + +unit_test::test_suite *init_unit_test_suite(int, char *[]) +{ + unit_test::test_suite *suite = + BOOST_TEST_SUITE("lexical_cast unit test"); + suite->add(BOOST_TEST_CASE(&test_filesystem)); + + return suite; +} + +void test_filesystem() +{ + boost::filesystem::path p; + std::string s1 = "aaaaaaaaaaaaaaaaaaaaaaa"; + p = boost::lexical_cast(s1); + BOOST_CHECK(!p.empty()); + BOOST_CHECK_EQUAL(p, s1); + p.clear(); + + const char ab[] = "aaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"; + p = boost::lexical_cast(ab); + BOOST_CHECK(!p.empty()); + BOOST_CHECK_EQUAL(p, ab); +} +