From ca98dff3cd3bc72b392508ec8d6baf1ffc85ecfd Mon Sep 17 00:00:00 2001 From: adazem009 <68537469+adazem009@users.noreply.github.com> Date: Wed, 21 Aug 2024 14:49:13 +0200 Subject: [PATCH] fix #551: Make finding broadcasts by name case insensitive Matches Scratch behavior. --- src/engine/internal/engine.cpp | 9 ++++++++- test/engine/engine_test.cpp | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/engine/internal/engine.cpp b/src/engine/internal/engine.cpp index 1f1235df..dabd0920 100644 --- a/src/engine/internal/engine.cpp +++ b/src/engine/internal/engine.cpp @@ -1083,7 +1083,14 @@ std::shared_ptr Engine::broadcastAt(int index) const int Engine::findBroadcast(const std::string &broadcastName) const { - auto it = std::find_if(m_broadcasts.begin(), m_broadcasts.end(), [broadcastName](std::shared_ptr broadcast) { return broadcast->name() == broadcastName; }); + std::string lowercaseName = broadcastName; + std::transform(lowercaseName.begin(), lowercaseName.end(), lowercaseName.begin(), ::tolower); + + auto it = std::find_if(m_broadcasts.begin(), m_broadcasts.end(), [lowercaseName](std::shared_ptr broadcast) { + std::string name = broadcast->name(); + std::transform(name.begin(), name.end(), name.begin(), ::tolower); + return name == lowercaseName; + }); if (it == m_broadcasts.end()) return -1; diff --git a/test/engine/engine_test.cpp b/test/engine/engine_test.cpp index 9b8991f7..42b5d675 100644 --- a/test/engine/engine_test.cpp +++ b/test/engine/engine_test.cpp @@ -1289,6 +1289,8 @@ TEST(EngineTest, Broadcasts) ASSERT_EQ(engine.findBroadcast("message1"), 0); ASSERT_EQ(engine.findBroadcast("message2"), 1); ASSERT_EQ(engine.findBroadcast("Test"), 2); + ASSERT_EQ(engine.findBroadcast("MessAge2"), 1); + ASSERT_EQ(engine.findBroadcast("tEst"), 2); ASSERT_EQ(engine.findBroadcastById("d"), -1); ASSERT_EQ(engine.findBroadcastById("a"), 0);