diff options
Diffstat (limited to 'src/boost/libs/program_options/test/winmain.cpp')
-rw-r--r-- | src/boost/libs/program_options/test/winmain.cpp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/boost/libs/program_options/test/winmain.cpp b/src/boost/libs/program_options/test/winmain.cpp new file mode 100644 index 000000000..4cbcad584 --- /dev/null +++ b/src/boost/libs/program_options/test/winmain.cpp @@ -0,0 +1,73 @@ +// Copyright Vladimir Prus 2002-2004. +// 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) + +#if defined(_WIN32) +#include <string> +#include <vector> +#include <cctype> +#include <iostream> +#include <stdlib.h> +#include <boost/program_options/parsers.hpp> + +using namespace std; +using namespace boost::program_options; + +void check_equal(const std::vector<string>& actual, const char **expected, int n) +{ + if (actual.size() != n) + { + std::cerr << "Size mismatch between expected and actual data\n"; + abort(); + } + for (int i = 0; i < n; ++i) + { + if (actual[i] != expected[i]) + { + std::cerr << "Unexpected content\n"; + abort(); + } + } +} + +#include <boost/preprocessor/cat.hpp> + +void test_winmain() +{ + +#define C , +#define TEST(input, expected) \ + const char* BOOST_PP_CAT(e, __LINE__)[] = expected;\ + vector<string> BOOST_PP_CAT(v, __LINE__) = split_winmain(input);\ + check_equal(BOOST_PP_CAT(v, __LINE__), BOOST_PP_CAT(e, __LINE__),\ + sizeof(BOOST_PP_CAT(e, __LINE__))/sizeof(char*)); + +// The following expectations were obtained in Win2000 shell: + TEST("1 ", {"1"}); + TEST("1\"2\" ", {"12"}); + TEST("1\"2 ", {"12 "}); + TEST("1\"\\\"2\" ", {"1\"2"}); + TEST("\"1\" \"2\" ", {"1" C "2"}); + TEST("1\\\" ", {"1\""}); + TEST("1\\\\\" ", {"1\\ "}); + TEST("1\\\\\\\" ", {"1\\\""}); + TEST("1\\\\\\\\\" ", {"1\\\\ "}); + + TEST("1\" 1 ", {"1 1 "}); + TEST("1\\\" 1 ", {"1\"" C "1"}); + TEST("1\\1 ", {"1\\1"}); + TEST("1\\\\1 ", {"1\\\\1"}); +} + +int main(int, char*[]) +{ + test_winmain(); + return 0; +} +#else +int main(int, char*[]) +{ + return 0; +} +#endif |