Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Side by Side Diff: testing/gmock/test/gmock-port_test.cc

Issue 3427004: clang: update gtest/gmock (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: yakshave Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « testing/gmock/test/gmock-nice-strict_test.cc ('k') | testing/gmock/test/gmock-printers_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2008, Google Inc. 1 // Copyright 2008, Google Inc.
2 // All rights reserved. 2 // All rights reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // * Redistributions of source code must retain the above copyright 8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer. 9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above 10 // * Redistributions in binary form must reproduce the above
(...skipping 21 matching lines...) Expand all
32 // Google Mock - a framework for writing C++ mock classes. 32 // Google Mock - a framework for writing C++ mock classes.
33 // 33 //
34 // This file tests the internal cross-platform support utilities. 34 // This file tests the internal cross-platform support utilities.
35 35
36 #include <gmock/internal/gmock-port.h> 36 #include <gmock/internal/gmock-port.h>
37 #include <gtest/gtest.h> 37 #include <gtest/gtest.h>
38 38
39 // NOTE: if this file is left without tests for some reason, put a dummy 39 // NOTE: if this file is left without tests for some reason, put a dummy
40 // test here to make references to symbols in the gtest library and avoid 40 // test here to make references to symbols in the gtest library and avoid
41 // 'undefined symbol' linker errors in gmock_main: 41 // 'undefined symbol' linker errors in gmock_main:
42 //
43 // TEST(DummyTest, Dummy) {}
44 42
45 namespace testing { 43 TEST(DummyTest, Dummy) {}
46 namespace internal {
47 // Needed to avoid name collisions in gmock_all_test.cc.
48 namespace gmock_port_test {
49
50 class Base {
51 public:
52 // Copy constructor and assignment operator do exactly what we need, so we
53 // use them.
54 Base() : member_(0) {}
55 explicit Base(int n) : member_(n) {}
56 virtual ~Base() {}
57 int member() { return member_; }
58
59 private:
60 int member_;
61 };
62
63 class Derived : public Base {
64 public:
65 explicit Derived(int n) : Base(n) {}
66 };
67
68 TEST(ImplicitCastTest, ConvertsPointers) {
69 Derived derived(0);
70 EXPECT_TRUE(&derived == ::testing::internal::implicit_cast<Base*>(&derived));
71 }
72
73 TEST(ImplicitCastTest, CanUseInheritance) {
74 Derived derived(1);
75 Base base = ::testing::internal::implicit_cast<Base>(derived);
76 EXPECT_EQ(derived.member(), base.member());
77 }
78
79 class Castable {
80 public:
81 Castable(bool* converted) : converted_(converted) {}
82 operator Base() {
83 *converted_ = true;
84 return Base();
85 }
86
87 private:
88 bool* converted_;
89 };
90
91 TEST(ImplicitCastTest, CanUseNonConstCastOperator) {
92 bool converted = false;
93 Castable castable(&converted);
94 Base base = ::testing::internal::implicit_cast<Base>(castable);
95 EXPECT_TRUE(converted);
96 }
97
98 class ConstCastable {
99 public:
100 ConstCastable(bool* converted) : converted_(converted) {}
101 operator Base() const {
102 *converted_ = true;
103 return Base();
104 }
105
106 private:
107 bool* converted_;
108 };
109
110 TEST(ImplicitCastTest, CanUseConstCastOperatorOnConstValues) {
111 bool converted = false;
112 const ConstCastable const_castable(&converted);
113 Base base = ::testing::internal::implicit_cast<Base>(const_castable);
114 EXPECT_TRUE(converted);
115 }
116
117 class ConstAndNonConstCastable {
118 public:
119 ConstAndNonConstCastable(bool* converted, bool* const_converted)
120 : converted_(converted), const_converted_(const_converted) {}
121 operator Base() {
122 *converted_ = true;
123 return Base();
124 }
125 operator Base() const {
126 *const_converted_ = true;
127 return Base();
128 }
129
130 private:
131 bool* converted_;
132 bool* const_converted_;
133 };
134
135 TEST(ImplicitCastTest, CanSelectBetweenConstAndNonConstCasrAppropriately) {
136 bool converted = false;
137 bool const_converted = false;
138 ConstAndNonConstCastable castable(&converted, &const_converted);
139 Base base = ::testing::internal::implicit_cast<Base>(castable);
140 EXPECT_TRUE(converted);
141 EXPECT_FALSE(const_converted);
142
143 converted = false;
144 const_converted = false;
145 const ConstAndNonConstCastable const_castable(&converted, &const_converted);
146 base = ::testing::internal::implicit_cast<Base>(const_castable);
147 EXPECT_FALSE(converted);
148 EXPECT_TRUE(const_converted);
149 }
150
151 class To {
152 public:
153 To(bool* converted) { *converted = true; } // NOLINT
154 };
155
156 TEST(ImplicitCastTest, CanUseImplicitConstructor) {
157 bool converted = false;
158 To to = ::testing::internal::implicit_cast<To>(&converted);
159 EXPECT_TRUE(converted);
160 }
161
162 } // namespace gmock_port_test
163 } // namespace internal
164 } // namespace testing
OLDNEW
« no previous file with comments | « testing/gmock/test/gmock-nice-strict_test.cc ('k') | testing/gmock/test/gmock-printers_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698