/home/martin/workspace/OpenStreetNav/src/test/wayreduction_test.cpp
Go to the documentation of this file.
00001 /*
00002  * wayreduction_test.cpp
00003  *
00004  *  Created on: Jan 12, 2012
00005  *      Author: martin
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()
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines