]>
git.proxmox.com Git - ceph.git/blob - ceph/src/rapidjson/thirdparty/gtest/googlemock/test/gmock-generated-internal-utils_test.cc
1 // Copyright 2007, Google Inc.
2 // All rights reserved.
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above
11 // copyright notice, this list of conditions and the following disclaimer
12 // in the documentation and/or other materials provided with the
14 // * Neither the name of Google Inc. nor the names of its
15 // contributors may be used to endorse or promote products derived from
16 // this software without specific prior written permission.
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 // Author: wan@google.com (Zhanyong Wan)
32 // Google Mock - a framework for writing C++ mock classes.
34 // This file tests the internal utilities.
36 #include "gmock/internal/gmock-generated-internal-utils.h"
37 #include "gmock/internal/gmock-internal-utils.h"
38 #include "gtest/gtest.h"
42 using ::testing::tuple
;
43 using ::testing::Matcher
;
44 using ::testing::internal::CompileAssertTypesEqual
;
45 using ::testing::internal::MatcherTuple
;
46 using ::testing::internal::Function
;
47 using ::testing::internal::IgnoredValue
;
49 // Tests the MatcherTuple template struct.
51 TEST(MatcherTupleTest
, ForSize0
) {
52 CompileAssertTypesEqual
<tuple
<>, MatcherTuple
<tuple
<> >::type
>();
55 TEST(MatcherTupleTest
, ForSize1
) {
56 CompileAssertTypesEqual
<tuple
<Matcher
<int> >,
57 MatcherTuple
<tuple
<int> >::type
>();
60 TEST(MatcherTupleTest
, ForSize2
) {
61 CompileAssertTypesEqual
<tuple
<Matcher
<int>, Matcher
<char> >,
62 MatcherTuple
<tuple
<int, char> >::type
>();
65 TEST(MatcherTupleTest
, ForSize5
) {
66 CompileAssertTypesEqual
<tuple
<Matcher
<int>, Matcher
<char>, Matcher
<bool>,
67 Matcher
<double>, Matcher
<char*> >,
68 MatcherTuple
<tuple
<int, char, bool, double, char*>
72 // Tests the Function template struct.
74 TEST(FunctionTest
, Nullary
) {
75 typedef Function
<int()> F
; // NOLINT
76 CompileAssertTypesEqual
<int, F::Result
>();
77 CompileAssertTypesEqual
<tuple
<>, F::ArgumentTuple
>();
78 CompileAssertTypesEqual
<tuple
<>, F::ArgumentMatcherTuple
>();
79 CompileAssertTypesEqual
<void(), F::MakeResultVoid
>();
80 CompileAssertTypesEqual
<IgnoredValue(), F::MakeResultIgnoredValue
>();
83 TEST(FunctionTest
, Unary
) {
84 typedef Function
<int(bool)> F
; // NOLINT
85 CompileAssertTypesEqual
<int, F::Result
>();
86 CompileAssertTypesEqual
<bool, F::Argument1
>();
87 CompileAssertTypesEqual
<tuple
<bool>, F::ArgumentTuple
>();
88 CompileAssertTypesEqual
<tuple
<Matcher
<bool> >, F::ArgumentMatcherTuple
>();
89 CompileAssertTypesEqual
<void(bool), F::MakeResultVoid
>(); // NOLINT
90 CompileAssertTypesEqual
<IgnoredValue(bool), // NOLINT
91 F::MakeResultIgnoredValue
>();
94 TEST(FunctionTest
, Binary
) {
95 typedef Function
<int(bool, const long&)> F
; // NOLINT
96 CompileAssertTypesEqual
<int, F::Result
>();
97 CompileAssertTypesEqual
<bool, F::Argument1
>();
98 CompileAssertTypesEqual
<const long&, F::Argument2
>(); // NOLINT
99 CompileAssertTypesEqual
<tuple
<bool, const long&>, F::ArgumentTuple
>(); // NOLINT
100 CompileAssertTypesEqual
<tuple
<Matcher
<bool>, Matcher
<const long&> >, // NOLINT
101 F::ArgumentMatcherTuple
>();
102 CompileAssertTypesEqual
<void(bool, const long&), F::MakeResultVoid
>(); // NOLINT
103 CompileAssertTypesEqual
<IgnoredValue(bool, const long&), // NOLINT
104 F::MakeResultIgnoredValue
>();
107 TEST(FunctionTest
, LongArgumentList
) {
108 typedef Function
<char(bool, int, char*, int&, const long&)> F
; // NOLINT
109 CompileAssertTypesEqual
<char, F::Result
>();
110 CompileAssertTypesEqual
<bool, F::Argument1
>();
111 CompileAssertTypesEqual
<int, F::Argument2
>();
112 CompileAssertTypesEqual
<char*, F::Argument3
>();
113 CompileAssertTypesEqual
<int&, F::Argument4
>();
114 CompileAssertTypesEqual
<const long&, F::Argument5
>(); // NOLINT
115 CompileAssertTypesEqual
<tuple
<bool, int, char*, int&, const long&>, // NOLINT
117 CompileAssertTypesEqual
<tuple
<Matcher
<bool>, Matcher
<int>, Matcher
<char*>,
118 Matcher
<int&>, Matcher
<const long&> >, // NOLINT
119 F::ArgumentMatcherTuple
>();
120 CompileAssertTypesEqual
<void(bool, int, char*, int&, const long&), // NOLINT
121 F::MakeResultVoid
>();
122 CompileAssertTypesEqual
<
123 IgnoredValue(bool, int, char*, int&, const long&), // NOLINT
124 F::MakeResultIgnoredValue
>();
127 } // Unnamed namespace