Skip to content

Commit 9692e75

Browse files
committed
Add test for travelled distance (Fix #250)
1 parent 8b31348 commit 9692e75

File tree

3 files changed

+35
-6
lines changed

3 files changed

+35
-6
lines changed

src/dsm/dsm.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
static constexpr uint8_t DSM_VERSION_MAJOR = 2;
88
static constexpr uint8_t DSM_VERSION_MINOR = 3;
9-
static constexpr uint8_t DSM_VERSION_PATCH = 12;
9+
static constexpr uint8_t DSM_VERSION_PATCH = 13;
1010

1111
static auto const DSM_VERSION =
1212
std::format("{}.{}.{}", DSM_VERSION_MAJOR, DSM_VERSION_MINOR, DSM_VERSION_PATCH);

src/dsm/headers/RoadDynamics.hpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -274,10 +274,11 @@ namespace dsm {
274274
bool reinsert_agents) {
275275
auto const nLanes = pStreet->nLanes();
276276
std::uniform_real_distribution<double> uniformDist{0., 1.};
277+
bool bCanPass{true};
277278
if (pStreet->isStochastic() &&
278279
(uniformDist(this->m_generator) >
279280
dynamic_cast<StochasticStreet&>(*pStreet).flowRate())) {
280-
return;
281+
bCanPass = false;
281282
}
282283
for (auto queueIndex = 0; queueIndex < nLanes; ++queueIndex) {
283284
if (pStreet->queue(queueIndex).empty()) {
@@ -300,10 +301,8 @@ namespace dsm {
300301
continue;
301302
}
302303
}
303-
bool bCanPass = true;
304-
if (m_passageProbability.has_value()) {
305-
bCanPass = uniformDist(this->m_generator) < m_passageProbability.value();
306-
}
304+
bCanPass = bCanPass &&
305+
(uniformDist(this->m_generator) < m_passageProbability.value_or(1.1));
307306
bool bArrived{false};
308307
if (!bCanPass) {
309308
if (pAgent->isRandom()) {

test/Test_dynamics.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -848,6 +848,36 @@ TEST_CASE("Dynamics") {
848848
}
849849
}
850850
}
851+
GIVEN(
852+
"A dynamics with one stochastic street and one normal street network and an "
853+
"agent") {
854+
Street s1{0, std::make_pair(0, 1), 3.};
855+
Street s2{1, std::make_pair(1, 2), 1.};
856+
Graph graph2;
857+
graph2.addStreets(s1, s2);
858+
graph2.buildAdj();
859+
graph2.makeStochasticStreet(1, 0.3);
860+
Dynamics dynamics{graph2, 69};
861+
Itinerary itinerary{0, 2};
862+
dynamics.addItinerary(itinerary);
863+
dynamics.updatePaths();
864+
dynamics.addAgent(0, 0, 0);
865+
WHEN("We evolve the dynamics") {
866+
dynamics.evolve(false);
867+
dynamics.evolve(false);
868+
dynamics.evolve(false);
869+
dynamics.evolve(false);
870+
dynamics.evolve(false);
871+
dynamics.evolve(false);
872+
THEN("The agent has travelled the correct distance") {
873+
CHECK_EQ(dynamics.agents().at(0)->time(), 6);
874+
CHECK_EQ(dynamics.agents().at(0)->delay(), 0);
875+
CHECK_EQ(dynamics.agents().at(0)->streetId().value(), 5);
876+
CHECK_EQ(dynamics.agents().at(0)->speed(), 13.8888888889);
877+
CHECK_EQ(dynamics.agents().at(0)->distance(), 4.);
878+
}
879+
}
880+
}
851881
}
852882
SUBCASE("streetMeanSpeed") {
853883
/// GIVEN: a dynamics object

0 commit comments

Comments
 (0)