Bug 1309466 - Add Test for the init value by constructor. draft
authorJames Cheng <jacheng@mozilla.com>
Wed, 19 Oct 2016 18:12:11 +0800
changeset 427947 1d63ac44d5619bf019eb200f0199a74de11bc7c9
parent 427334 930e8c03385735ba0ea32e79a4c0f27d34c35b35
child 534609 bb821ba6cec28299b8b75b53a089d7e8f11f264d
push id33178
push userbmo:jacheng@mozilla.com
push dateFri, 21 Oct 2016 06:38:52 +0000
bugs1309466
milestone52.0a1
Bug 1309466 - Add Test for the init value by constructor. MozReview-Commit-ID: 9BguTY6dlRD
mfbt/tests/TestArray.cpp
mfbt/tests/TestEnumeratedArray.cpp
mfbt/tests/moz.build
testing/cppunittest.ini
new file mode 100644
--- /dev/null
+++ b/mfbt/tests/TestArray.cpp
@@ -0,0 +1,34 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "mozilla/Array.h"
+
+void TestInitialValueByConstructor()
+{
+  using namespace mozilla;
+  // Style 1
+  Array<int32_t, 3> arr1(1, 2, 3);
+  MOZ_RELEASE_ASSERT(arr1[0] == 1);
+  MOZ_RELEASE_ASSERT(arr1[1] == 2);
+  MOZ_RELEASE_ASSERT(arr1[2] == 3);
+  // Style 2
+  Array<int32_t, 3> arr2{5, 6, 7};
+  MOZ_RELEASE_ASSERT(arr2[0] == 5);
+  MOZ_RELEASE_ASSERT(arr2[1] == 6);
+  MOZ_RELEASE_ASSERT(arr2[2] == 7);
+  // Style 3
+  Array<int32_t, 3> arr3({8, 9, 10});
+  MOZ_RELEASE_ASSERT(arr3[0] == 8);
+  MOZ_RELEASE_ASSERT(arr3[1] == 9);
+  MOZ_RELEASE_ASSERT(arr3[2] == 10);
+}
+
+int
+main()
+{
+  TestInitialValueByConstructor();
+  return 0;
+}
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/mfbt/tests/TestEnumeratedArray.cpp
@@ -0,0 +1,42 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "mozilla/EnumeratedArray.h"
+
+enum class AnimalSpecies
+{
+  Cow,
+  Sheep,
+  Pig,
+  Count
+};
+
+void TestInitialValueByConstructor()
+{
+  using namespace mozilla;
+  // Style 1
+  EnumeratedArray<AnimalSpecies, AnimalSpecies::Count, int> 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<AnimalSpecies, AnimalSpecies::Count, int> 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<AnimalSpecies, AnimalSpecies::Count, int> 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);
+}
+
+int
+main()
+{
+  TestInitialValueByConstructor();
+  return 0;
+}
\ No newline at end of file
--- a/mfbt/tests/moz.build
+++ b/mfbt/tests/moz.build
@@ -1,26 +1,28 @@
 # -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 CppUnitTests([
+    'TestArray',
     'TestArrayUtils',
     'TestAtomics',
     'TestBinarySearch',
     'TestBloomFilter',
     'TestBufferList',
     'TestCasting',
     'TestCeilingFloor',
     'TestCheckedInt',
     'TestCountPopulation',
     'TestCountZeroes',
     'TestEndian',
+    'TestEnumeratedArray',
     'TestEnumSet',
     'TestEnumTypeTraits',
     'TestFastBernoulliTrial',
     'TestFloatingPoint',
     'TestFunction',
     'TestInitializerList',
     'TestIntegerPrintfMacros',
     'TestIntegerRange',
--- a/testing/cppunittest.ini
+++ b/testing/cppunittest.ini
@@ -1,11 +1,12 @@
 [ShowAlignments]
 [ShowSSEConfig]
 [TestAppShellSteadyState]
+[TestArray]
 [TestArrayUtils]
 [TestAtomics]
 [TestAudioBuffers]
 skip-if = os == 'b2g'  # Bug 1062937
 [TestAudioEventTimeline]
 [TestAudioMixer]
 [TestAutoPtr]
 [TestAutoRef]
@@ -27,16 +28,17 @@ skip-if = os == 'b2g' || (os == 'android
 [TestCountPopulation]
 [TestCountZeroes]
 [TestDeadlockDetector]
 skip-if = os == 'b2g' || (os == 'android' && debug) # Bug 1054249
 [TestDeadlockDetectorScalability]
 [TestDllInterceptor]
 skip-if = os != 'win'
 [TestEndian]
+[TestEnumeratedArray]
 [TestEnumSet]
 [TestEnumTypeTraits]
 [TestFastBernoulliTrial]
 [TestFile]
 [TestFloatingPoint]
 [TestFunction]
 [TestGetURL]
 [TestHashtables]