1#include <gtest/gtest.h>
20 in_c1.push_back(
"in_c1");
21 out_c1.push_back(
"out_c1");
33 cyclus::Composition::Ptr recipe = cyclus::Composition::CreateFromAtom(v);
34 tc_.get()->AddRecipe(in_r1, recipe);
58 cyclus::Material::Ptr mat){
59 double amt = mat->quantity();
60 double before = fac->
inventory.quantity();
63 EXPECT_EQ(amt, after - before);
67 double proc,
double ready,
double stocks){
68 double t =
tc_.get()->time();
70 EXPECT_EQ(inv, fac->
inventory.quantity());
72 EXPECT_EQ(stocks, fac->
stocks.quantity());
73 EXPECT_EQ(ready, fac->
ready.quantity());
78 cyclus::toolkit::ResBuf<cyclus::Material>* buffer = &fac->
stocks;
79 Material::Ptr final_mat = cyclus::ResCast<Material>(buffer->PopBack());
80 cyclus::CompMap final_comp = final_mat->comp()->atom();
81 EXPECT_EQ(final_comp,v);
125 cyclus::Material::Ptr mat = cyclus::NewBlankMaterial(0.5*cap);
128 cyclus::Composition::Ptr rec =
tc_.get()->GetRecipe(
in_r1);
129 cyclus::Material::Ptr recmat = cyclus::Material::CreateUntracked(0.5*cap, rec);
146 cyclus::Composition::Ptr rec =
tc_.get()->GetRecipe(
in_r1);
147 cyclus::Material::Ptr mat = cyclus::Material::CreateUntracked(cap, rec);
158 EXPECT_EQ(0,
tc_.get()->time());
186 cyclus::Composition::Ptr rec =
tc_.get()->GetRecipe(
in_r1);
187 cyclus::Material::Ptr mat = cyclus::Material::CreateUntracked(cap, rec);
202 cyclus::Composition::Ptr rec =
tc_.get()->GetRecipe(
in_r1);
203 cyclus::Material::Ptr mat = cyclus::Material::CreateUntracked(cap, rec);
212 cyclus::CompMap in_rec;
213 in_rec[922350000] = 1;
214 in_rec[922380000] = 2;
221 cyclus::Composition::Ptr rec =
tc_.get()->GetRecipe(
in_r1);
222 cyclus::Material::Ptr mat = cyclus::Material::CreateUntracked(0.2*cap, rec);
235 cyclus::Material::Ptr mat1 = cyclus::Material::CreateUntracked(0.3*cap, rec);
262 cyclus::Composition::Ptr rec =
tc_.get()->GetRecipe(
in_r1);
263 cyclus::Material::Ptr mat1 = cyclus::Material::CreateUntracked(cap1, rec);
273 cyclus::Material::Ptr mat2 = cyclus::Material::CreateUntracked(cap2,rec);
278 cyclus::Material::Ptr mat3 = cyclus::Material::CreateUntracked(cap2,rec);
311 cyclus::Composition::Ptr rec =
tc_.get()->GetRecipe(
in_r1);
312 cyclus::Material::Ptr mat = cyclus::Material::CreateUntracked(0.2*cap, rec);
317 cyclus::Material::Ptr mat1 = cyclus::Material::CreateUntracked(0.2*cap, rec);
334 cyclus::Composition::Ptr rec =
tc_.get()->GetRecipe(
in_r1);
335 cyclus::Material::Ptr mat = cyclus::Material::CreateUntracked(cap, rec);
344 cyclus::Material::Ptr mat1 = cyclus::Material::CreateUntracked(cap,rec);
360 for(
int i=proc_time1; i < proc_time2 - 1; ++i){
367 tc_.get()->time(proc_time2);
377 tc_.get()->time(proc_time3 +8);
389 cyclus::Composition::Ptr rec = cyclus::Composition::CreateFromAtom(v);
390 cyclus::Material::Ptr mat = cyclus::Material::CreateUntracked(cap, rec);
406 " <in_commods> <val>spent_fuel</val> </in_commods> "
407 " <out_commods> <val>dry_spent</val> </out_commods> "
408 " <residence_time>1</residence_time>"
409 " <max_inv_size>10</max_inv_size>";
413 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
415 sim.AddSource(
"spent_fuel").Finalize();
416 sim.AddSink(
"dry_spent").Finalize();
421 std::vector<cyclus::Cond> conds;
422 conds.push_back(cyclus::Cond(
"Commodity",
"==", std::string(
"dry_spent")));
423 cyclus::QueryResult qr = sim.db().Query(
"Transactions", &conds);
424 int n_trans = qr.rows.size();
425 EXPECT_EQ(1, n_trans) <<
"expected 1 transactions, got " << n_trans;
433 " <in_commods> <val>spent_fuel</val>"
434 " <val>spent_fuel2</val> </in_commods>"
435 " <in_commod_prefs> <val>1</val>"
436 " <val>1</val> </in_commod_prefs>"
437 " <out_commods> <val>dry_spent</val> </out_commods> "
438 " <max_inv_size>10</max_inv_size>";
442 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
444 sim.AddSource(
"spent_fuel").capacity(5).Finalize();
445 sim.AddSource(
"spent_fuel2").capacity(5).Finalize();
446 sim.AddSink(
"dry_spent").Finalize();
451 std::vector<cyclus::Cond> conds;
452 conds.push_back(cyclus::Cond(
"Commodity",
"==", std::string(
"spent_fuel")));
453 cyclus::QueryResult qr = sim.db().Query(
"Transactions", &conds);
454 int n_trans = qr.rows.size();
455 EXPECT_EQ(1, n_trans) <<
"expected 1 transactions, got " << n_trans;
457 std::vector<cyclus::Cond> conds2;
458 conds2.push_back(cyclus::Cond(
"Commodity",
"==", std::string(
"spent_fuel2")));
459 cyclus::QueryResult qr2 = sim.db().Query(
"Transactions", &conds2);
460 int n_trans2 = qr2.rows.size();
461 EXPECT_EQ(1, n_trans2) <<
"expected 1 transactions, got " << n_trans;
469 " <in_commods> <val>spent_fuel</val> </in_commods> "
470 " <out_commods> <val>dry_spent</val> </out_commods> "
471 " <throughput>1</throughput>"
472 " <active_buying_val>1</active_buying_val>"
473 " <dormant_buying_val>1</dormant_buying_val>";
477 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
479 sim.AddSource(
"spent_fuel").capacity(5).Finalize();
480 sim.AddSink(
"dry_spent").Finalize();
485 std::vector<cyclus::Cond> conds;
486 conds.push_back(cyclus::Cond(
"Commodity",
"==", std::string(
"spent_fuel")));
487 cyclus::QueryResult qr = sim.db().Query(
"Transactions", &conds);
488 int n_trans = qr.rows.size();
489 EXPECT_EQ(1, n_trans) <<
"expected 1 transactions, got " << n_trans;
496 " <in_commods> <val>spent_fuel</val> </in_commods> "
497 " <out_commods> <val>dry_spent</val> </out_commods> "
498 " <throughput>1</throughput>"
499 " <active_buying_frequency_type>Fixed</active_buying_frequency_type>"
500 " <active_buying_val>1</active_buying_val>"
501 " <dormant_buying_frequency_type>Fixed</dormant_buying_frequency_type>"
502 " <dormant_buying_val>-1</dormant_buying_val>";
506 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
508 sim.AddSource(
"spent_fuel").capacity(5).Finalize();
509 sim.AddSink(
"dry_spent").Finalize();
513 std::vector<cyclus::Cond> conds;
514 conds.push_back(cyclus::Cond(
"Commodity",
"==", std::string(
"spent_fuel")));
515 cyclus::QueryResult qr = sim.db().Query(
"Transactions", &conds);
516 int n_trans = qr.rows.size();
517 EXPECT_EQ(3, n_trans) <<
"expected 3 transactions, got " << n_trans;
522 " <in_commods> <val>spent_fuel</val> </in_commods> "
523 " <out_commods> <val>dry_spent</val> </out_commods> "
524 " <throughput>1</throughput>"
525 " <active_buying_frequency_type>Uniform</active_buying_frequency_type>"
526 " <active_buying_min>2</active_buying_min>"
527 " <active_buying_max>3</active_buying_max>"
528 " <dormant_buying_frequency_type>Normal</dormant_buying_frequency_type>"
529 " <dormant_buying_mean>5</dormant_buying_mean>"
530 " <dormant_buying_stddev>1</dormant_buying_stddev>";
534 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
536 sim.AddSource(
"spent_fuel").capacity(5).Finalize();
537 sim.AddSink(
"dry_spent").Finalize();
541 std::vector<cyclus::Cond> conds;
542 conds.push_back(cyclus::Cond(
"Commodity",
"==", std::string(
"spent_fuel")));
543 cyclus::QueryResult qr = sim.db().Query(
"Transactions", &conds);
546 EXPECT_EQ(0, qr.GetVal<
int>(
"Time", 0));
547 EXPECT_EQ(1, qr.GetVal<
int>(
"Time", 1));
549 EXPECT_EQ(7, qr.GetVal<
int>(
"Time", 2));
550 EXPECT_EQ(8, qr.GetVal<
int>(
"Time", 3));
551 EXPECT_EQ(9, qr.GetVal<
int>(
"Time", 4));
556 " <in_commods> <val>commod</val> </in_commods> "
557 " <out_commods> <val>commod1</val> </out_commods> "
558 " <throughput>1</throughput>"
559 " <active_buying_frequency_type>Binomial</active_buying_frequency_type>"
560 " <active_buying_end_probability>0.2</active_buying_end_probability>"
561 " <dormant_buying_frequency_type>Binomial</dormant_buying_frequency_type>"
562 " <dormant_buying_end_probability>0.3</dormant_buying_end_probability>";
566 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
567 sim.AddSource(
"commod").capacity(5).Finalize();
571 std::vector<cyclus::Cond> conds;
572 conds.push_back(cyclus::Cond(
"Commodity",
"==", std::string(
"commod")));
573 cyclus::QueryResult qr = sim.db().Query(
"Transactions", &conds);
576 EXPECT_EQ(0, qr.GetVal<
int>(
"Time", 0));
577 EXPECT_EQ(1, qr.GetVal<
int>(
"Time", 1));
579 EXPECT_EQ(6, qr.GetVal<
int>(
"Time", 6));
581 EXPECT_EQ(10, qr.GetVal<
int>(
"Time", 7));
586 " <in_commods><val>commod</val></in_commods>"
587 " <out_commods><val>commod1</val></out_commods>"
588 " <throughput>1</throughput>"
589 " <active_buying_frequency_type>FixedWithDisruption</active_buying_frequency_type>"
590 " <active_buying_disruption_probability>0.4</active_buying_disruption_probability>"
591 " <active_buying_val>2</active_buying_val>"
592 " <active_buying_disruption>5</active_buying_disruption>"
593 " <dormant_buying_frequency_type>FixedWithDisruption</dormant_buying_frequency_type>"
594 " <dormant_buying_disruption_probability>0.5</dormant_buying_disruption_probability>"
595 " <dormant_buying_val>1</dormant_buying_val>"
596 " <dormant_buying_disruption>10</dormant_buying_disruption>";
600 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
601 sim.AddSource(
"commod").capacity(5).Finalize();
604 cyclus::QueryResult qr = sim.db().Query(
"Transactions", NULL);
607 EXPECT_EQ(0, qr.GetVal<
int>(
"Time", 0));
608 EXPECT_EQ(1, qr.GetVal<
int>(
"Time", 1));
612 EXPECT_EQ(3, qr.GetVal<
int>(
"Time", 2));
613 EXPECT_EQ(4, qr.GetVal<
int>(
"Time", 3));
617 EXPECT_EQ(15, qr.GetVal<
int>(
"Time", 4));
622 " <in_commods> <val>spent_fuel</val> </in_commods> "
623 " <out_commods> <val>dry_spent</val> </out_commods> "
624 " <throughput>1</throughput>"
625 " <buying_size_type>Fixed</buying_size_type>"
626 " <buying_size_val>0.5</buying_size_val>";
630 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
632 sim.AddSource(
"spent_fuel").Finalize();
635 cyclus::QueryResult qr = sim.db().Query(
"Resources", NULL);
636 EXPECT_NEAR(0.5, qr.GetVal<
double>(
"Quantity", 0), 0.00001);
637 EXPECT_NEAR(0.5, qr.GetVal<
double>(
"Quantity", 1), 0.00001);
642 " <in_commods> <val>spent_fuel</val> </in_commods> "
643 " <out_commods> <val>dry_spent</val> </out_commods> "
644 " <throughput>1</throughput>"
645 " <buying_size_type>Uniform</buying_size_type>"
646 " <buying_size_min>0.5</buying_size_min>"
647 " <buying_size_max>0.7</buying_size_max>";
651 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
653 sim.AddSource(
"spent_fuel").Finalize();
656 cyclus::QueryResult qr = sim.db().Query(
"Resources", NULL);
657 EXPECT_NEAR(0.56393, qr.GetVal<
double>(
"Quantity", 0), 0.00001);
658 EXPECT_NEAR(0.68825, qr.GetVal<
double>(
"Quantity", 1), 0.00001);
663 " <in_commods> <val>spent_fuel</val> </in_commods> "
664 " <out_commods> <val>dry_spent</val> </out_commods> "
665 " <throughput>1</throughput>"
666 " <buying_size_type>Normal</buying_size_type>"
667 " <buying_size_mean>0.5</buying_size_mean>"
668 " <buying_size_stddev>0.1</buying_size_stddev>";
672 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
674 sim.AddSource(
"spent_fuel").Finalize();
678 cyclus::QueryResult qr = sim.db().Query(
"Resources", NULL);
679 EXPECT_NEAR(0.64083, qr.GetVal<
double>(
"Quantity", 0), 0.00001);
680 EXPECT_NEAR(0.32648, qr.GetVal<
double>(
"Quantity", 1), 0.00001);
685 " <in_commods> <val>spent_fuel</val> </in_commods> "
686 " <out_commods> <val>dry_spent</val> </out_commods> "
687 " <throughput>1</throughput>"
688 " <active_buying_frequency_type>Normal</active_buying_frequency_type>"
689 " <active_buying_mean>3</active_buying_mean>"
690 " <active_buying_stddev>1</active_buying_stddev>"
691 " <dormant_buying_frequency_type>Normal</dormant_buying_frequency_type>"
692 " <dormant_buying_mean>2</dormant_buying_mean>"
693 " <dormant_buying_stddev>1</dormant_buying_stddev>"
694 " <buying_size_type>Normal</buying_size_type>"
695 " <buying_size_mean>0.5</buying_size_mean>"
696 " <buying_size_stddev>0.1</buying_size_stddev>";
700 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
702 sim.AddSource(
"spent_fuel").capacity(5).Finalize();
703 sim.AddSink(
"dry_spent").Finalize();
707 std::vector<cyclus::Cond> conds;
708 conds.push_back(cyclus::Cond(
"Commodity",
"==", std::string(
"spent_fuel")));
709 cyclus::QueryResult qr = sim.db().Query(
"Transactions", &conds);
710 int n_trans = qr.rows.size();
711 EXPECT_EQ(10, n_trans) <<
"expected 10 transactions, got " << n_trans;
714 EXPECT_EQ(0, qr.GetVal<
int>(
"Time", 0));
715 EXPECT_EQ(3, qr.GetVal<
int>(
"Time", 3));
717 EXPECT_EQ(6, qr.GetVal<
int>(
"Time", 4));
718 EXPECT_EQ(7, qr.GetVal<
int>(
"Time", 5));
720 EXPECT_EQ(8, qr.GetVal<
int>(
"Time", 6));
721 EXPECT_EQ(9, qr.GetVal<
int>(
"Time", 7));
723 EXPECT_EQ(13, qr.GetVal<
int>(
"Time", 8));
724 EXPECT_EQ(14, qr.GetVal<
int>(
"Time", 9));
726 qr = sim.db().Query(
"Resources", NULL);
727 EXPECT_NEAR(0.61256, qr.GetVal<
double>(
"Quantity", 0), 0.00001);
728 EXPECT_NEAR(0.62217, qr.GetVal<
double>(
"Quantity", 1), 0.00001);
729 EXPECT_NEAR(0.39705, qr.GetVal<
double>(
"Quantity", 2), 0.00001);
734 std::string config_uniform =
735 " <in_commods> <val>spent_fuel</val> </in_commods> "
736 " <out_commods> <val>dry_spent</val> </out_commods> "
737 " <throughput>1</throughput>"
738 " <active_buying_frequency_type>Uniform</active_buying_frequency_type>";
742 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config_uniform,
744 EXPECT_THROW(sim.Run(), cyclus::ValueError);
749 std::string config_normal =
750 " <in_commods> <val>spent_fuel</val> </in_commods> "
751 " <out_commods> <val>dry_spent</val> </out_commods> "
752 " <throughput>1</throughput>"
753 " <active_buying_frequency_type>Normal</active_buying_frequency_type>";
756 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config_normal,
758 EXPECT_THROW(sim.Run(), cyclus::ValueError);
763 std::string config_uniform_min_bigger_max =
764 " <in_commods> <val>spent_fuel</val> </in_commods> "
765 " <out_commods> <val>dry_spent</val> </out_commods> "
766 " <throughput>1</throughput>"
767 " <active_buying_frequency_type>Uniform</active_buying_frequency_type>"
768 " <active_buying_min>3</active_buying_min>"
769 " <active_buying_max>2</active_buying_max>";
773 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"),
774 config_uniform_min_bigger_max, simdur);
775 EXPECT_THROW(sim.Run(), cyclus::ValueError);
782 " <in_commods> <val>spent_fuel</val> </in_commods> "
783 " <out_commods> <val>dry_spent</val> </out_commods> "
784 " <residence_time>1</residence_time>"
785 " <max_inv_size>10</max_inv_size>";
789 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
791 sim.AddSource(
"spent_fuel").Finalize();
792 sim.AddSink(
"dry_spent").Finalize();
796 cyclus::QueryResult qr = sim.db().Query(
"AgentPosition", NULL);
797 EXPECT_EQ(qr.GetVal<
double>(
"Latitude"), 0.0);
798 EXPECT_EQ(qr.GetVal<
double>(
"Longitude"), 0.0);
805 " <in_commods> <val>spent_fuel</val> </in_commods> "
806 " <out_commods> <val>dry_spent</val> </out_commods> "
807 " <residence_time>1</residence_time>"
808 " <max_inv_size>10</max_inv_size>"
809 " <latitude>50.0</latitude> "
810 " <longitude>35.0</longitude> ";
814 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
816 sim.AddSource(
"spent_fuel").Finalize();
817 sim.AddSink(
"dry_spent").Finalize();
821 cyclus::QueryResult qr = sim.db().Query(
"AgentPosition", NULL);
822 EXPECT_EQ(qr.GetVal<
double>(
"Latitude"), 50.0);
823 EXPECT_EQ(qr.GetVal<
double>(
"Longitude"), 35.0);
828 " <in_commods> <val>spent_fuel</val> </in_commods> "
829 " <out_commods> <val>dry_spent</val> </out_commods> "
830 " <max_inv_size>5</max_inv_size>"
831 " <reorder_point>2</reorder_point>"
832 " <reorder_quantity>10</reorder_quantity>";
836 cyclus::MockSim sim(cyclus::AgentSpec(
":cycamore:Storage"), config, simdur);
838 EXPECT_THROW(
int id = sim.Run(), cyclus::ValueError);
843 " <in_commods> <val>spent_fuel</val> </in_commods> "
844 " <out_commods> <val>dry_spent</val> </out_commods> "
845 " <max_inv_size>5</max_inv_size>"
846 " <reorder_point>2</reorder_point>"
847 " <reorder_quantity>3</reorder_quantity>";
851 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
853 sim.AddSource(
"spent_fuel").capacity(5).Finalize();
854 sim.AddSink(
"dry_spent").Finalize();
858 std::vector<cyclus::Cond> conds;
859 conds.push_back(cyclus::Cond(
"Commodity",
"==", std::string(
"spent_fuel")));
860 cyclus::QueryResult qr = sim.db().Query(
"Transactions", &conds);
861 int n_trans = qr.rows.size();
863 EXPECT_EQ(3, n_trans) <<
"expected 3 transactions, got " << n_trans;
865 EXPECT_EQ(0, qr.GetVal<
int>(
"Time", 0));
866 EXPECT_EQ(2, qr.GetVal<
int>(
"Time", 1));
867 EXPECT_EQ(4, qr.GetVal<
int>(
"Time", 2));
870 qr = sim.db().Query(
"Resources", NULL);
871 EXPECT_EQ(3, qr.GetVal<
double>(
"Quantity", 0));
876 " <in_commods> <val>spent_fuel</val> </in_commods> "
877 " <out_commods> <val>dry_spent</val> </out_commods> "
878 " <max_inv_size>5</max_inv_size>"
879 " <reorder_point>2</reorder_point>";
883 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
885 sim.AddSource(
"spent_fuel").capacity(5).Finalize();
886 sim.AddSink(
"dry_spent").Finalize();
890 std::vector<cyclus::Cond> conds;
891 conds.push_back(cyclus::Cond(
"Commodity",
"==", std::string(
"spent_fuel")));
892 cyclus::QueryResult qr = sim.db().Query(
"Transactions", &conds);
893 int n_trans = qr.rows.size();
894 EXPECT_EQ(3, n_trans) <<
"expected 3 transactions, got " << n_trans;
896 EXPECT_EQ(0, qr.GetVal<
int>(
"Time", 0));
897 EXPECT_EQ(2, qr.GetVal<
int>(
"Time", 1));
898 EXPECT_EQ(4, qr.GetVal<
int>(
"Time", 2));
901 qr = sim.db().Query(
"Resources", NULL);
902 EXPECT_EQ(5, qr.GetVal<
double>(
"Quantity", 0));
907 " <in_commods> <val>spent_fuel</val> </in_commods> "
908 " <out_commods> <val>dry_spent</val> </out_commods> "
909 " <throughput>1</throughput> "
910 " <cumulative_cap>2</cumulative_cap> "
911 " <dormant_buying_frequency_type>Fixed</dormant_buying_frequency_type> "
912 " <dormant_buying_val>2</dormant_buying_val> ";
916 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
918 sim.AddSource(
"spent_fuel").capacity(5).Finalize();
919 sim.AddSink(
"dry_spent").Finalize();
923 std::vector<cyclus::Cond> conds;
924 conds.push_back(cyclus::Cond(
"Commodity",
"==", std::string(
"spent_fuel")));
925 cyclus::QueryResult qr = sim.db().Query(
"Transactions", &conds);
926 int n_trans = qr.rows.size();
927 EXPECT_EQ(5, n_trans) <<
"expected 5 transactions, got " << n_trans;
929 EXPECT_EQ(0, qr.GetVal<
int>(
"Time", 0));
930 EXPECT_EQ(1, qr.GetVal<
int>(
"Time", 1));
931 EXPECT_EQ(4, qr.GetVal<
int>(
"Time", 2));
932 EXPECT_EQ(5, qr.GetVal<
int>(
"Time", 3));
933 EXPECT_EQ(8, qr.GetVal<
int>(
"Time", 4));
936 qr = sim.db().Query(
"Resources", NULL);
937 EXPECT_EQ(1, qr.GetVal<
double>(
"Quantity", 0));
938 EXPECT_EQ(1, qr.GetVal<
double>(
"Quantity", 4));
944 " <in_commods> <val>spent_fuel</val> </in_commods> "
945 " <out_commods> <val>dry_spent</val> </out_commods> "
946 " <package>foo</package>";
950 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
951 sim.context()->AddPackage(
"foo", 1, 2,
"first");
952 cyclus::Package::Ptr p = sim.context()->GetPackage(
"foo");
954 sim.AddSource(
"spent_fuel").capacity(2).Finalize();
955 sim.AddSink(
"dry_spent").Finalize();
959 std::vector<cyclus::Cond> tr_conds;
960 tr_conds.push_back(cyclus::Cond(
"Commodity",
"==", std::string(
"dry_spent")));
961 cyclus::QueryResult qr_trans = sim.db().Query(
"Transactions", &tr_conds);
963 EXPECT_EQ(2, qr_trans.rows.size());
965 EXPECT_EQ(1, qr_trans.GetVal<
int>(
"Time", 0));
966 EXPECT_EQ(2, qr_trans.GetVal<
int>(
"Time", 1));
968 std::vector<cyclus::Cond> res_conds;
969 res_conds.push_back(cyclus::Cond(
"PackageName",
"==", p->name()));
970 cyclus::QueryResult qr_res = sim.db().Query(
"Resources", &res_conds);
972 EXPECT_EQ(qr_res.rows.size(), 2);
973 EXPECT_EQ(qr_res.GetVal<
double>(
"Quantity", 0), 2);
974 EXPECT_EQ(qr_res.GetVal<
double>(
"Quantity", 1), 2);
980 " <in_commods> <val>commodity</val> </in_commods> "
981 " <out_commods> <val>commodity1</val> </out_commods> "
982 " <package>foo</package>";
986 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
987 sim.context()->AddPackage(
"foo", 1, 2,
"equal");
988 cyclus::Package::Ptr p = sim.context()->GetPackage(
"foo");
990 sim.AddSource(
"commodity").capacity(3).Finalize();
991 sim.AddSink(
"commodity1").Finalize();
995 std::vector<cyclus::Cond> tr_conds;
996 tr_conds.push_back(cyclus::Cond(
"Commodity",
"==", std::string(
"commodity1")));
997 cyclus::QueryResult qr_trans = sim.db().Query(
"Transactions", &tr_conds);
1000 EXPECT_EQ(4, qr_trans.rows.size());
1002 EXPECT_EQ(1, qr_trans.GetVal<
int>(
"Time", 0));
1003 EXPECT_EQ(1, qr_trans.GetVal<
int>(
"Time", 1));
1004 EXPECT_EQ(2, qr_trans.GetVal<
int>(
"Time", 2));
1005 EXPECT_EQ(2, qr_trans.GetVal<
int>(
"Time", 3));
1007 std::vector<cyclus::Cond> res_conds;
1008 res_conds.push_back(cyclus::Cond(
"PackageName",
"==", p->name()));
1009 cyclus::QueryResult qr_res = sim.db().Query(
"Resources", &res_conds);
1011 EXPECT_EQ(qr_res.rows.size(), 4);
1012 EXPECT_EQ(1.5, qr_res.GetVal<
double>(
"Quantity", 0));
1013 EXPECT_EQ(1.5, qr_res.GetVal<
double>(
"Quantity", 1));
1014 EXPECT_EQ(1.5, qr_res.GetVal<
double>(
"Quantity", 2));
1015 EXPECT_EQ(1.5, qr_res.GetVal<
double>(
"Quantity", 3));
1020 std::string config =
1021 " <in_commods> <val>commodity</val> </in_commods> "
1022 " <out_commods> <val>commodity1</val> </out_commods> "
1023 " <package>foo</package>";
1027 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
1028 sim.context()->AddPackage(
"foo", 1, 2,
"first");
1029 cyclus::Package::Ptr p = sim.context()->GetPackage(
"foo");
1031 sim.AddSource(
"commodity").capacity(3).Finalize();
1032 sim.AddSink(
"commodity1").Finalize();
1036 std::vector<cyclus::Cond> tr_conds;
1037 tr_conds.push_back(cyclus::Cond(
"Commodity",
"==", std::string(
"commodity1")));
1038 cyclus::QueryResult qr_trans = sim.db().Query(
"Transactions", &tr_conds);
1041 EXPECT_EQ(4, qr_trans.rows.size());
1043 EXPECT_EQ(1, qr_trans.GetVal<
int>(
"Time", 0));
1044 EXPECT_EQ(1, qr_trans.GetVal<
int>(
"Time", 1));
1045 EXPECT_EQ(2, qr_trans.GetVal<
int>(
"Time", 2));
1046 EXPECT_EQ(2, qr_trans.GetVal<
int>(
"Time", 3));
1048 std::vector<cyclus::Cond> res_conds;
1049 res_conds.push_back(cyclus::Cond(
"PackageName",
"==", p->name()));
1050 cyclus::QueryResult qr_res = sim.db().Query(
"Resources", &res_conds);
1052 EXPECT_EQ(qr_res.rows.size(), 4);
1056 std::vector<double> pkgd_t0 = {qr_res.GetVal<
double>(
"Quantity", 0),
1057 qr_res.GetVal<
double>(
"Quantity", 1)};
1058 std::sort(pkgd_t0.begin(), pkgd_t0.end(), std::greater<double>());
1059 std::vector<double> exp_t0 = {2, 1};
1061 EXPECT_EQ(exp_t0, pkgd_t0);
1063 std::vector<double> pkgd_t1 = {qr_res.GetVal<
double>(
"Quantity", 2),
1064 qr_res.GetVal<
double>(
"Quantity", 3)};
1065 std::sort(pkgd_t1.begin(), pkgd_t1.end(), std::greater<double>());
1066 std::vector<double> exp_t1 = {2, 1};
1068 EXPECT_EQ(exp_t1, pkgd_t1);
1072 std::string config =
1073 " <in_commods> <val>commodity</val> </in_commods> "
1074 " <out_commods> <val>commodity1</val> </out_commods> "
1075 " <throughput>1</throughput> "
1076 " <package>foo</package>";
1080 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
1081 sim.context()->AddPackage(
"foo", 1, 2,
"first");
1082 cyclus::Package::Ptr p = sim.context()->GetPackage(
"foo");
1084 sim.AddSource(
"commodity").capacity(0.5).Finalize();
1085 sim.AddSink(
"commodity1").Finalize();
1089 std::vector<cyclus::Cond> tr_conds;
1090 tr_conds.push_back(cyclus::Cond(
"Commodity",
"==", std::string(
"commodity1")));
1092 cyclus::QueryResult qr_trans = sim.db().Query(
"Transactions", &tr_conds);
1096 EXPECT_EQ(2, qr_trans.rows.size());
1098 EXPECT_EQ(2, qr_trans.GetVal<
int>(
"Time", 0));
1099 EXPECT_EQ(4, qr_trans.GetVal<
int>(
"Time", 1));
1101 std::vector<cyclus::Cond> res_conds;
1102 res_conds.push_back(cyclus::Cond(
"PackageName",
"==", p->name()));
1103 cyclus::QueryResult qr_res = sim.db().Query(
"Resources", &res_conds);
1105 EXPECT_EQ(2, qr_res.rows.size());
1106 EXPECT_EQ(1, qr_res.GetVal<
double>(
"Quantity", 0));
1107 EXPECT_EQ(1, qr_res.GetVal<
double>(
"Quantity", 1));
1111 std::string config =
1112 " <in_commods> <val>commodity</val> </in_commods> "
1113 " <out_commods> <val>commodity1</val> </out_commods> "
1114 " <throughput>3</throughput> "
1115 " <package>foo</package>"
1116 " <transport_unit>bar</transport_unit>";
1120 cyclus::MockSim sim(cyclus::AgentSpec (
":cycamore:Storage"), config, simdur);
1121 sim.context()->AddPackage(
"foo", 1, 1,
"first");
1122 cyclus::Package::Ptr p = sim.context()->GetPackage(
"foo");
1123 sim.context()->AddTransportUnit(
"bar", 2, 2,
"first");
1125 sim.AddSource(
"commodity").Finalize();
1126 sim.AddSink(
"commodity1").Finalize();
1130 std::vector<cyclus::Cond> tr_conds;
1131 tr_conds.push_back(cyclus::Cond(
"Commodity",
"==", std::string(
"commodity1")));
1133 cyclus::QueryResult qr_trans = sim.db().Query(
"Transactions", &tr_conds);
1140 EXPECT_EQ(6, qr_trans.rows.size());
1142 EXPECT_EQ(1, qr_trans.GetVal<
int>(
"Time", 0));
1143 EXPECT_EQ(1, qr_trans.GetVal<
int>(
"Time", 1));
1144 EXPECT_EQ(2, qr_trans.GetVal<
int>(
"Time", 2));
1145 EXPECT_EQ(2, qr_trans.GetVal<
int>(
"Time", 3));
1146 EXPECT_EQ(2, qr_trans.GetVal<
int>(
"Time", 4));
1147 EXPECT_EQ(2, qr_trans.GetVal<
int>(
"Time", 5));
1149 std::vector<cyclus::Cond> res_conds;
1150 res_conds.push_back(cyclus::Cond(
"PackageName",
"==", p->name()));
1151 cyclus::QueryResult qr_res = sim.db().Query(
"Resources", &res_conds);
1153 EXPECT_EQ(6, qr_res.rows.size());
1155 EXPECT_EQ(1, qr_res.GetVal<
double>(
"Quantity", 0));
1156 EXPECT_EQ(1, qr_res.GetVal<
double>(
"Quantity", 5));
1167#ifndef CYCLUS_AGENT_TESTS_CONNECTED
1170#define CYCLUS_AGENT_TESTS_CONNECTED cyclus_agent_tests_connected
static int cyclus_agent_tests_connected
INSTANTIATE_TEST_SUITE_P(DeployInst, InstitutionTests, Values(&DeployInstitutionConstructor))
cyclus::Agent * StorageConstructor(cyclus::Context *ctx)
std::vector< std::string > out_c1
void TestInitState(cycamore::Storage *fac)
void TestBuffers(cycamore::Storage *fac, double inv, double proc, double ready, double stocks)
void TestReadyTime(cycamore::Storage *fac, int t)
std::vector< std::string > in_c1
void TestStocks(cycamore::Storage *fac, cyclus::CompMap v)
void TestCurrentCap(cycamore::Storage *fac, double inv)
void TestAddMat(cycamore::Storage *fac, cyclus::Material::Ptr mat)
This Facility is intended to hold materials for a user specified amount of time in order to model a s...
void AddMat_(cyclus::Material::Ptr mat)
adds a material into the incoming commodity inventory
virtual std::string str()
A verbose printer for the Storage Facility.
double current_capacity()
current maximum amount that can be added to processing
cyclus::toolkit::ResBuf< cyclus::Material > ready
cyclus::toolkit::ResBuf< cyclus::Material > processing
cyclus::toolkit::TotalInvTracker inventory_tracker
virtual cyclus::Agent * Clone()
std::vector< std::string > in_commods
virtual void Tock()
The handleTick function specific to the Storage.
cyclus::toolkit::ResBuf< cyclus::Material > inventory
int ready_time()
returns the time key for ready materials
std::vector< std::string > out_commods
cyclus::toolkit::ResBuf< cyclus::Material > stocks
virtual void Tick()
The handleTick function specific to the Storage.
TEST_F(EnrichmentTest, RequestQty)