Skip to content

Commit 088785f

Browse files
committed
fix #551: Make finding broadcasts by name case insensitive
Matches Scratch behavior.
1 parent 733c1a1 commit 088785f

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

src/engine/internal/engine.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1067,7 +1067,14 @@ std::shared_ptr<Broadcast> Engine::broadcastAt(int index) const
10671067

10681068
int Engine::findBroadcast(const std::string &broadcastName) const
10691069
{
1070-
auto it = std::find_if(m_broadcasts.begin(), m_broadcasts.end(), [broadcastName](std::shared_ptr<Broadcast> broadcast) { return broadcast->name() == broadcastName; });
1070+
std::string lowercaseName = broadcastName;
1071+
std::transform(lowercaseName.begin(), lowercaseName.end(), lowercaseName.begin(), ::tolower);
1072+
1073+
auto it = std::find_if(m_broadcasts.begin(), m_broadcasts.end(), [lowercaseName](std::shared_ptr<Broadcast> broadcast) {
1074+
std::string name = broadcast->name();
1075+
std::transform(name.begin(), name.end(), name.begin(), ::tolower);
1076+
return name == lowercaseName;
1077+
});
10711078

10721079
if (it == m_broadcasts.end())
10731080
return -1;

test/engine/engine_test.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1237,6 +1237,8 @@ TEST(EngineTest, Broadcasts)
12371237
ASSERT_EQ(engine.findBroadcast("message1"), 0);
12381238
ASSERT_EQ(engine.findBroadcast("message2"), 1);
12391239
ASSERT_EQ(engine.findBroadcast("Test"), 2);
1240+
ASSERT_EQ(engine.findBroadcast("MessAge2"), 1);
1241+
ASSERT_EQ(engine.findBroadcast("tEst"), 2);
12401242

12411243
ASSERT_EQ(engine.findBroadcastById("d"), -1);
12421244
ASSERT_EQ(engine.findBroadcastById("a"), 0);

0 commit comments

Comments
 (0)