1 #include <gtest/gtest.h> 3 #include "facility_tests.h" 4 #include "agent_tests.h" 5 #include "resource_helpers.h" 6 #include "infile_tree.h" 7 #include "xml_parser.h" 51 std::vector<std::string> vexp (arr, arr +
sizeof(arr) /
sizeof(arr[0]) );
55 double pref[] = {cyclus::kDefaultPref, cyclus::kDefaultPref};
56 std::vector<double> vpref (pref, pref +
sizeof(pref) /
sizeof(pref[0]) );
66 EXPECT_DOUBLE_EQ(0.0, cloned_fac->InventorySize());
67 EXPECT_DOUBLE_EQ(
capacity_, cloned_fac->Capacity());
68 EXPECT_DOUBLE_EQ(
inv_, cloned_fac->MaxInventorySize());
69 EXPECT_DOUBLE_EQ(
capacity_, cloned_fac->RequestAmt());
71 std::vector<std::string> vexp (arr, arr +
sizeof(arr) /
sizeof(arr[0]) );
72 EXPECT_EQ(vexp, cloned_fac->input_commodities());
81 <<
"<name>fooname</name>" 86 <<
" <incommodity>" <<
commod1_ <<
"</incommodity>" 87 <<
" <incommodity>" <<
commod2_ <<
"</incommodity>" 89 <<
" <input_capacity>" <<
capacity_ <<
"</input_capacity>" 90 <<
" <inventorysize>" <<
inv_ <<
"</inventorysize>" 98 cyclus::InfileTree engine(p);
103 std::vector<std::string> vexp (arr, arr +
sizeof(arr) /
sizeof(arr[0]) );
104 EXPECT_EQ(vexp, fac.input_commodities());
105 EXPECT_DOUBLE_EQ(
capacity_, fac.Capacity());
106 EXPECT_DOUBLE_EQ(inv_, fac.MaxInventorySize());
107 EXPECT_DOUBLE_EQ(
capacity_, fac.RequestAmt());
108 EXPECT_DOUBLE_EQ(0.0, fac.InventorySize());
113 using cyclus::Request;
114 using cyclus::RequestPortfolio;
115 using cyclus::CapacityConstraint;
116 using cyclus::Material;
119 std::vector<std::string> commods (arr, arr +
sizeof(arr) /
sizeof(arr[0]) );
122 std::set<RequestPortfolio<Material>::Ptr> ports =
125 ASSERT_EQ(ports.size(), 1);
126 ASSERT_EQ(ports.begin()->get()->qty(),
capacity_);
127 const std::vector<Request<Material>*>& requests =
128 ports.begin()->get()->requests();
129 ASSERT_EQ(requests.size(), 2);
132 Request<Material>* req = *(requests.begin() + i);
134 EXPECT_EQ(req->commodity(), commods[i]);
137 const std::set< CapacityConstraint<Material> >& constraints =
138 ports.begin()->get()->constraints();
139 EXPECT_EQ(constraints.size(), 0);
144 using cyclus::Material;
145 using cyclus::RequestPortfolio;
148 std::set<RequestPortfolio<Material>::Ptr> ports =
150 EXPECT_TRUE(ports.empty());
156 using cyclus::Material;
157 using cyclus::Request;
159 using test_helpers::get_mat;
161 double qty =
qty_ * 2;
162 std::vector< std::pair<cyclus::Trade<cyclus::Material>,
163 cyclus::Material::Ptr> > responses;
165 Request<Material>* req1 =
168 Bid<Material>* bid1 = Bid<Material>::Create(req1, get_mat(), trader);
170 Request<Material>* req2 =
173 Bid<Material>* bid2 =
174 Bid<Material>::Create(req2, get_mat(922350000,
qty_), trader);
176 Trade<Material> trade1(req1, bid1,
qty_);
177 responses.push_back(std::make_pair(trade1, get_mat(922350000,
qty_)));
178 Trade<Material> trade2(req2, bid2,
qty_);
179 responses.push_back(std::make_pair(trade2, get_mat(922350000,
qty_)));
188 using cyclus::RequestPortfolio;
189 using cyclus::Material;
190 using cyclus::Request;
191 cyclus::Recorder rec;
193 cyclus::Context ctx(&ti, &rec);
200 cyclus::Composition::Ptr c = cyclus::Composition::CreateFromMass(m);
201 ctx.AddRecipe(
"some_u",c) ;
208 std::set<RequestPortfolio<Material>::Ptr> ports =
210 ASSERT_EQ(ports.size(), 1);
212 const std::vector<Request<Material>*>& requests =
213 ports.begin()->get()->requests();
214 ASSERT_EQ(requests.size(), 1);
216 Request<Material>* req = *requests.begin();
217 EXPECT_EQ(req->requester(), snk);
218 EXPECT_EQ(req->commodity(),
"some_u");
223 using cyclus::QueryResult;
228 " <val>commods_1</val>" 229 " <val>commods_2</val>" 234 " </in_commod_prefs>" 235 " <capacity>1</capacity>" 236 " <input_capacity>1.0</input_capacity> ";
239 cyclus::MockSim sim(cyclus::AgentSpec
240 (
":cycamore:Sink"), config, simdur);
242 sim.AddSource(
"commods_1")
246 sim.AddSource(
"commods_2")
252 std::vector<Cond> conds;
253 conds.push_back(Cond(
"Commodity",
"==",
std::string(
"commods_1")));
254 QueryResult qr = sim.db().Query(
"Transactions", &conds);
257 EXPECT_EQ(1, qr.rows.size());
259 std::vector<Cond> conds2;
260 conds2.push_back(Cond(
"Commodity",
"==",
std::string(
"commods_2")));
261 QueryResult qr2 = sim.db().Query(
"Transactions", &conds2);
264 EXPECT_EQ(0, qr2.rows.size());
273 using cyclus::QueryResult;
278 " <val>commods_1</val>" 279 " <val>commods_2</val>" 284 " </in_commod_prefs>" 285 " <capacity>1</capacity>" 286 " <input_capacity>1.0</input_capacity> ";
289 cyclus::MockSim sim(cyclus::AgentSpec
290 (
":cycamore:Sink"), config, simdur);
292 sim.AddSource(
"commods_1")
296 sim.AddSource(
"commods_2")
302 QueryResult qr = sim.db().Query(
"AgentPosition", NULL);
303 EXPECT_EQ(qr.GetVal<
double>(
"Latitude"), 0.0);
304 EXPECT_EQ(qr.GetVal<
double>(
"Longitude"), 0.0);
308 using cyclus::QueryResult;
313 " <val>commods_1</val>" 314 " <val>commods_2</val>" 319 " </in_commod_prefs>" 320 " <capacity>1</capacity>" 321 " <input_capacity>1.0</input_capacity> " 322 " <latitude>50.0</latitude> " 323 " <longitude>35.0</longitude> ";
326 cyclus::MockSim sim(cyclus::AgentSpec
327 (
":cycamore:Sink"), config, simdur);
329 sim.AddSource(
"commods_1")
333 sim.AddSource(
"commods_2")
339 QueryResult qr = sim.db().Query(
"AgentPosition", NULL);
340 EXPECT_EQ(qr.GetVal<
double>(
"Longitude"), 35.0);
341 EXPECT_EQ(qr.GetVal<
double>(
"Latitude"), 50.0);
351 #ifndef CYCLUS_AGENT_TESTS_CONNECTED 354 #define CYCLUS_AGENT_TESTS_CONNECTED cyclus_agent_tests_connected 355 #endif // CYCLUS_AGENT_TESTS_CONNECTED virtual std::set< cyclus::RequestPortfolio< cyclus::Material >::Ptr > GetMatlRequests()
SinkFacilities request Materials of their given commodity.
static int cyclus_agent_tests_connected
This facility acts as a sink of materials and products with a fixed throughput (per time step) capaci...
double RequestAmt() const
determines the amount to request
double InventorySize() const
const std::vector< std::string > & input_commodities() const
virtual cyclus::Agent * Clone()
virtual void EnterNotify()
void AddCommodity(std::string name)
add a commodity to the set of input commodities
void Capacity(double cap)
sets the capacity of a material generated at any given time step
cyclus::Agent * SinkConstructor(cyclus::Context *ctx)
const std::vector< double > & input_commodity_preferences() const
INSTANTIATE_TEST_CASE_P(SinkFac, FacilityTests, Values(&SinkConstructor))
cycamore::GrowthRegion string
TEST_F(SinkTest, InitialState)
double MaxInventorySize() const
virtual void AcceptMatlTrades(const std::vector< std::pair< cyclus::Trade< cyclus::Material >, cyclus::Material::Ptr > > &responses)
SinkFacilities place accepted trade Materials in their Inventory.
void SetMaxInventorySize(double size)
sets the size of the storage inventory for received material
virtual std::string str()
cycamore::Sink * src_facility