Skip to content

Commit ed18632

Browse files
committed
add test for BusEndsHaveSameSimIds to verify simulator id consistency across bus connections
1 parent 4d94172 commit ed18632

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

tests/evaluator/busesSimple.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,3 +129,35 @@ TEST_F(BusesSimpleEvaluatorTest, BusTristate) {
129129
evaluator->tickStep();
130130
EXPECT_EQ(std::get<std::vector<logic_state_t>>(evaluator->getPinState(tristatePos)), std::vector<logic_state_t>({ Z, Z }));
131131
}
132+
133+
TEST_F(BusesSimpleEvaluatorTest, BusEndsHaveSameSimIds) {
134+
BlockDataManager& blockDataManager = environment.getBackend().getBlockDataManager();
135+
const BlockData* bus2Data = blockDataManager.getBlockData(BUS2);
136+
ASSERT_NE(bus2Data, nullptr);
137+
138+
Position bus1Pos(0, 0);
139+
Position bus2Pos(2, 0);
140+
Position bus3Pos(4, 0);
141+
Position switch1Pos(0, 2);
142+
Position switch2Pos(1, 2);
143+
ASSERT_TRUE(circuit->tryInsertBlock(bus1Pos, 0, BUS2));
144+
ASSERT_TRUE(circuit->tryInsertBlock(bus2Pos, 0, BUS2));
145+
ASSERT_TRUE(circuit->tryInsertBlock(bus3Pos, 0, BUS2));
146+
ASSERT_TRUE(circuit->tryInsertBlock(switch1Pos, 0, BlockType::SWITCH));
147+
ASSERT_TRUE(circuit->tryInsertBlock(switch2Pos, 0, BlockType::SWITCH));
148+
149+
ASSERT_TRUE(circuit->tryCreateConnection(switch1Pos, bus1Pos + *bus2Data->getConnectionVector(0)));
150+
ASSERT_TRUE(circuit->tryCreateConnection(switch2Pos, bus3Pos + *bus2Data->getConnectionVector(1)));
151+
ASSERT_TRUE(circuit->tryCreateConnection(bus1Pos + *bus2Data->getConnectionVector(2), bus2Pos + *bus2Data->getConnectionVector(2)));
152+
ASSERT_TRUE(circuit->tryCreateConnection(bus2Pos + *bus2Data->getConnectionVector(2), bus3Pos + *bus2Data->getConnectionVector(2)));
153+
154+
std::variant<simulator_id_t, std::vector<simulator_id_t>> bus1OutputSimId = evaluator->getPinSimulatorId(bus1Pos + *(bus2Data->getConnectionVector(2)));
155+
std::variant<simulator_id_t, std::vector<simulator_id_t>> bus2OutputSimId = evaluator->getPinSimulatorId(bus2Pos + *(bus2Data->getConnectionVector(2)));
156+
std::variant<simulator_id_t, std::vector<simulator_id_t>> bus3OutputSimId = evaluator->getPinSimulatorId(bus3Pos + *(bus2Data->getConnectionVector(2)));
157+
158+
ASSERT_TRUE(std::holds_alternative<std::vector<simulator_id_t>>(bus1OutputSimId));
159+
ASSERT_TRUE(std::holds_alternative<std::vector<simulator_id_t>>(bus2OutputSimId));
160+
ASSERT_TRUE(std::holds_alternative<std::vector<simulator_id_t>>(bus3OutputSimId));
161+
EXPECT_EQ(std::get<std::vector<simulator_id_t>>(bus1OutputSimId), std::get<std::vector<simulator_id_t>>(bus2OutputSimId));
162+
EXPECT_EQ(std::get<std::vector<simulator_id_t>>(bus2OutputSimId), std::get<std::vector<simulator_id_t>>(bus3OutputSimId));
163+
}

0 commit comments

Comments
 (0)