remove GTEST_ARRAY_SIZE_
This macro didn't work when an array was passed to a function by pointer, in which case the information about its size was lost. Better alternatives are: * std::extent<T>::value (compile-time) * std::array<T, N>::size() (compile-time) * std::distance(std::begin(array), std::end(array)) (run-time)
This commit is contained in:
		@@ -41,6 +41,8 @@
 | 
			
		||||
 | 
			
		||||
#include "gmock/gmock-generated-matchers.h"
 | 
			
		||||
 | 
			
		||||
#include <array>
 | 
			
		||||
#include <iterator>
 | 
			
		||||
#include <list>
 | 
			
		||||
#include <map>
 | 
			
		||||
#include <memory>
 | 
			
		||||
@@ -195,7 +197,7 @@ TEST(ElementsAreTest, ExplainsNonTrivialMatch) {
 | 
			
		||||
      ElementsAre(GreaterThan(1), 0, GreaterThan(2));
 | 
			
		||||
 | 
			
		||||
  const int a[] = { 10, 0, 100 };
 | 
			
		||||
  vector<int> test_vector(a, a + GTEST_ARRAY_SIZE_(a));
 | 
			
		||||
  vector<int> test_vector(std::begin(a), std::end(a));
 | 
			
		||||
  EXPECT_EQ("whose element #0 matches, which is 9 more than 1,\n"
 | 
			
		||||
            "and whose element #2 matches, which is 98 more than 2",
 | 
			
		||||
            Explain(m, test_vector));
 | 
			
		||||
@@ -280,7 +282,7 @@ TEST(ElementsAreTest, MatchesThreeElementsMixedMatchers) {
 | 
			
		||||
 | 
			
		||||
TEST(ElementsAreTest, MatchesTenElementVector) {
 | 
			
		||||
  const int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
 | 
			
		||||
  vector<int> test_vector(a, a + GTEST_ARRAY_SIZE_(a));
 | 
			
		||||
  vector<int> test_vector(std::begin(a), std::end(a));
 | 
			
		||||
 | 
			
		||||
  EXPECT_THAT(test_vector,
 | 
			
		||||
              // The element list can contain values and/or matchers
 | 
			
		||||
@@ -317,13 +319,10 @@ TEST(ElementsAreTest, DoesNotMatchWrongOrder) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST(ElementsAreTest, WorksForNestedContainer) {
 | 
			
		||||
  const char* strings[] = {
 | 
			
		||||
    "Hi",
 | 
			
		||||
    "world"
 | 
			
		||||
  };
 | 
			
		||||
  constexpr std::array<const char*, 2> strings = {{"Hi", "world"}};
 | 
			
		||||
 | 
			
		||||
  vector<list<char> > nested;
 | 
			
		||||
  for (size_t i = 0; i < GTEST_ARRAY_SIZE_(strings); i++) {
 | 
			
		||||
  for (size_t i = 0; i < strings.size(); i++) {
 | 
			
		||||
    nested.push_back(list<char>(strings[i], strings[i] + strlen(strings[i])));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -335,7 +334,7 @@ TEST(ElementsAreTest, WorksForNestedContainer) {
 | 
			
		||||
 | 
			
		||||
TEST(ElementsAreTest, WorksWithByRefElementMatchers) {
 | 
			
		||||
  int a[] = { 0, 1, 2 };
 | 
			
		||||
  vector<int> v(a, a + GTEST_ARRAY_SIZE_(a));
 | 
			
		||||
  vector<int> v(std::begin(a), std::end(a));
 | 
			
		||||
 | 
			
		||||
  EXPECT_THAT(v, ElementsAre(Ref(v[0]), Ref(v[1]), Ref(v[2])));
 | 
			
		||||
  EXPECT_THAT(v, Not(ElementsAre(Ref(v[0]), Ref(v[1]), Ref(a[2]))));
 | 
			
		||||
@@ -343,7 +342,7 @@ TEST(ElementsAreTest, WorksWithByRefElementMatchers) {
 | 
			
		||||
 | 
			
		||||
TEST(ElementsAreTest, WorksWithContainerPointerUsingPointee) {
 | 
			
		||||
  int a[] = { 0, 1, 2 };
 | 
			
		||||
  vector<int> v(a, a + GTEST_ARRAY_SIZE_(a));
 | 
			
		||||
  vector<int> v(std::begin(a), std::end(a));
 | 
			
		||||
 | 
			
		||||
  EXPECT_THAT(&v, Pointee(ElementsAre(0, 1, _)));
 | 
			
		||||
  EXPECT_THAT(&v, Not(Pointee(ElementsAre(0, _, 3))));
 | 
			
		||||
@@ -440,7 +439,7 @@ TEST(ElementsAreTest, MakesCopyOfArguments) {
 | 
			
		||||
TEST(ElementsAreArrayTest, CanBeCreatedWithValueArray) {
 | 
			
		||||
  const int a[] = { 1, 2, 3 };
 | 
			
		||||
 | 
			
		||||
  vector<int> test_vector(a, a + GTEST_ARRAY_SIZE_(a));
 | 
			
		||||
  vector<int> test_vector(std::begin(a), std::end(a));
 | 
			
		||||
  EXPECT_THAT(test_vector, ElementsAreArray(a));
 | 
			
		||||
 | 
			
		||||
  test_vector[2] = 0;
 | 
			
		||||
@@ -448,20 +447,20 @@ TEST(ElementsAreArrayTest, CanBeCreatedWithValueArray) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST(ElementsAreArrayTest, CanBeCreatedWithArraySize) {
 | 
			
		||||
  const char* a[] = { "one", "two", "three" };
 | 
			
		||||
  std::array<const char*, 3> a = {{"one", "two", "three"}};
 | 
			
		||||
 | 
			
		||||
  vector<std::string> test_vector(a, a + GTEST_ARRAY_SIZE_(a));
 | 
			
		||||
  EXPECT_THAT(test_vector, ElementsAreArray(a, GTEST_ARRAY_SIZE_(a)));
 | 
			
		||||
  vector<std::string> test_vector(std::begin(a), std::end(a));
 | 
			
		||||
  EXPECT_THAT(test_vector, ElementsAreArray(a.data(), a.size()));
 | 
			
		||||
 | 
			
		||||
  const char** p = a;
 | 
			
		||||
  const char** p = a.data();
 | 
			
		||||
  test_vector[0] = "1";
 | 
			
		||||
  EXPECT_THAT(test_vector, Not(ElementsAreArray(p, GTEST_ARRAY_SIZE_(a))));
 | 
			
		||||
  EXPECT_THAT(test_vector, Not(ElementsAreArray(p, a.size())));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST(ElementsAreArrayTest, CanBeCreatedWithoutArraySize) {
 | 
			
		||||
  const char* a[] = { "one", "two", "three" };
 | 
			
		||||
 | 
			
		||||
  vector<std::string> test_vector(a, a + GTEST_ARRAY_SIZE_(a));
 | 
			
		||||
  vector<std::string> test_vector(std::begin(a), std::end(a));
 | 
			
		||||
  EXPECT_THAT(test_vector, ElementsAreArray(a));
 | 
			
		||||
 | 
			
		||||
  test_vector[0] = "1";
 | 
			
		||||
@@ -484,8 +483,8 @@ TEST(ElementsAreArrayTest, CanBeCreatedWithMatcherArray) {
 | 
			
		||||
 | 
			
		||||
TEST(ElementsAreArrayTest, CanBeCreatedWithVector) {
 | 
			
		||||
  const int a[] = { 1, 2, 3 };
 | 
			
		||||
  vector<int> test_vector(a, a + GTEST_ARRAY_SIZE_(a));
 | 
			
		||||
  const vector<int> expected(a, a + GTEST_ARRAY_SIZE_(a));
 | 
			
		||||
  vector<int> test_vector(std::begin(a), std::end(a));
 | 
			
		||||
  const vector<int> expected(std::begin(a), std::end(a));
 | 
			
		||||
  EXPECT_THAT(test_vector, ElementsAreArray(expected));
 | 
			
		||||
  test_vector.push_back(4);
 | 
			
		||||
  EXPECT_THAT(test_vector, Not(ElementsAreArray(expected)));
 | 
			
		||||
@@ -530,9 +529,9 @@ TEST(ElementsAreArrayTest,
 | 
			
		||||
TEST(ElementsAreArrayTest, CanBeCreatedWithMatcherVector) {
 | 
			
		||||
  const int a[] = { 1, 2, 3 };
 | 
			
		||||
  const Matcher<int> kMatchers[] = { Eq(1), Eq(2), Eq(3) };
 | 
			
		||||
  vector<int> test_vector(a, a + GTEST_ARRAY_SIZE_(a));
 | 
			
		||||
  const vector<Matcher<int> > expected(
 | 
			
		||||
      kMatchers, kMatchers + GTEST_ARRAY_SIZE_(kMatchers));
 | 
			
		||||
  vector<int> test_vector(std::begin(a), std::end(a));
 | 
			
		||||
  const vector<Matcher<int>> expected(std::begin(kMatchers),
 | 
			
		||||
                                      std::end(kMatchers));
 | 
			
		||||
  EXPECT_THAT(test_vector, ElementsAreArray(expected));
 | 
			
		||||
  test_vector.push_back(4);
 | 
			
		||||
  EXPECT_THAT(test_vector, Not(ElementsAreArray(expected)));
 | 
			
		||||
@@ -540,11 +539,11 @@ TEST(ElementsAreArrayTest, CanBeCreatedWithMatcherVector) {
 | 
			
		||||
 | 
			
		||||
TEST(ElementsAreArrayTest, CanBeCreatedWithIteratorRange) {
 | 
			
		||||
  const int a[] = { 1, 2, 3 };
 | 
			
		||||
  const vector<int> test_vector(a, a + GTEST_ARRAY_SIZE_(a));
 | 
			
		||||
  const vector<int> expected(a, a + GTEST_ARRAY_SIZE_(a));
 | 
			
		||||
  const vector<int> test_vector(std::begin(a), std::end(a));
 | 
			
		||||
  const vector<int> expected(std::begin(a), std::end(a));
 | 
			
		||||
  EXPECT_THAT(test_vector, ElementsAreArray(expected.begin(), expected.end()));
 | 
			
		||||
  // Pointers are iterators, too.
 | 
			
		||||
  EXPECT_THAT(test_vector, ElementsAreArray(a, a + GTEST_ARRAY_SIZE_(a)));
 | 
			
		||||
  EXPECT_THAT(test_vector, ElementsAreArray(std::begin(a), std::end(a)));
 | 
			
		||||
  // The empty range of NULL pointers should also be okay.
 | 
			
		||||
  int* const null_int = nullptr;
 | 
			
		||||
  EXPECT_THAT(test_vector, Not(ElementsAreArray(null_int, null_int)));
 | 
			
		||||
@@ -564,8 +563,8 @@ TEST(ElementsAreArrayTest, WorksWithNativeArray) {
 | 
			
		||||
 | 
			
		||||
TEST(ElementsAreArrayTest, SourceLifeSpan) {
 | 
			
		||||
  const int a[] = { 1, 2, 3 };
 | 
			
		||||
  vector<int> test_vector(a, a + GTEST_ARRAY_SIZE_(a));
 | 
			
		||||
  vector<int> expect(a, a + GTEST_ARRAY_SIZE_(a));
 | 
			
		||||
  vector<int> test_vector(std::begin(a), std::end(a));
 | 
			
		||||
  vector<int> expect(std::begin(a), std::end(a));
 | 
			
		||||
  ElementsAreArrayMatcher<int> matcher_maker =
 | 
			
		||||
      ElementsAreArray(expect.begin(), expect.end());
 | 
			
		||||
  EXPECT_THAT(test_vector, matcher_maker);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user