Index: testing/gmock/test/gmock-generated-internal-utils_test.cc |
diff --git a/testing/gmock/test/gmock-generated-internal-utils_test.cc b/testing/gmock/test/gmock-generated-internal-utils_test.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..13b4c5cf43975b88173ce91550e2b91345713e96 |
--- /dev/null |
+++ b/testing/gmock/test/gmock-generated-internal-utils_test.cc |
@@ -0,0 +1,127 @@ |
+// Copyright 2007, Google Inc. |
+// All rights reserved. |
+// |
+// Redistribution and use in source and binary forms, with or without |
+// modification, are permitted provided that the following conditions are |
+// met: |
+// |
+// * Redistributions of source code must retain the above copyright |
+// notice, this list of conditions and the following disclaimer. |
+// * Redistributions in binary form must reproduce the above |
+// copyright notice, this list of conditions and the following disclaimer |
+// in the documentation and/or other materials provided with the |
+// distribution. |
+// * Neither the name of Google Inc. nor the names of its |
+// contributors may be used to endorse or promote products derived from |
+// this software without specific prior written permission. |
+// |
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+// |
+// Author: wan@google.com (Zhanyong Wan) |
+ |
+// Google Mock - a framework for writing C++ mock classes. |
+// |
+// This file tests the internal utilities. |
+ |
+#include <gmock/internal/gmock-generated-internal-utils.h> |
+#include <gmock/internal/gmock-internal-utils.h> |
+#include <gtest/gtest.h> |
+ |
+namespace { |
+ |
+using ::std::tr1::tuple; |
+using ::testing::Matcher; |
+using ::testing::internal::CompileAssertTypesEqual; |
+using ::testing::internal::MatcherTuple; |
+using ::testing::internal::Function; |
+using ::testing::internal::IgnoredValue; |
+ |
+// Tests the MatcherTuple template struct. |
+ |
+TEST(MatcherTupleTest, ForSize0) { |
+ CompileAssertTypesEqual<tuple<>, MatcherTuple<tuple<> >::type>(); |
+} |
+ |
+TEST(MatcherTupleTest, ForSize1) { |
+ CompileAssertTypesEqual<tuple<Matcher<int> >, |
+ MatcherTuple<tuple<int> >::type>(); |
+} |
+ |
+TEST(MatcherTupleTest, ForSize2) { |
+ CompileAssertTypesEqual<tuple<Matcher<int>, Matcher<char> >, |
+ MatcherTuple<tuple<int, char> >::type>(); |
+} |
+ |
+TEST(MatcherTupleTest, ForSize5) { |
+ CompileAssertTypesEqual<tuple<Matcher<int>, Matcher<char>, Matcher<bool>, |
+ Matcher<double>, Matcher<char*> >, |
+ MatcherTuple<tuple<int, char, bool, double, char*> |
+ >::type>(); |
+} |
+ |
+// Tests the Function template struct. |
+ |
+TEST(FunctionTest, Nullary) { |
+ typedef Function<int()> F; // NOLINT |
+ CompileAssertTypesEqual<int, F::Result>(); |
+ CompileAssertTypesEqual<tuple<>, F::ArgumentTuple>(); |
+ CompileAssertTypesEqual<tuple<>, F::ArgumentMatcherTuple>(); |
+ CompileAssertTypesEqual<void(), F::MakeResultVoid>(); |
+ CompileAssertTypesEqual<IgnoredValue(), F::MakeResultIgnoredValue>(); |
+} |
+ |
+TEST(FunctionTest, Unary) { |
+ typedef Function<int(bool)> F; // NOLINT |
+ CompileAssertTypesEqual<int, F::Result>(); |
+ CompileAssertTypesEqual<bool, F::Argument1>(); |
+ CompileAssertTypesEqual<tuple<bool>, F::ArgumentTuple>(); |
+ CompileAssertTypesEqual<tuple<Matcher<bool> >, F::ArgumentMatcherTuple>(); |
+ CompileAssertTypesEqual<void(bool), F::MakeResultVoid>(); // NOLINT |
+ CompileAssertTypesEqual<IgnoredValue(bool), // NOLINT |
+ F::MakeResultIgnoredValue>(); |
+} |
+ |
+TEST(FunctionTest, Binary) { |
+ typedef Function<int(bool, const long&)> F; // NOLINT |
+ CompileAssertTypesEqual<int, F::Result>(); |
+ CompileAssertTypesEqual<bool, F::Argument1>(); |
+ CompileAssertTypesEqual<const long&, F::Argument2>(); // NOLINT |
+ CompileAssertTypesEqual<tuple<bool, const long&>, F::ArgumentTuple>(); // NOLINT |
+ CompileAssertTypesEqual<tuple<Matcher<bool>, Matcher<const long&> >, // NOLINT |
+ F::ArgumentMatcherTuple>(); |
+ CompileAssertTypesEqual<void(bool, const long&), F::MakeResultVoid>(); // NOLINT |
+ CompileAssertTypesEqual<IgnoredValue(bool, const long&), // NOLINT |
+ F::MakeResultIgnoredValue>(); |
+} |
+ |
+TEST(FunctionTest, LongArgumentList) { |
+ typedef Function<char(bool, int, char*, int&, const long&)> F; // NOLINT |
+ CompileAssertTypesEqual<char, F::Result>(); |
+ CompileAssertTypesEqual<bool, F::Argument1>(); |
+ CompileAssertTypesEqual<int, F::Argument2>(); |
+ CompileAssertTypesEqual<char*, F::Argument3>(); |
+ CompileAssertTypesEqual<int&, F::Argument4>(); |
+ CompileAssertTypesEqual<const long&, F::Argument5>(); // NOLINT |
+ CompileAssertTypesEqual<tuple<bool, int, char*, int&, const long&>, // NOLINT |
+ F::ArgumentTuple>(); |
+ CompileAssertTypesEqual<tuple<Matcher<bool>, Matcher<int>, Matcher<char*>, |
+ Matcher<int&>, Matcher<const long&> >, // NOLINT |
+ F::ArgumentMatcherTuple>(); |
+ CompileAssertTypesEqual<void(bool, int, char*, int&, const long&), // NOLINT |
+ F::MakeResultVoid>(); |
+ CompileAssertTypesEqual< |
+ IgnoredValue(bool, int, char*, int&, const long&), // NOLINT |
+ F::MakeResultIgnoredValue>(); |
+} |
+ |
+} // Unnamed namespace |