proxygen
Main Page
Related Pages
Namespaces
Classes
Files
Examples
File List
File Members
sample2_unittest.cc
Go to the documentation of this file.
1
// Copyright 2005, 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
// A sample program demonstrating using Google C++ testing framework.
31
//
32
// Author: wan@google.com (Zhanyong Wan)
33
34
35
// This sample shows how to write a more complex unit test for a class
36
// that has multiple member functions.
37
//
38
// Usually, it's a good idea to have one test for each method in your
39
// class. You don't have to do that exactly, but it helps to keep
40
// your tests organized. You may also throw in additional tests as
41
// needed.
42
43
#include "
sample2.h
"
44
#include "gtest/gtest.h"
45
46
// In this example, we test the MyString class (a simple string).
47
48
// Tests the default c'tor.
49
TEST
(
MyString
, DefaultConstructor) {
50
const
MyString
s
;
51
52
// Asserts that s.c_string() returns NULL.
53
//
54
// <TechnicalDetails>
55
//
56
// If we write NULL instead of
57
//
58
// static_cast<const char *>(NULL)
59
//
60
// in this assertion, it will generate a warning on gcc 3.4. The
61
// reason is that EXPECT_EQ needs to know the types of its
62
// arguments in order to print them when it fails. Since NULL is
63
// #defined as 0, the compiler will use the formatter function for
64
// int to print it. However, gcc thinks that NULL should be used as
65
// a pointer, not an int, and therefore complains.
66
//
67
// The root of the problem is C++'s lack of distinction between the
68
// integer number 0 and the null pointer constant. Unfortunately,
69
// we have to live with this fact.
70
//
71
// </TechnicalDetails>
72
EXPECT_STREQ
(NULL, s.
c_string
());
73
74
EXPECT_EQ
(0u, s.
Length
());
75
}
76
77
const
char
kHelloString
[] =
"Hello, world!"
;
78
79
// Tests the c'tor that accepts a C string.
80
TEST
(
MyString
, ConstructorFromCString) {
81
const
MyString
s
(
kHelloString
);
82
EXPECT_EQ
(0, strcmp(s.
c_string
(),
kHelloString
));
83
EXPECT_EQ
(
sizeof
(
kHelloString
)/
sizeof
(
kHelloString
[0]) - 1,
84
s.
Length
());
85
}
86
87
// Tests the copy c'tor.
88
TEST
(
MyString
, CopyConstructor) {
89
const
MyString
s1(
kHelloString
);
90
const
MyString
s2 = s1;
91
EXPECT_EQ
(0, strcmp(s2.
c_string
(),
kHelloString
));
92
}
93
94
// Tests the Set method.
95
TEST
(
MyString
, Set) {
96
MyString
s
;
97
98
s.
Set
(
kHelloString
);
99
EXPECT_EQ
(0, strcmp(s.
c_string
(),
kHelloString
));
100
101
// Set should work when the input pointer is the same as the one
102
// already in the MyString object.
103
s.
Set
(s.
c_string
());
104
EXPECT_EQ
(0, strcmp(s.
c_string
(),
kHelloString
));
105
106
// Can we set the MyString to NULL?
107
s.
Set
(NULL);
108
EXPECT_STREQ
(NULL, s.
c_string
());
109
}
kHelloString
const char kHelloString[]
Definition:
sample2_unittest.cc:77
EXPECT_EQ
#define EXPECT_EQ(val1, val2)
Definition:
gtest.h:1922
EXPECT_STREQ
#define EXPECT_STREQ(s1, s2)
Definition:
gtest.h:1995
TEST
TEST(MyString, DefaultConstructor)
Definition:
sample2_unittest.cc:49
sample2.h
MyString::Set
void Set(const char *c_string)
Definition:
sample2.cc:51
MyString
Definition:
sample2.h:41
MyString::Length
size_t Length() const
Definition:
sample2.h:76
s
static set< string > s
Definition:
StringKeyedBenchmark.cpp:48
MyString::c_string
const char * c_string() const
Definition:
sample2.h:74
proxygen
fizz
build_
gtest
src
gtest
googletest
samples
sample2_unittest.cc
Generated by
1.8.11