From c7aac206e4a2c2beacaefa35a00865637ae306b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Thu, 25 Apr 2019 16:40:47 +0000 Subject: [PATCH] Bug 1546697 - EnumeratedArray should have a copy assignment operator. r=froydnj I'll use this in a following patch. Differential Revision: https://phabricator.services.mozilla.com/D28679 --HG-- extra : moz-landing-system : lando --- mfbt/EnumeratedArray.h | 7 +++++++ mfbt/tests/TestEnumeratedArray.cpp | 24 ++++++++++++++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/mfbt/EnumeratedArray.h b/mfbt/EnumeratedArray.h index 17be24f87e2d..ab32ed9543ee 100644 --- a/mfbt/EnumeratedArray.h +++ b/mfbt/EnumeratedArray.h @@ -80,6 +80,13 @@ class EnumeratedArray { return *this; } + EnumeratedArray& operator=(const EnumeratedArray& aOther) { + for (size_t i = 0; i < kSize; i++) { + mArray[i] = aOther.mArray[i]; + } + return *this; + } + typedef typename ArrayType::iterator iterator; typedef typename ArrayType::const_iterator const_iterator; typedef typename ArrayType::reverse_iterator reverse_iterator; diff --git a/mfbt/tests/TestEnumeratedArray.cpp b/mfbt/tests/TestEnumeratedArray.cpp index ad1c3d68df30..dfc1a37f17a9 100644 --- a/mfbt/tests/TestEnumeratedArray.cpp +++ b/mfbt/tests/TestEnumeratedArray.cpp @@ -6,29 +6,41 @@ #include "mozilla/EnumeratedArray.h" +using mozilla::EnumeratedArray; + enum class AnimalSpecies { Cow, Sheep, Pig, Count }; +using TestArray = EnumeratedArray; + void TestInitialValueByConstructor() { - using namespace mozilla; // Style 1 - EnumeratedArray headCount(1, 2, 3); + TestArray headCount(1, 2, 3); MOZ_RELEASE_ASSERT(headCount[AnimalSpecies::Cow] == 1); MOZ_RELEASE_ASSERT(headCount[AnimalSpecies::Sheep] == 2); MOZ_RELEASE_ASSERT(headCount[AnimalSpecies::Pig] == 3); // Style 2 - EnumeratedArray headCount2{5, 6, 7}; + TestArray headCount2{5, 6, 7}; MOZ_RELEASE_ASSERT(headCount2[AnimalSpecies::Cow] == 5); MOZ_RELEASE_ASSERT(headCount2[AnimalSpecies::Sheep] == 6); MOZ_RELEASE_ASSERT(headCount2[AnimalSpecies::Pig] == 7); // Style 3 - EnumeratedArray headCount3( - {8, 9, 10}); + TestArray headCount3({8, 9, 10}); MOZ_RELEASE_ASSERT(headCount3[AnimalSpecies::Cow] == 8); MOZ_RELEASE_ASSERT(headCount3[AnimalSpecies::Sheep] == 9); MOZ_RELEASE_ASSERT(headCount3[AnimalSpecies::Pig] == 10); } +void TestAssignment() { + TestArray headCount{8, 9, 10}; + TestArray headCount2; + headCount2 = headCount; + MOZ_RELEASE_ASSERT(headCount2[AnimalSpecies::Cow] == 8); + MOZ_RELEASE_ASSERT(headCount2[AnimalSpecies::Sheep] == 9); + MOZ_RELEASE_ASSERT(headCount2[AnimalSpecies::Pig] == 10); +} + int main() { TestInitialValueByConstructor(); + TestAssignment(); return 0; -} \ No newline at end of file +}