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/RouteNet.hpp"
00021
00022 namespace torc {
00023 namespace router {
00024
00025 BOOST_AUTO_TEST_SUITE(router)
00026
00027
00028 BOOST_AUTO_TEST_CASE(RouteNetT) {
00029 typedef architecture::Tilewire Tilewire;
00030 typedef architecture::TilewireVector TilewireVector;
00031 typedef architecture::Arc Arc;
00032 typedef architecture::ArcVector ArcVector;
00033 typedef std::string string;
00034
00035 Tilewire tilewire1(architecture::xilinx::TileIndex(100), architecture::xilinx::WireIndex(2));
00036 Tilewire tilewire2(architecture::xilinx::TileIndex(100), architecture::xilinx::WireIndex(3));
00037 Tilewire tilewire3(architecture::xilinx::TileIndex(120), architecture::xilinx::WireIndex(2));
00038 Tilewire tilewire4(architecture::xilinx::TileIndex(120), architecture::xilinx::WireIndex(3));
00039 Arc arc1(tilewire1, tilewire2);
00040 Arc arc2(tilewire2, tilewire3);
00041 string name1 = "Name1";
00042 string name2 = "Name2";
00043 TilewireVector sources;
00044 TilewireVector sinks;
00045 sources.push_back(tilewire1);
00046 sinks.push_back(tilewire2);
00047 sinks.push_back(tilewire3);
00048
00049
00050
00051 BOOST_CHECK_EQUAL(sizeof(RouteNet), sizeof(string) + sizeof(TilewireVector)
00052 + sizeof(TilewireVector) + sizeof(ArcVector) + sizeof(RouteNodePtrVector)
00053 + sizeof(boost::unordered_map<boost::uint32_t, boost::any>));
00054 BOOST_CHECK_EQUAL(sizeof(RouteNet), 160u);
00055
00056
00057
00058
00059 RouteNet rn1(name1);
00060 RouteNet rn2(name2, sources, sinks);
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084 BOOST_CHECK_EQUAL(rn1.getName(), name1);
00085 BOOST_CHECK_EQUAL(rn1.containsSource(tilewire4), false);
00086 BOOST_CHECK_EQUAL(rn1.containsSink(tilewire4), false);
00087 BOOST_CHECK_EQUAL(rn1.containsArc(arc1), false);
00088 BOOST_CHECK_EQUAL(rn1.hasAnySources(), false);
00089 BOOST_CHECK_EQUAL(rn1.hasOneSource(), false);
00090 BOOST_CHECK_EQUAL(rn1.hasAnySinks(), false);
00091 BOOST_CHECK_EQUAL(rn1.hasOneSink(), false);
00092 BOOST_CHECK_EQUAL(rn1.hasMultipleSources(), false);
00093 BOOST_CHECK_EQUAL(rn1.hasMultipleSinks(), false);
00094 BOOST_CHECK_EQUAL(rn1.hasAnyArcs(), false);
00095 BOOST_CHECK_EQUAL(rn1.removeSource(tilewire2), false);
00096 BOOST_CHECK_EQUAL(rn1.removeSink(tilewire2), false);
00097 BOOST_CHECK_EQUAL(rn1.removeArc(arc1), false);
00098
00099 BOOST_CHECK_EQUAL(rn2.getName(), name2);
00100 BOOST_CHECK_EQUAL(rn2.hasAnySources(), true);
00101 BOOST_CHECK_EQUAL(rn2.hasOneSource(), true);
00102 BOOST_CHECK_EQUAL(rn2.hasAnySinks(), true);
00103 BOOST_CHECK_EQUAL(rn2.hasMultipleSinks(), true);
00104 BOOST_CHECK_EQUAL(rn2.containsSource(tilewire1), true);
00105 BOOST_CHECK_EQUAL(rn2.containsSink(tilewire3), true);
00106 BOOST_CHECK_EQUAL(rn2.containsArc(arc1), false);
00107 rn2.addArc(arc1);
00108 BOOST_CHECK_EQUAL(rn2.containsArc(arc1), true);
00109 BOOST_CHECK_EQUAL(rn2.containsSource(tilewire4), false);
00110 rn2.addSource(tilewire4);
00111 BOOST_CHECK_EQUAL(rn2.containsSource(tilewire4), true);
00112 BOOST_CHECK_EQUAL(rn2.removeSource(tilewire4), true);
00113 BOOST_CHECK_EQUAL(rn2.containsSource(tilewire4), false);
00114 BOOST_CHECK_EQUAL(rn2.containsSink(tilewire2), true);
00115 BOOST_CHECK_EQUAL(rn2.removeSink(tilewire2), true);
00116 BOOST_CHECK_EQUAL(rn2.containsSink(tilewire2), false);
00117 rn2.addSink(tilewire2);
00118 BOOST_CHECK_EQUAL(rn2.containsSink(tilewire2), true);
00119 BOOST_CHECK_EQUAL(rn2.getArcCount(), 1u);
00120
00121
00122
00123
00124
00125 }
00126
00127 BOOST_AUTO_TEST_SUITE_END()
00128
00129 }
00130 }