From dc65f9612e9feea1732572e8188d900495349059 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 18 Jun 2015 12:25:02 +0200 Subject: Move prefix-map from build2 to libbutl --- tests/prefix-map/buildfile | 7 ++ tests/prefix-map/driver | Bin 0 -> 199753 bytes tests/prefix-map/driver.cxx | 153 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 160 insertions(+) create mode 100644 tests/prefix-map/buildfile create mode 100755 tests/prefix-map/driver create mode 100644 tests/prefix-map/driver.cxx (limited to 'tests/prefix-map') diff --git a/tests/prefix-map/buildfile b/tests/prefix-map/buildfile new file mode 100644 index 0000000..0fe9664 --- /dev/null +++ b/tests/prefix-map/buildfile @@ -0,0 +1,7 @@ +# file : tests/prefix-map/buildfile +# copyright : Copyright (c) 2014-2015 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +exe{driver}: cxx{driver} ../../butl/lib{butl} + +include ../../butl/ diff --git a/tests/prefix-map/driver b/tests/prefix-map/driver new file mode 100755 index 0000000..215146d Binary files /dev/null and b/tests/prefix-map/driver differ diff --git a/tests/prefix-map/driver.cxx b/tests/prefix-map/driver.cxx new file mode 100644 index 0000000..2aa59c7 --- /dev/null +++ b/tests/prefix-map/driver.cxx @@ -0,0 +1,153 @@ +// file : tests/prefix-map/driver.cxx -*- C++ -*- +// copyright : Copyright (c) 2014-2015 Code Synthesis Ltd +// license : MIT; see accompanying LICENSE file + +#include +#include +#include + +#include + +using namespace std; +using namespace butl; + +int +main () +{ + typedef prefix_map pm; + + { + const pm m; + + { + auto r (m.find_prefix ("")); + assert (r.first == r.second); + } + + { + auto r (m.find_prefix ("foo")); + assert (r.first == r.second); + } + } + + { + pm m {{{"foo", 1}}}; + + { + auto r (m.find_prefix ("")); + assert (r.first != r.second && r.first->second == 1 && + ++r.first == r.second); + } + + { + auto r (m.find_prefix ("fo")); + assert (r.first == r.second); + } + + { + auto r (m.find_prefix ("fox")); + assert (r.first == r.second); + } + + { + auto r (m.find_prefix ("fooo")); + assert (r.first == r.second); + } + + { + auto r (m.find_prefix ("foo.bar")); + assert (r.first == r.second); + } + + { + auto r (m.find_prefix ("foo")); + assert (r.first != r.second && r.first->second == 1 && + ++r.first == r.second); + } + } + + { + pm m {{{"foo", 1}, {"bar", 2}}}; + + { + auto r (m.find_prefix ("")); + assert (r.first != r.second && r.first->second == 2 && + ++r.first != r.second && r.first->second == 1 && + ++r.first == r.second); + } + + { + auto r (m.find_prefix ("fo")); + assert (r.first == r.second); + } + + { + auto r (m.find_prefix ("fox")); + assert (r.first == r.second); + } + + { + auto r (m.find_prefix ("fooo")); + assert (r.first == r.second); + } + + { + auto r (m.find_prefix ("foo.bar")); + assert (r.first == r.second); + } + + { + auto r (m.find_prefix ("foo")); + assert (r.first != r.second && r.first->second == 1 && + ++r.first == r.second); + } + + { + auto r (m.find_prefix ("bar")); + assert (r.first != r.second && r.first->second == 2 && + ++r.first == r.second); + } + } + + { + pm m ( + {{"boo", 1}, + {"foo", 2}, {"fooa", 3}, {"foo.bar", 4}, {"foo.fox", 5}, + {"xoo", 5}}); + + { + auto r (m.find_prefix ("fo")); + assert (r.first == r.second); + } + + { + auto r (m.find_prefix ("fox")); + assert (r.first == r.second); + } + + { + auto r (m.find_prefix ("fooo")); + assert (r.first == r.second); + } + + { + auto r (m.find_prefix ("foo.bar")); + assert (r.first != r.second && r.first->second == 4 && + ++r.first == r.second); + } + + { + auto r (m.find_prefix ("foo.fox")); + assert (r.first != r.second && r.first->second == 5 && + ++r.first == r.second); + } + + { + auto r (m.find_prefix ("foo")); + assert (r.first != r.second && r.first->second == 2 && + ++r.first != r.second && r.first->second == 4 && + ++r.first != r.second && r.first->second == 5 && + ++r.first == r.second); + } + } +} -- cgit v1.1