Electroneum
Toggle main menu visibility
Loading...
Searching...
No Matches
gmock-cardinalities.h
Go to the documentation of this file.
1
// Copyright 2007, Google Inc.
2
// All rights reserved.
3
//
4
// Redistribution and use in source and binary forms, with or without
5
// modification, are permitted provided that the following conditions are
6
// met:
7
//
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
13
// distribution.
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.
17
//
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.
29
//
30
// Author: wan@google.com (Zhanyong Wan)
31
32
// Google Mock - a framework for writing C++ mock classes.
33
//
34
// This file implements some commonly used cardinalities. More
35
// cardinalities can be defined by the user implementing the
36
// CardinalityInterface interface if necessary.
37
38
#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_
39
#define GMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_
40
41
#include <limits.h>
42
#include <ostream>
// NOLINT
43
#include "
gmock/internal/gmock-port.h
"
44
#include "gtest/gtest.h"
45
46
namespace
testing
{
47
48
// To implement a cardinality Foo, define:
49
// 1. a class FooCardinality that implements the
50
// CardinalityInterface interface, and
51
// 2. a factory function that creates a Cardinality object from a
52
// const FooCardinality*.
53
//
54
// The two-level delegation design follows that of Matcher, providing
55
// consistency for extension developers. It also eases ownership
56
// management as Cardinality objects can now be copied like plain values.
57
58
// The implementation of a cardinality.
59
class
CardinalityInterface
{
60
public
:
61
virtual
~CardinalityInterface
() {}
62
63
// Conservative estimate on the lower/upper bound of the number of
64
// calls allowed.
65
virtual
int
ConservativeLowerBound
()
const
{
return
0; }
66
virtual
int
ConservativeUpperBound
()
const
{
return
INT_MAX
; }
67
68
// Returns true iff call_count calls will satisfy this cardinality.
69
virtual
bool
IsSatisfiedByCallCount
(
int
call_count)
const
= 0;
70
71
// Returns true iff call_count calls will saturate this cardinality.
72
virtual
bool
IsSaturatedByCallCount
(
int
call_count)
const
= 0;
73
74
// Describes self to an ostream.
75
virtual
void
DescribeTo
(::std::ostream* os)
const
= 0;
76
};
77
78
// A Cardinality is a copyable and IMMUTABLE (except by assignment)
79
// object that specifies how many times a mock function is expected to
80
// be called. The implementation of Cardinality is just a linked_ptr
81
// to const CardinalityInterface, so copying is fairly cheap.
82
// Don't inherit from Cardinality!
83
class
GTEST_API_
Cardinality
{
84
public
:
85
// Constructs a null cardinality. Needed for storing Cardinality
86
// objects in STL containers.
87
Cardinality
() {}
88
89
// Constructs a Cardinality from its implementation.
90
explicit
Cardinality
(
const
CardinalityInterface
* impl) : impl_(impl) {}
91
92
// Conservative estimate on the lower/upper bound of the number of
93
// calls allowed.
94
int
ConservativeLowerBound
()
const
{
return
impl_->ConservativeLowerBound(); }
95
int
ConservativeUpperBound
()
const
{
return
impl_->ConservativeUpperBound(); }
96
97
// Returns true iff call_count calls will satisfy this cardinality.
98
bool
IsSatisfiedByCallCount
(
int
call_count)
const
{
99
return
impl_->IsSatisfiedByCallCount(call_count);
100
}
101
102
// Returns true iff call_count calls will saturate this cardinality.
103
bool
IsSaturatedByCallCount
(
int
call_count)
const
{
104
return
impl_->IsSaturatedByCallCount(call_count);
105
}
106
107
// Returns true iff call_count calls will over-saturate this
108
// cardinality, i.e. exceed the maximum number of allowed calls.
109
bool
IsOverSaturatedByCallCount
(
int
call_count)
const
{
110
return
impl_->IsSaturatedByCallCount(call_count) &&
111
!impl_->IsSatisfiedByCallCount(call_count);
112
}
113
114
// Describes self to an ostream
115
void
DescribeTo
(::std::ostream* os)
const
{ impl_->DescribeTo(os); }
116
117
// Describes the given actual call count to an ostream.
118
static
void
DescribeActualCallCountTo
(
int
actual_call_count,
119
::std::ostream* os);
120
121
private
:
122
internal::linked_ptr<const CardinalityInterface>
impl_;
123
};
124
125
// Creates a cardinality that allows at least n calls.
126
GTEST_API_
Cardinality
AtLeast
(
int
n);
127
128
// Creates a cardinality that allows at most n calls.
129
GTEST_API_
Cardinality
AtMost
(
int
n);
130
131
// Creates a cardinality that allows any number of calls.
132
GTEST_API_
Cardinality
AnyNumber
();
133
134
// Creates a cardinality that allows between min and max calls.
135
GTEST_API_
Cardinality
Between
(
int
min,
int
max);
136
137
// Creates a cardinality that allows exactly n calls.
138
GTEST_API_
Cardinality
Exactly
(
int
n);
139
140
// Creates a cardinality from its implementation.
141
inline
Cardinality
MakeCardinality
(
const
CardinalityInterface
* c) {
142
return
Cardinality
(c);
143
}
144
145
}
// namespace testing
146
147
#endif
// GMOCK_INCLUDE_GMOCK_GMOCK_CARDINALITIES_H_
testing::Cardinality
Definition
gmock-cardinalities.h:83
testing::Cardinality::Cardinality
Cardinality(const CardinalityInterface *impl)
Definition
gmock-cardinalities.h:90
testing::Cardinality::DescribeTo
void DescribeTo(::std::ostream *os) const
Definition
gmock-cardinalities.h:115
testing::Cardinality::DescribeActualCallCountTo
static void DescribeActualCallCountTo(int actual_call_count, ::std::ostream *os)
testing::Cardinality::IsSaturatedByCallCount
bool IsSaturatedByCallCount(int call_count) const
Definition
gmock-cardinalities.h:103
testing::Cardinality::IsSatisfiedByCallCount
bool IsSatisfiedByCallCount(int call_count) const
Definition
gmock-cardinalities.h:98
testing::Cardinality::IsOverSaturatedByCallCount
bool IsOverSaturatedByCallCount(int call_count) const
Definition
gmock-cardinalities.h:109
testing::Cardinality::Cardinality
Cardinality()
Definition
gmock-cardinalities.h:87
testing::Cardinality::ConservativeLowerBound
int ConservativeLowerBound() const
Definition
gmock-cardinalities.h:94
testing::Cardinality::ConservativeUpperBound
int ConservativeUpperBound() const
Definition
gmock-cardinalities.h:95
testing::CardinalityInterface
Definition
gmock-cardinalities.h:59
testing::CardinalityInterface::ConservativeLowerBound
virtual int ConservativeLowerBound() const
Definition
gmock-cardinalities.h:65
testing::CardinalityInterface::IsSaturatedByCallCount
virtual bool IsSaturatedByCallCount(int call_count) const =0
testing::CardinalityInterface::DescribeTo
virtual void DescribeTo(::std::ostream *os) const =0
testing::CardinalityInterface::~CardinalityInterface
virtual ~CardinalityInterface()
Definition
gmock-cardinalities.h:61
testing::CardinalityInterface::ConservativeUpperBound
virtual int ConservativeUpperBound() const
Definition
gmock-cardinalities.h:66
testing::CardinalityInterface::IsSatisfiedByCallCount
virtual bool IsSatisfiedByCallCount(int call_count) const =0
testing::internal::linked_ptr
Definition
gtest-linked_ptr.h:146
GTEST_API_
#define GTEST_API_
Definition
gtest-port.h:934
INT_MAX
#define INT_MAX
Definition
fake-rfc2553.h:119
gmock-port.h
testing
Definition
gmock-actions.h:53
testing::AtLeast
GTEST_API_ Cardinality AtLeast(int n)
testing::Between
GTEST_API_ Cardinality Between(int min, int max)
testing::AtMost
GTEST_API_ Cardinality AtMost(int n)
testing::AnyNumber
GTEST_API_ Cardinality AnyNumber()
testing::Exactly
GTEST_API_ Cardinality Exactly(int n)
testing::MakeCardinality
Cardinality MakeCardinality(const CardinalityInterface *c)
Definition
gmock-cardinalities.h:141
external
rapidjson
thirdparty
gtest
googlemock
include
gmock
gmock-cardinalities.h
Generated on
for Electroneum by
1.17.0