00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <boost/test/unit_test.hpp>
00020 #include "torc/router/RouteNode.hpp"
00021
00022 namespace torc {
00023 namespace router {
00024
00025 BOOST_AUTO_TEST_SUITE(router)
00026
00027
00028 BOOST_AUTO_TEST_CASE(RouteNodeT) {
00029 typedef architecture::Tilewire Tilewire;
00030 typedef architecture::Arc Arc;
00031
00032 Tilewire tilewire1(architecture::xilinx::TileIndex(100), architecture::xilinx::WireIndex(2));
00033 Tilewire tilewire2(architecture::xilinx::TileIndex(100), architecture::xilinx::WireIndex(3));
00034 Tilewire tilewire3(architecture::xilinx::TileIndex(120), architecture::xilinx::WireIndex(2));
00035 Tilewire tilewire4(architecture::xilinx::TileIndex(120), architecture::xilinx::WireIndex(3));
00036 boost::int32_t cost1 = 4;
00037 boost::int32_t cost2 = 5;
00038 Arc arc1(tilewire1, tilewire2);
00039 Arc arc2(tilewire2, tilewire3);
00040
00041
00042
00043
00044 BOOST_CHECK_EQUAL(sizeof(RouteNode), sizeof(architecture::Arc) + sizeof(RouteNode*)
00045 + sizeof(boost::int32_t));
00046 BOOST_CHECK_EQUAL(sizeof(RouteNode), 28u);
00047
00048
00049
00050
00051
00052 RouteNode* routenode1 = new RouteNode(tilewire1, tilewire2, cost1, cost1, 0, 0);
00053 RouteNode* routenode2 = new RouteNode(arc2, cost1, cost1, 1, routenode1);
00054 RouteNode* routenode3 = new RouteNode(tilewire3, tilewire4, cost2, cost2, 2, routenode2);
00055 RouteNode* routenode4 = new RouteNode();
00056 BOOST_CHECK_EQUAL(routenode1 != 0, true);
00057 BOOST_CHECK_EQUAL(routenode2 != 0, true);
00058 BOOST_CHECK_EQUAL(routenode3 != 0, true);
00059 BOOST_CHECK_EQUAL(routenode4 != 0, true);
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069 architecture::Arc arc1t = routenode1->getArc();
00070 BOOST_CHECK_EQUAL(arc1t == arc1, true);
00071 BOOST_CHECK_EQUAL(routenode2->getSourceTilewire() == tilewire2, true);
00072 BOOST_CHECK_EQUAL(routenode2->getSinkTilewire() == tilewire3, true);
00073 BOOST_CHECK_EQUAL(routenode3->getCost() == cost2, true);
00074 BOOST_CHECK_EQUAL(routenode4->getCost() == 0, true);
00075 BOOST_CHECK_EQUAL(routenode3->getPathCost() == cost2, true);
00076 routenode4->setCost(42);
00077 BOOST_CHECK_EQUAL(routenode4->getCost() == 42, true);
00078 BOOST_CHECK_EQUAL(routenode3->getParent() == routenode2, true);
00079 BOOST_CHECK_EQUAL(routenode3->getTop() == routenode1, true);
00080
00081
00082 RouteNodePtrCostCompare compare;
00083 BOOST_CHECK_EQUAL(compare(routenode1, routenode1), false);
00084 BOOST_CHECK_EQUAL(compare(routenode2, routenode3), false);
00085 BOOST_CHECK_EQUAL(compare(routenode3, routenode2), true);
00086
00087 delete routenode1;
00088 delete routenode2;
00089 delete routenode3;
00090 delete routenode4;
00091 }
00092
00093 BOOST_AUTO_TEST_SUITE_END()
00094
00095 }
00096 }