00001
00002
00003
00004
00005
00006
00007
00008 #include <boost/test/unit_test.hpp>
00009 #include "../wayreduction/wayreduction.h"
00010 #include "../util.h"
00011
00012 BOOST_AUTO_TEST_SUITE(wayreduction)
00013
00014 BOOST_AUTO_TEST_CASE(waynodefilt)
00015 {
00016 wayred::WayNodeFilter filt;
00017 filt.add_important("key", "val");
00018 filt.add_important("asdf", "bsdf");
00019 osm::Way w(1);
00020 w.nodes.push_back(osm::Node(2, 0.4, 0.4));
00021 w.nodes.push_back(osm::Node(3, 0.4, 0.8));
00022 w.nodes.push_back(osm::Node(4, 0.4, 0.8));
00023 w.tags.insert(osm::Tag("key", "val"));
00024 osm::Way w2(2);
00025 w2.nodes.push_back(3);
00026 w2.nodes.push_back(5);
00027 w2.tags.insert(osm::Tag("asdf", "bsdf"));
00028 w2.tags.insert(osm::Tag("fcda", "gas"));
00029 osm::Way w3(3);
00030 w3.tags.insert(osm::Tag("key", "val"));
00031 w3.nodes.push_back(osm::Node(4, 0.4, 0.8));
00032 w3.nodes.push_back(osm::Node(5, 0.4, 0.8));
00033 w3.nodes.push_back(osm::Node(6, 0.4, 0.8));
00034 w3.nodes.push_back(osm::Node(7, 0.4, 0.8));
00035 osm::Way w4(4);
00036 w4.nodes.push_back(5);
00037 w4.nodes.push_back(7);
00038 osm::Way w5(5);
00039 w5.nodes.push_back(6);
00040 w5.nodes.push_back(8);
00041 std::map<osm::Way, std::multimap<osm::Node, osm::Way, osm::LtByID>, osm::LtByID> exp;
00042 std::multimap<osm::Node, osm::Way, osm::LtByID> mp;
00043 mp.insert(std::make_pair(osm::Node(3, 0.4, 0.8), w2));
00044 mp.insert(std::make_pair(osm::Node(4, 0.4, 0.8), w3));
00045 exp[w] = mp;
00046 mp.clear();
00047 mp.insert(std::make_pair(osm::Node(4, 0.4, 0.8), w));
00048 mp.insert(std::make_pair(osm::Node(5, 0.4, 0.8), w4));
00049 mp.insert(std::make_pair(osm::Node(5, 0.4, 0.8), w2));
00050 mp.insert(std::make_pair(osm::Node(6, 0.4, 0.8), w5));
00051 exp[w3] = mp;
00052 w3.nodes.erase(w3.nodes.begin() + 2);
00053 auto ret = filt.reduce_ways(exp);
00054 std::vector<osm::Way> expected_ret
00055 {
00056 w,
00057 w3
00058 };
00059 class Comp
00060 {
00061 public:
00062 bool operator()(osm::Way const& w1, osm::Way const& w2)
00063 {
00064 if (w1.id != w2.id)
00065 return false;
00066 return util::equal_collection<osm::EqByID>(w1.nodes, w2.nodes);
00067 }
00068 };
00069 BOOST_CHECK(util::equal_collection<Comp>(ret, expected_ret));
00070 }
00071
00072 BOOST_AUTO_TEST_SUITE_END()