From 4bdc63191bf79e461eab5d62ebceadd3bfe19851 Mon Sep 17 00:00:00 2001 From: Scott Doxey Date: Tue, 6 Aug 2024 00:06:45 -0400 Subject: [PATCH] Added GenerateAdjacentKeyPairs method. Added test. --- includes/RhythmGameUtilities/Utilities.cpp | 24 ++++++++++++++++++++++ includes/RhythmGameUtilities/Utilities.h | 3 +++ tests/MusicGameUtilities/Utilities.cpp | 14 +++++++++++++ 3 files changed, 41 insertions(+) diff --git a/includes/RhythmGameUtilities/Utilities.cpp b/includes/RhythmGameUtilities/Utilities.cpp index ea91cb6..1e99b4d 100644 --- a/includes/RhythmGameUtilities/Utilities.cpp +++ b/includes/RhythmGameUtilities/Utilities.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include "Utilities.h" @@ -110,6 +111,29 @@ std::vector Split(const char *contents, const char delimiter) return parts; } +std::vector> +GenerateAdjacentKeyPairs(std::map keyValuePairs) +{ + auto adjacentKeyPairs = std::vector>(); + + std::vector keys; + + for (auto item : keyValuePairs) + { + keys.push_back(item.first); + } + + std::vector sortedKeys(keys.begin(), keys.end()); + + for (auto i = 0; i < size(sortedKeys) - 1; i += 1) + { + adjacentKeyPairs.push_back( + std::make_tuple(sortedKeys[i], sortedKeys[i + 1])); + } + + return adjacentKeyPairs; +} + std::vector FindAllMatches(const char *contents, std::regex pattern) { diff --git a/includes/RhythmGameUtilities/Utilities.h b/includes/RhythmGameUtilities/Utilities.h index 55c48d2..76429c4 100644 --- a/includes/RhythmGameUtilities/Utilities.h +++ b/includes/RhythmGameUtilities/Utilities.h @@ -38,6 +38,9 @@ std::string Trim(const char *contents); std::vector Split(const char *contents, const char delimiter); +std::vector> +GenerateAdjacentKeyPairs(std::map keyValuePairs); + std::vector FindAllMatches(const char *contents, std::regex pattern); diff --git a/tests/MusicGameUtilities/Utilities.cpp b/tests/MusicGameUtilities/Utilities.cpp index f96486f..273e52f 100644 --- a/tests/MusicGameUtilities/Utilities.cpp +++ b/tests/MusicGameUtilities/Utilities.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include "RhythmGameUtilities/Utilities.h" @@ -74,6 +75,18 @@ void testSplit() std::cout << "."; } +void testGenerateAdjacentKeyPairs() +{ + auto adjacentKeyPairs = + GenerateAdjacentKeyPairs(std::map{{1, 2}, {3, 4}, {5, 6}}); + + assert(adjacentKeyPairs.size() == 2); + assert(adjacentKeyPairs[0] == std::make_tuple(1, 3)); + assert(adjacentKeyPairs[1] == std::make_tuple(3, 5)); + + std::cout << "."; +} + void testFindAllMatches() { std::regex pattern("\\w+"); @@ -107,6 +120,7 @@ int main() testTrim(); testSplit(); + testGenerateAdjacentKeyPairs(); testFindAllMatches(); testFindMatchGroups();