OpenCores
URL https://opencores.org/ocsvn/s80186/s80186/trunk

Subversion Repositories s80186

[/] [s80186/] [trunk/] [vendor/] [googletest/] [googletest/] [test/] [gtest_xml_output_unittest_.cc] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 jamieiles
// Copyright 2006, 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: eefacm@gmail.com (Sean Mcafee)
31
 
32
// Unit test for Google Test XML output.
33
//
34
// A user can specify XML output in a Google Test program to run via
35
// either the GTEST_OUTPUT environment variable or the --gtest_output
36
// flag.  This is used for testing such functionality.
37
//
38
// This program will be invoked from a Python unit test.  Don't run it
39
// directly.
40
 
41
#include "gtest/gtest.h"
42
 
43
using ::testing::InitGoogleTest;
44
using ::testing::TestEventListeners;
45
using ::testing::TestWithParam;
46
using ::testing::UnitTest;
47
using ::testing::Test;
48
using ::testing::Values;
49
 
50
class SuccessfulTest : public Test {
51
};
52
 
53
TEST_F(SuccessfulTest, Succeeds) {
54
  SUCCEED() << "This is a success.";
55
  ASSERT_EQ(1, 1);
56
}
57
 
58
class FailedTest : public Test {
59
};
60
 
61
TEST_F(FailedTest, Fails) {
62
  ASSERT_EQ(1, 2);
63
}
64
 
65
class DisabledTest : public Test {
66
};
67
 
68
TEST_F(DisabledTest, DISABLED_test_not_run) {
69
  FAIL() << "Unexpected failure: Disabled test should not be run";
70
}
71
 
72
TEST(MixedResultTest, Succeeds) {
73
  EXPECT_EQ(1, 1);
74
  ASSERT_EQ(1, 1);
75
}
76
 
77
TEST(MixedResultTest, Fails) {
78
  EXPECT_EQ(1, 2);
79
  ASSERT_EQ(2, 3);
80
}
81
 
82
TEST(MixedResultTest, DISABLED_test) {
83
  FAIL() << "Unexpected failure: Disabled test should not be run";
84
}
85
 
86
TEST(XmlQuotingTest, OutputsCData) {
87
  FAIL() << "XML output: "
88
            "<?xml encoding=\"utf-8\"><top><![CDATA[cdata text]]></top>";
89
}
90
 
91
// Helps to test that invalid characters produced by test code do not make
92
// it into the XML file.
93
TEST(InvalidCharactersTest, InvalidCharactersInMessage) {
94
  FAIL() << "Invalid characters in brackets [\x1\x2]";
95
}
96
 
97
class PropertyRecordingTest : public Test {
98
 public:
99
  static void SetUpTestCase() { RecordProperty("SetUpTestCase", "yes"); }
100
  static void TearDownTestCase() { RecordProperty("TearDownTestCase", "aye"); }
101
};
102
 
103
TEST_F(PropertyRecordingTest, OneProperty) {
104
  RecordProperty("key_1", "1");
105
}
106
 
107
TEST_F(PropertyRecordingTest, IntValuedProperty) {
108
  RecordProperty("key_int", 1);
109
}
110
 
111
TEST_F(PropertyRecordingTest, ThreeProperties) {
112
  RecordProperty("key_1", "1");
113
  RecordProperty("key_2", "2");
114
  RecordProperty("key_3", "3");
115
}
116
 
117
TEST_F(PropertyRecordingTest, TwoValuesForOneKeyUsesLastValue) {
118
  RecordProperty("key_1", "1");
119
  RecordProperty("key_1", "2");
120
}
121
 
122
TEST(NoFixtureTest, RecordProperty) {
123
  RecordProperty("key", "1");
124
}
125
 
126
void ExternalUtilityThatCallsRecordProperty(const std::string& key, int value) {
127
  testing::Test::RecordProperty(key, value);
128
}
129
 
130
void ExternalUtilityThatCallsRecordProperty(const std::string& key,
131
                                            const std::string& value) {
132
  testing::Test::RecordProperty(key, value);
133
}
134
 
135
TEST(NoFixtureTest, ExternalUtilityThatCallsRecordIntValuedProperty) {
136
  ExternalUtilityThatCallsRecordProperty("key_for_utility_int", 1);
137
}
138
 
139
TEST(NoFixtureTest, ExternalUtilityThatCallsRecordStringValuedProperty) {
140
  ExternalUtilityThatCallsRecordProperty("key_for_utility_string", "1");
141
}
142
 
143
// Verifies that the test parameter value is output in the 'value_param'
144
// XML attribute for value-parameterized tests.
145
class ValueParamTest : public TestWithParam<int> {};
146
TEST_P(ValueParamTest, HasValueParamAttribute) {}
147
TEST_P(ValueParamTest, AnotherTestThatHasValueParamAttribute) {}
148
INSTANTIATE_TEST_CASE_P(Single, ValueParamTest, Values(33, 42));
149
 
150
#if GTEST_HAS_TYPED_TEST
151
// Verifies that the type parameter name is output in the 'type_param'
152
// XML attribute for typed tests.
153
template <typename T> class TypedTest : public Test {};
154
typedef testing::Types<int, long> TypedTestTypes;
155
TYPED_TEST_CASE(TypedTest, TypedTestTypes);
156
TYPED_TEST(TypedTest, HasTypeParamAttribute) {}
157
#endif
158
 
159
#if GTEST_HAS_TYPED_TEST_P
160
// Verifies that the type parameter name is output in the 'type_param'
161
// XML attribute for type-parameterized tests.
162
template <typename T> class TypeParameterizedTestCase : public Test {};
163
TYPED_TEST_CASE_P(TypeParameterizedTestCase);
164
TYPED_TEST_P(TypeParameterizedTestCase, HasTypeParamAttribute) {}
165
REGISTER_TYPED_TEST_CASE_P(TypeParameterizedTestCase, HasTypeParamAttribute);
166
typedef testing::Types<int, long> TypeParameterizedTestCaseTypes;
167
INSTANTIATE_TYPED_TEST_CASE_P(Single,
168
                              TypeParameterizedTestCase,
169
                              TypeParameterizedTestCaseTypes);
170
#endif
171
 
172
int main(int argc, char** argv) {
173
  InitGoogleTest(&argc, argv);
174
 
175
  if (argc > 1 && strcmp(argv[1], "--shut_down_xml") == 0) {
176
    TestEventListeners& listeners = UnitTest::GetInstance()->listeners();
177
    delete listeners.Release(listeners.default_xml_generator());
178
  }
179
  testing::Test::RecordProperty("ad_hoc_property", "42");
180
  return RUN_ALL_TESTS();
181
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.