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

Subversion Repositories s80186

[/] [s80186/] [trunk/] [vendor/] [googletest/] [googletest/] [test/] [gtest_pred_impl_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
// This file is AUTOMATICALLY GENERATED on 10/31/2011 by command
31
// 'gen_gtest_pred_impl.py 5'.  DO NOT EDIT BY HAND!
32
 
33
// Regression test for gtest_pred_impl.h
34
//
35
// This file is generated by a script and quite long.  If you intend to
36
// learn how Google Test works by reading its unit tests, read
37
// gtest_unittest.cc instead.
38
//
39
// This is intended as a regression test for the Google Test predicate
40
// assertions.  We compile it as part of the gtest_unittest target
41
// only to keep the implementation tidy and compact, as it is quite
42
// involved to set up the stage for testing Google Test using Google
43
// Test itself.
44
//
45
// Currently, gtest_unittest takes ~11 seconds to run in the testing
46
// daemon.  In the future, if it grows too large and needs much more
47
// time to finish, we should consider separating this file into a
48
// stand-alone regression test.
49
 
50
#include <iostream>
51
 
52
#include "gtest/gtest.h"
53
#include "gtest/gtest-spi.h"
54
 
55
// A user-defined data type.
56
struct Bool {
57
  explicit Bool(int val) : value(val != 0) {}
58
 
59
  bool operator>(int n) const { return value > Bool(n).value; }
60
 
61
  Bool operator+(const Bool& rhs) const { return Bool(value + rhs.value); }
62
 
63
  bool operator==(const Bool& rhs) const { return value == rhs.value; }
64
 
65
  bool value;
66
};
67
 
68
// Enables Bool to be used in assertions.
69
std::ostream& operator<<(std::ostream& os, const Bool& x) {
70
  return os << (x.value ? "true" : "false");
71
}
72
 
73
// Sample functions/functors for testing unary predicate assertions.
74
 
75
// A unary predicate function.
76
template <typename T1>
77
bool PredFunction1(T1 v1) {
78
  return v1 > 0;
79
}
80
 
81
// The following two functions are needed to circumvent a bug in
82
// gcc 2.95.3, which sometimes has problem with the above template
83
// function.
84
bool PredFunction1Int(int v1) {
85
  return v1 > 0;
86
}
87
bool PredFunction1Bool(Bool v1) {
88
  return v1 > 0;
89
}
90
 
91
// A unary predicate functor.
92
struct PredFunctor1 {
93
  template <typename T1>
94
  bool operator()(const T1& v1) {
95
    return v1 > 0;
96
  }
97
};
98
 
99
// A unary predicate-formatter function.
100
template <typename T1>
101
testing::AssertionResult PredFormatFunction1(const char* e1,
102
                                             const T1& v1) {
103
  if (PredFunction1(v1))
104
    return testing::AssertionSuccess();
105
 
106
  return testing::AssertionFailure()
107
      << e1
108
      << " is expected to be positive, but evaluates to "
109
      << v1 << ".";
110
}
111
 
112
// A unary predicate-formatter functor.
113
struct PredFormatFunctor1 {
114
  template <typename T1>
115
  testing::AssertionResult operator()(const char* e1,
116
                                      const T1& v1) const {
117
    return PredFormatFunction1(e1, v1);
118
  }
119
};
120
 
121
// Tests for {EXPECT|ASSERT}_PRED_FORMAT1.
122
 
123
class Predicate1Test : public testing::Test {
124
 protected:
125
  virtual void SetUp() {
126
    expected_to_finish_ = true;
127
    finished_ = false;
128
    n1_ = 0;
129
  }
130
 
131
  virtual void TearDown() {
132
    // Verifies that each of the predicate's arguments was evaluated
133
    // exactly once.
134
    EXPECT_EQ(1, n1_) <<
135
        "The predicate assertion didn't evaluate argument 2 "
136
        "exactly once.";
137
 
138
    // Verifies that the control flow in the test function is expected.
139
    if (expected_to_finish_ && !finished_) {
140
      FAIL() << "The predicate assertion unexpactedly aborted the test.";
141
    } else if (!expected_to_finish_ && finished_) {
142
      FAIL() << "The failed predicate assertion didn't abort the test "
143
                "as expected.";
144
    }
145
  }
146
 
147
  // true iff the test function is expected to run to finish.
148
  static bool expected_to_finish_;
149
 
150
  // true iff the test function did run to finish.
151
  static bool finished_;
152
 
153
  static int n1_;
154
};
155
 
156
bool Predicate1Test::expected_to_finish_;
157
bool Predicate1Test::finished_;
158
int Predicate1Test::n1_;
159
 
160
typedef Predicate1Test EXPECT_PRED_FORMAT1Test;
161
typedef Predicate1Test ASSERT_PRED_FORMAT1Test;
162
typedef Predicate1Test EXPECT_PRED1Test;
163
typedef Predicate1Test ASSERT_PRED1Test;
164
 
165
// Tests a successful EXPECT_PRED1 where the
166
// predicate-formatter is a function on a built-in type (int).
167
TEST_F(EXPECT_PRED1Test, FunctionOnBuiltInTypeSuccess) {
168
  EXPECT_PRED1(PredFunction1Int,
169
               ++n1_);
170
  finished_ = true;
171
}
172
 
173
// Tests a successful EXPECT_PRED1 where the
174
// predicate-formatter is a function on a user-defined type (Bool).
175
TEST_F(EXPECT_PRED1Test, FunctionOnUserTypeSuccess) {
176
  EXPECT_PRED1(PredFunction1Bool,
177
               Bool(++n1_));
178
  finished_ = true;
179
}
180
 
181
// Tests a successful EXPECT_PRED1 where the
182
// predicate-formatter is a functor on a built-in type (int).
183
TEST_F(EXPECT_PRED1Test, FunctorOnBuiltInTypeSuccess) {
184
  EXPECT_PRED1(PredFunctor1(),
185
               ++n1_);
186
  finished_ = true;
187
}
188
 
189
// Tests a successful EXPECT_PRED1 where the
190
// predicate-formatter is a functor on a user-defined type (Bool).
191
TEST_F(EXPECT_PRED1Test, FunctorOnUserTypeSuccess) {
192
  EXPECT_PRED1(PredFunctor1(),
193
               Bool(++n1_));
194
  finished_ = true;
195
}
196
 
197
// Tests a failed EXPECT_PRED1 where the
198
// predicate-formatter is a function on a built-in type (int).
199
TEST_F(EXPECT_PRED1Test, FunctionOnBuiltInTypeFailure) {
200
  EXPECT_NONFATAL_FAILURE({  // NOLINT
201
    EXPECT_PRED1(PredFunction1Int,
202
                 n1_++);
203
    finished_ = true;
204
  }, "");
205
}
206
 
207
// Tests a failed EXPECT_PRED1 where the
208
// predicate-formatter is a function on a user-defined type (Bool).
209
TEST_F(EXPECT_PRED1Test, FunctionOnUserTypeFailure) {
210
  EXPECT_NONFATAL_FAILURE({  // NOLINT
211
    EXPECT_PRED1(PredFunction1Bool,
212
                 Bool(n1_++));
213
    finished_ = true;
214
  }, "");
215
}
216
 
217
// Tests a failed EXPECT_PRED1 where the
218
// predicate-formatter is a functor on a built-in type (int).
219
TEST_F(EXPECT_PRED1Test, FunctorOnBuiltInTypeFailure) {
220
  EXPECT_NONFATAL_FAILURE({  // NOLINT
221
    EXPECT_PRED1(PredFunctor1(),
222
                 n1_++);
223
    finished_ = true;
224
  }, "");
225
}
226
 
227
// Tests a failed EXPECT_PRED1 where the
228
// predicate-formatter is a functor on a user-defined type (Bool).
229
TEST_F(EXPECT_PRED1Test, FunctorOnUserTypeFailure) {
230
  EXPECT_NONFATAL_FAILURE({  // NOLINT
231
    EXPECT_PRED1(PredFunctor1(),
232
                 Bool(n1_++));
233
    finished_ = true;
234
  }, "");
235
}
236
 
237
// Tests a successful ASSERT_PRED1 where the
238
// predicate-formatter is a function on a built-in type (int).
239
TEST_F(ASSERT_PRED1Test, FunctionOnBuiltInTypeSuccess) {
240
  ASSERT_PRED1(PredFunction1Int,
241
               ++n1_);
242
  finished_ = true;
243
}
244
 
245
// Tests a successful ASSERT_PRED1 where the
246
// predicate-formatter is a function on a user-defined type (Bool).
247
TEST_F(ASSERT_PRED1Test, FunctionOnUserTypeSuccess) {
248
  ASSERT_PRED1(PredFunction1Bool,
249
               Bool(++n1_));
250
  finished_ = true;
251
}
252
 
253
// Tests a successful ASSERT_PRED1 where the
254
// predicate-formatter is a functor on a built-in type (int).
255
TEST_F(ASSERT_PRED1Test, FunctorOnBuiltInTypeSuccess) {
256
  ASSERT_PRED1(PredFunctor1(),
257
               ++n1_);
258
  finished_ = true;
259
}
260
 
261
// Tests a successful ASSERT_PRED1 where the
262
// predicate-formatter is a functor on a user-defined type (Bool).
263
TEST_F(ASSERT_PRED1Test, FunctorOnUserTypeSuccess) {
264
  ASSERT_PRED1(PredFunctor1(),
265
               Bool(++n1_));
266
  finished_ = true;
267
}
268
 
269
// Tests a failed ASSERT_PRED1 where the
270
// predicate-formatter is a function on a built-in type (int).
271
TEST_F(ASSERT_PRED1Test, FunctionOnBuiltInTypeFailure) {
272
  expected_to_finish_ = false;
273
  EXPECT_FATAL_FAILURE({  // NOLINT
274
    ASSERT_PRED1(PredFunction1Int,
275
                 n1_++);
276
    finished_ = true;
277
  }, "");
278
}
279
 
280
// Tests a failed ASSERT_PRED1 where the
281
// predicate-formatter is a function on a user-defined type (Bool).
282
TEST_F(ASSERT_PRED1Test, FunctionOnUserTypeFailure) {
283
  expected_to_finish_ = false;
284
  EXPECT_FATAL_FAILURE({  // NOLINT
285
    ASSERT_PRED1(PredFunction1Bool,
286
                 Bool(n1_++));
287
    finished_ = true;
288
  }, "");
289
}
290
 
291
// Tests a failed ASSERT_PRED1 where the
292
// predicate-formatter is a functor on a built-in type (int).
293
TEST_F(ASSERT_PRED1Test, FunctorOnBuiltInTypeFailure) {
294
  expected_to_finish_ = false;
295
  EXPECT_FATAL_FAILURE({  // NOLINT
296
    ASSERT_PRED1(PredFunctor1(),
297
                 n1_++);
298
    finished_ = true;
299
  }, "");
300
}
301
 
302
// Tests a failed ASSERT_PRED1 where the
303
// predicate-formatter is a functor on a user-defined type (Bool).
304
TEST_F(ASSERT_PRED1Test, FunctorOnUserTypeFailure) {
305
  expected_to_finish_ = false;
306
  EXPECT_FATAL_FAILURE({  // NOLINT
307
    ASSERT_PRED1(PredFunctor1(),
308
                 Bool(n1_++));
309
    finished_ = true;
310
  }, "");
311
}
312
 
313
// Tests a successful EXPECT_PRED_FORMAT1 where the
314
// predicate-formatter is a function on a built-in type (int).
315
TEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnBuiltInTypeSuccess) {
316
  EXPECT_PRED_FORMAT1(PredFormatFunction1,
317
                      ++n1_);
318
  finished_ = true;
319
}
320
 
321
// Tests a successful EXPECT_PRED_FORMAT1 where the
322
// predicate-formatter is a function on a user-defined type (Bool).
323
TEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnUserTypeSuccess) {
324
  EXPECT_PRED_FORMAT1(PredFormatFunction1,
325
                      Bool(++n1_));
326
  finished_ = true;
327
}
328
 
329
// Tests a successful EXPECT_PRED_FORMAT1 where the
330
// predicate-formatter is a functor on a built-in type (int).
331
TEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnBuiltInTypeSuccess) {
332
  EXPECT_PRED_FORMAT1(PredFormatFunctor1(),
333
                      ++n1_);
334
  finished_ = true;
335
}
336
 
337
// Tests a successful EXPECT_PRED_FORMAT1 where the
338
// predicate-formatter is a functor on a user-defined type (Bool).
339
TEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnUserTypeSuccess) {
340
  EXPECT_PRED_FORMAT1(PredFormatFunctor1(),
341
                      Bool(++n1_));
342
  finished_ = true;
343
}
344
 
345
// Tests a failed EXPECT_PRED_FORMAT1 where the
346
// predicate-formatter is a function on a built-in type (int).
347
TEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnBuiltInTypeFailure) {
348
  EXPECT_NONFATAL_FAILURE({  // NOLINT
349
    EXPECT_PRED_FORMAT1(PredFormatFunction1,
350
                        n1_++);
351
    finished_ = true;
352
  }, "");
353
}
354
 
355
// Tests a failed EXPECT_PRED_FORMAT1 where the
356
// predicate-formatter is a function on a user-defined type (Bool).
357
TEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnUserTypeFailure) {
358
  EXPECT_NONFATAL_FAILURE({  // NOLINT
359
    EXPECT_PRED_FORMAT1(PredFormatFunction1,
360
                        Bool(n1_++));
361
    finished_ = true;
362
  }, "");
363
}
364
 
365
// Tests a failed EXPECT_PRED_FORMAT1 where the
366
// predicate-formatter is a functor on a built-in type (int).
367
TEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnBuiltInTypeFailure) {
368
  EXPECT_NONFATAL_FAILURE({  // NOLINT
369
    EXPECT_PRED_FORMAT1(PredFormatFunctor1(),
370
                        n1_++);
371
    finished_ = true;
372
  }, "");
373
}
374
 
375
// Tests a failed EXPECT_PRED_FORMAT1 where the
376
// predicate-formatter is a functor on a user-defined type (Bool).
377
TEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnUserTypeFailure) {
378
  EXPECT_NONFATAL_FAILURE({  // NOLINT
379
    EXPECT_PRED_FORMAT1(PredFormatFunctor1(),
380
                        Bool(n1_++));
381
    finished_ = true;
382
  }, "");
383
}
384
 
385
// Tests a successful ASSERT_PRED_FORMAT1 where the
386
// predicate-formatter is a function on a built-in type (int).
387
TEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnBuiltInTypeSuccess) {
388
  ASSERT_PRED_FORMAT1(PredFormatFunction1,
389
                      ++n1_);
390
  finished_ = true;
391
}
392
 
393
// Tests a successful ASSERT_PRED_FORMAT1 where the
394
// predicate-formatter is a function on a user-defined type (Bool).
395
TEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnUserTypeSuccess) {
396
  ASSERT_PRED_FORMAT1(PredFormatFunction1,
397
                      Bool(++n1_));
398
  finished_ = true;
399
}
400
 
401
// Tests a successful ASSERT_PRED_FORMAT1 where the
402
// predicate-formatter is a functor on a built-in type (int).
403
TEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnBuiltInTypeSuccess) {
404
  ASSERT_PRED_FORMAT1(PredFormatFunctor1(),
405
                      ++n1_);
406
  finished_ = true;
407
}
408
 
409
// Tests a successful ASSERT_PRED_FORMAT1 where the
410
// predicate-formatter is a functor on a user-defined type (Bool).
411
TEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnUserTypeSuccess) {
412
  ASSERT_PRED_FORMAT1(PredFormatFunctor1(),
413
                      Bool(++n1_));
414
  finished_ = true;
415
}
416
 
417
// Tests a failed ASSERT_PRED_FORMAT1 where the
418
// predicate-formatter is a function on a built-in type (int).
419
TEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnBuiltInTypeFailure) {
420
  expected_to_finish_ = false;
421
  EXPECT_FATAL_FAILURE({  // NOLINT
422
    ASSERT_PRED_FORMAT1(PredFormatFunction1,
423
                        n1_++);
424
    finished_ = true;
425
  }, "");
426
}
427
 
428
// Tests a failed ASSERT_PRED_FORMAT1 where the
429
// predicate-formatter is a function on a user-defined type (Bool).
430
TEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnUserTypeFailure) {
431
  expected_to_finish_ = false;
432
  EXPECT_FATAL_FAILURE({  // NOLINT
433
    ASSERT_PRED_FORMAT1(PredFormatFunction1,
434
                        Bool(n1_++));
435
    finished_ = true;
436
  }, "");
437
}
438
 
439
// Tests a failed ASSERT_PRED_FORMAT1 where the
440
// predicate-formatter is a functor on a built-in type (int).
441
TEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnBuiltInTypeFailure) {
442
  expected_to_finish_ = false;
443
  EXPECT_FATAL_FAILURE({  // NOLINT
444
    ASSERT_PRED_FORMAT1(PredFormatFunctor1(),
445
                        n1_++);
446
    finished_ = true;
447
  }, "");
448
}
449
 
450
// Tests a failed ASSERT_PRED_FORMAT1 where the
451
// predicate-formatter is a functor on a user-defined type (Bool).
452
TEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnUserTypeFailure) {
453
  expected_to_finish_ = false;
454
  EXPECT_FATAL_FAILURE({  // NOLINT
455
    ASSERT_PRED_FORMAT1(PredFormatFunctor1(),
456
                        Bool(n1_++));
457
    finished_ = true;
458
  }, "");
459
}
460
// Sample functions/functors for testing binary predicate assertions.
461
 
462
// A binary predicate function.
463
template <typename T1, typename T2>
464
bool PredFunction2(T1 v1, T2 v2) {
465
  return v1 + v2 > 0;
466
}
467
 
468
// The following two functions are needed to circumvent a bug in
469
// gcc 2.95.3, which sometimes has problem with the above template
470
// function.
471
bool PredFunction2Int(int v1, int v2) {
472
  return v1 + v2 > 0;
473
}
474
bool PredFunction2Bool(Bool v1, Bool v2) {
475
  return v1 + v2 > 0;
476
}
477
 
478
// A binary predicate functor.
479
struct PredFunctor2 {
480
  template <typename T1, typename T2>
481
  bool operator()(const T1& v1,
482
                  const T2& v2) {
483
    return v1 + v2 > 0;
484
  }
485
};
486
 
487
// A binary predicate-formatter function.
488
template <typename T1, typename T2>
489
testing::AssertionResult PredFormatFunction2(const char* e1,
490
                                             const char* e2,
491
                                             const T1& v1,
492
                                             const T2& v2) {
493
  if (PredFunction2(v1, v2))
494
    return testing::AssertionSuccess();
495
 
496
  return testing::AssertionFailure()
497
      << e1 << " + " << e2
498
      << " is expected to be positive, but evaluates to "
499
      << v1 + v2 << ".";
500
}
501
 
502
// A binary predicate-formatter functor.
503
struct PredFormatFunctor2 {
504
  template <typename T1, typename T2>
505
  testing::AssertionResult operator()(const char* e1,
506
                                      const char* e2,
507
                                      const T1& v1,
508
                                      const T2& v2) const {
509
    return PredFormatFunction2(e1, e2, v1, v2);
510
  }
511
};
512
 
513
// Tests for {EXPECT|ASSERT}_PRED_FORMAT2.
514
 
515
class Predicate2Test : public testing::Test {
516
 protected:
517
  virtual void SetUp() {
518
    expected_to_finish_ = true;
519
    finished_ = false;
520
    n1_ = n2_ = 0;
521
  }
522
 
523
  virtual void TearDown() {
524
    // Verifies that each of the predicate's arguments was evaluated
525
    // exactly once.
526
    EXPECT_EQ(1, n1_) <<
527
        "The predicate assertion didn't evaluate argument 2 "
528
        "exactly once.";
529
    EXPECT_EQ(1, n2_) <<
530
        "The predicate assertion didn't evaluate argument 3 "
531
        "exactly once.";
532
 
533
    // Verifies that the control flow in the test function is expected.
534
    if (expected_to_finish_ && !finished_) {
535
      FAIL() << "The predicate assertion unexpactedly aborted the test.";
536
    } else if (!expected_to_finish_ && finished_) {
537
      FAIL() << "The failed predicate assertion didn't abort the test "
538
                "as expected.";
539
    }
540
  }
541
 
542
  // true iff the test function is expected to run to finish.
543
  static bool expected_to_finish_;
544
 
545
  // true iff the test function did run to finish.
546
  static bool finished_;
547
 
548
  static int n1_;
549
  static int n2_;
550
};
551
 
552
bool Predicate2Test::expected_to_finish_;
553
bool Predicate2Test::finished_;
554
int Predicate2Test::n1_;
555
int Predicate2Test::n2_;
556
 
557
typedef Predicate2Test EXPECT_PRED_FORMAT2Test;
558
typedef Predicate2Test ASSERT_PRED_FORMAT2Test;
559
typedef Predicate2Test EXPECT_PRED2Test;
560
typedef Predicate2Test ASSERT_PRED2Test;
561
 
562
// Tests a successful EXPECT_PRED2 where the
563
// predicate-formatter is a function on a built-in type (int).
564
TEST_F(EXPECT_PRED2Test, FunctionOnBuiltInTypeSuccess) {
565
  EXPECT_PRED2(PredFunction2Int,
566
               ++n1_,
567
               ++n2_);
568
  finished_ = true;
569
}
570
 
571
// Tests a successful EXPECT_PRED2 where the
572
// predicate-formatter is a function on a user-defined type (Bool).
573
TEST_F(EXPECT_PRED2Test, FunctionOnUserTypeSuccess) {
574
  EXPECT_PRED2(PredFunction2Bool,
575
               Bool(++n1_),
576
               Bool(++n2_));
577
  finished_ = true;
578
}
579
 
580
// Tests a successful EXPECT_PRED2 where the
581
// predicate-formatter is a functor on a built-in type (int).
582
TEST_F(EXPECT_PRED2Test, FunctorOnBuiltInTypeSuccess) {
583
  EXPECT_PRED2(PredFunctor2(),
584
               ++n1_,
585
               ++n2_);
586
  finished_ = true;
587
}
588
 
589
// Tests a successful EXPECT_PRED2 where the
590
// predicate-formatter is a functor on a user-defined type (Bool).
591
TEST_F(EXPECT_PRED2Test, FunctorOnUserTypeSuccess) {
592
  EXPECT_PRED2(PredFunctor2(),
593
               Bool(++n1_),
594
               Bool(++n2_));
595
  finished_ = true;
596
}
597
 
598
// Tests a failed EXPECT_PRED2 where the
599
// predicate-formatter is a function on a built-in type (int).
600
TEST_F(EXPECT_PRED2Test, FunctionOnBuiltInTypeFailure) {
601
  EXPECT_NONFATAL_FAILURE({  // NOLINT
602
    EXPECT_PRED2(PredFunction2Int,
603
                 n1_++,
604
                 n2_++);
605
    finished_ = true;
606
  }, "");
607
}
608
 
609
// Tests a failed EXPECT_PRED2 where the
610
// predicate-formatter is a function on a user-defined type (Bool).
611
TEST_F(EXPECT_PRED2Test, FunctionOnUserTypeFailure) {
612
  EXPECT_NONFATAL_FAILURE({  // NOLINT
613
    EXPECT_PRED2(PredFunction2Bool,
614
                 Bool(n1_++),
615
                 Bool(n2_++));
616
    finished_ = true;
617
  }, "");
618
}
619
 
620
// Tests a failed EXPECT_PRED2 where the
621
// predicate-formatter is a functor on a built-in type (int).
622
TEST_F(EXPECT_PRED2Test, FunctorOnBuiltInTypeFailure) {
623
  EXPECT_NONFATAL_FAILURE({  // NOLINT
624
    EXPECT_PRED2(PredFunctor2(),
625
                 n1_++,
626
                 n2_++);
627
    finished_ = true;
628
  }, "");
629
}
630
 
631
// Tests a failed EXPECT_PRED2 where the
632
// predicate-formatter is a functor on a user-defined type (Bool).
633
TEST_F(EXPECT_PRED2Test, FunctorOnUserTypeFailure) {
634
  EXPECT_NONFATAL_FAILURE({  // NOLINT
635
    EXPECT_PRED2(PredFunctor2(),
636
                 Bool(n1_++),
637
                 Bool(n2_++));
638
    finished_ = true;
639
  }, "");
640
}
641
 
642
// Tests a successful ASSERT_PRED2 where the
643
// predicate-formatter is a function on a built-in type (int).
644
TEST_F(ASSERT_PRED2Test, FunctionOnBuiltInTypeSuccess) {
645
  ASSERT_PRED2(PredFunction2Int,
646
               ++n1_,
647
               ++n2_);
648
  finished_ = true;
649
}
650
 
651
// Tests a successful ASSERT_PRED2 where the
652
// predicate-formatter is a function on a user-defined type (Bool).
653
TEST_F(ASSERT_PRED2Test, FunctionOnUserTypeSuccess) {
654
  ASSERT_PRED2(PredFunction2Bool,
655
               Bool(++n1_),
656
               Bool(++n2_));
657
  finished_ = true;
658
}
659
 
660
// Tests a successful ASSERT_PRED2 where the
661
// predicate-formatter is a functor on a built-in type (int).
662
TEST_F(ASSERT_PRED2Test, FunctorOnBuiltInTypeSuccess) {
663
  ASSERT_PRED2(PredFunctor2(),
664
               ++n1_,
665
               ++n2_);
666
  finished_ = true;
667
}
668
 
669
// Tests a successful ASSERT_PRED2 where the
670
// predicate-formatter is a functor on a user-defined type (Bool).
671
TEST_F(ASSERT_PRED2Test, FunctorOnUserTypeSuccess) {
672
  ASSERT_PRED2(PredFunctor2(),
673
               Bool(++n1_),
674
               Bool(++n2_));
675
  finished_ = true;
676
}
677
 
678
// Tests a failed ASSERT_PRED2 where the
679
// predicate-formatter is a function on a built-in type (int).
680
TEST_F(ASSERT_PRED2Test, FunctionOnBuiltInTypeFailure) {
681
  expected_to_finish_ = false;
682
  EXPECT_FATAL_FAILURE({  // NOLINT
683
    ASSERT_PRED2(PredFunction2Int,
684
                 n1_++,
685
                 n2_++);
686
    finished_ = true;
687
  }, "");
688
}
689
 
690
// Tests a failed ASSERT_PRED2 where the
691
// predicate-formatter is a function on a user-defined type (Bool).
692
TEST_F(ASSERT_PRED2Test, FunctionOnUserTypeFailure) {
693
  expected_to_finish_ = false;
694
  EXPECT_FATAL_FAILURE({  // NOLINT
695
    ASSERT_PRED2(PredFunction2Bool,
696
                 Bool(n1_++),
697
                 Bool(n2_++));
698
    finished_ = true;
699
  }, "");
700
}
701
 
702
// Tests a failed ASSERT_PRED2 where the
703
// predicate-formatter is a functor on a built-in type (int).
704
TEST_F(ASSERT_PRED2Test, FunctorOnBuiltInTypeFailure) {
705
  expected_to_finish_ = false;
706
  EXPECT_FATAL_FAILURE({  // NOLINT
707
    ASSERT_PRED2(PredFunctor2(),
708
                 n1_++,
709
                 n2_++);
710
    finished_ = true;
711
  }, "");
712
}
713
 
714
// Tests a failed ASSERT_PRED2 where the
715
// predicate-formatter is a functor on a user-defined type (Bool).
716
TEST_F(ASSERT_PRED2Test, FunctorOnUserTypeFailure) {
717
  expected_to_finish_ = false;
718
  EXPECT_FATAL_FAILURE({  // NOLINT
719
    ASSERT_PRED2(PredFunctor2(),
720
                 Bool(n1_++),
721
                 Bool(n2_++));
722
    finished_ = true;
723
  }, "");
724
}
725
 
726
// Tests a successful EXPECT_PRED_FORMAT2 where the
727
// predicate-formatter is a function on a built-in type (int).
728
TEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnBuiltInTypeSuccess) {
729
  EXPECT_PRED_FORMAT2(PredFormatFunction2,
730
                      ++n1_,
731
                      ++n2_);
732
  finished_ = true;
733
}
734
 
735
// Tests a successful EXPECT_PRED_FORMAT2 where the
736
// predicate-formatter is a function on a user-defined type (Bool).
737
TEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnUserTypeSuccess) {
738
  EXPECT_PRED_FORMAT2(PredFormatFunction2,
739
                      Bool(++n1_),
740
                      Bool(++n2_));
741
  finished_ = true;
742
}
743
 
744
// Tests a successful EXPECT_PRED_FORMAT2 where the
745
// predicate-formatter is a functor on a built-in type (int).
746
TEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnBuiltInTypeSuccess) {
747
  EXPECT_PRED_FORMAT2(PredFormatFunctor2(),
748
                      ++n1_,
749
                      ++n2_);
750
  finished_ = true;
751
}
752
 
753
// Tests a successful EXPECT_PRED_FORMAT2 where the
754
// predicate-formatter is a functor on a user-defined type (Bool).
755
TEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnUserTypeSuccess) {
756
  EXPECT_PRED_FORMAT2(PredFormatFunctor2(),
757
                      Bool(++n1_),
758
                      Bool(++n2_));
759
  finished_ = true;
760
}
761
 
762
// Tests a failed EXPECT_PRED_FORMAT2 where the
763
// predicate-formatter is a function on a built-in type (int).
764
TEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnBuiltInTypeFailure) {
765
  EXPECT_NONFATAL_FAILURE({  // NOLINT
766
    EXPECT_PRED_FORMAT2(PredFormatFunction2,
767
                        n1_++,
768
                        n2_++);
769
    finished_ = true;
770
  }, "");
771
}
772
 
773
// Tests a failed EXPECT_PRED_FORMAT2 where the
774
// predicate-formatter is a function on a user-defined type (Bool).
775
TEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnUserTypeFailure) {
776
  EXPECT_NONFATAL_FAILURE({  // NOLINT
777
    EXPECT_PRED_FORMAT2(PredFormatFunction2,
778
                        Bool(n1_++),
779
                        Bool(n2_++));
780
    finished_ = true;
781
  }, "");
782
}
783
 
784
// Tests a failed EXPECT_PRED_FORMAT2 where the
785
// predicate-formatter is a functor on a built-in type (int).
786
TEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnBuiltInTypeFailure) {
787
  EXPECT_NONFATAL_FAILURE({  // NOLINT
788
    EXPECT_PRED_FORMAT2(PredFormatFunctor2(),
789
                        n1_++,
790
                        n2_++);
791
    finished_ = true;
792
  }, "");
793
}
794
 
795
// Tests a failed EXPECT_PRED_FORMAT2 where the
796
// predicate-formatter is a functor on a user-defined type (Bool).
797
TEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnUserTypeFailure) {
798
  EXPECT_NONFATAL_FAILURE({  // NOLINT
799
    EXPECT_PRED_FORMAT2(PredFormatFunctor2(),
800
                        Bool(n1_++),
801
                        Bool(n2_++));
802
    finished_ = true;
803
  }, "");
804
}
805
 
806
// Tests a successful ASSERT_PRED_FORMAT2 where the
807
// predicate-formatter is a function on a built-in type (int).
808
TEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnBuiltInTypeSuccess) {
809
  ASSERT_PRED_FORMAT2(PredFormatFunction2,
810
                      ++n1_,
811
                      ++n2_);
812
  finished_ = true;
813
}
814
 
815
// Tests a successful ASSERT_PRED_FORMAT2 where the
816
// predicate-formatter is a function on a user-defined type (Bool).
817
TEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnUserTypeSuccess) {
818
  ASSERT_PRED_FORMAT2(PredFormatFunction2,
819
                      Bool(++n1_),
820
                      Bool(++n2_));
821
  finished_ = true;
822
}
823
 
824
// Tests a successful ASSERT_PRED_FORMAT2 where the
825
// predicate-formatter is a functor on a built-in type (int).
826
TEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnBuiltInTypeSuccess) {
827
  ASSERT_PRED_FORMAT2(PredFormatFunctor2(),
828
                      ++n1_,
829
                      ++n2_);
830
  finished_ = true;
831
}
832
 
833
// Tests a successful ASSERT_PRED_FORMAT2 where the
834
// predicate-formatter is a functor on a user-defined type (Bool).
835
TEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnUserTypeSuccess) {
836
  ASSERT_PRED_FORMAT2(PredFormatFunctor2(),
837
                      Bool(++n1_),
838
                      Bool(++n2_));
839
  finished_ = true;
840
}
841
 
842
// Tests a failed ASSERT_PRED_FORMAT2 where the
843
// predicate-formatter is a function on a built-in type (int).
844
TEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnBuiltInTypeFailure) {
845
  expected_to_finish_ = false;
846
  EXPECT_FATAL_FAILURE({  // NOLINT
847
    ASSERT_PRED_FORMAT2(PredFormatFunction2,
848
                        n1_++,
849
                        n2_++);
850
    finished_ = true;
851
  }, "");
852
}
853
 
854
// Tests a failed ASSERT_PRED_FORMAT2 where the
855
// predicate-formatter is a function on a user-defined type (Bool).
856
TEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnUserTypeFailure) {
857
  expected_to_finish_ = false;
858
  EXPECT_FATAL_FAILURE({  // NOLINT
859
    ASSERT_PRED_FORMAT2(PredFormatFunction2,
860
                        Bool(n1_++),
861
                        Bool(n2_++));
862
    finished_ = true;
863
  }, "");
864
}
865
 
866
// Tests a failed ASSERT_PRED_FORMAT2 where the
867
// predicate-formatter is a functor on a built-in type (int).
868
TEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnBuiltInTypeFailure) {
869
  expected_to_finish_ = false;
870
  EXPECT_FATAL_FAILURE({  // NOLINT
871
    ASSERT_PRED_FORMAT2(PredFormatFunctor2(),
872
                        n1_++,
873
                        n2_++);
874
    finished_ = true;
875
  }, "");
876
}
877
 
878
// Tests a failed ASSERT_PRED_FORMAT2 where the
879
// predicate-formatter is a functor on a user-defined type (Bool).
880
TEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnUserTypeFailure) {
881
  expected_to_finish_ = false;
882
  EXPECT_FATAL_FAILURE({  // NOLINT
883
    ASSERT_PRED_FORMAT2(PredFormatFunctor2(),
884
                        Bool(n1_++),
885
                        Bool(n2_++));
886
    finished_ = true;
887
  }, "");
888
}
889
// Sample functions/functors for testing ternary predicate assertions.
890
 
891
// A ternary predicate function.
892
template <typename T1, typename T2, typename T3>
893
bool PredFunction3(T1 v1, T2 v2, T3 v3) {
894
  return v1 + v2 + v3 > 0;
895
}
896
 
897
// The following two functions are needed to circumvent a bug in
898
// gcc 2.95.3, which sometimes has problem with the above template
899
// function.
900
bool PredFunction3Int(int v1, int v2, int v3) {
901
  return v1 + v2 + v3 > 0;
902
}
903
bool PredFunction3Bool(Bool v1, Bool v2, Bool v3) {
904
  return v1 + v2 + v3 > 0;
905
}
906
 
907
// A ternary predicate functor.
908
struct PredFunctor3 {
909
  template <typename T1, typename T2, typename T3>
910
  bool operator()(const T1& v1,
911
                  const T2& v2,
912
                  const T3& v3) {
913
    return v1 + v2 + v3 > 0;
914
  }
915
};
916
 
917
// A ternary predicate-formatter function.
918
template <typename T1, typename T2, typename T3>
919
testing::AssertionResult PredFormatFunction3(const char* e1,
920
                                             const char* e2,
921
                                             const char* e3,
922
                                             const T1& v1,
923
                                             const T2& v2,
924
                                             const T3& v3) {
925
  if (PredFunction3(v1, v2, v3))
926
    return testing::AssertionSuccess();
927
 
928
  return testing::AssertionFailure()
929
      << e1 << " + " << e2 << " + " << e3
930
      << " is expected to be positive, but evaluates to "
931
      << v1 + v2 + v3 << ".";
932
}
933
 
934
// A ternary predicate-formatter functor.
935
struct PredFormatFunctor3 {
936
  template <typename T1, typename T2, typename T3>
937
  testing::AssertionResult operator()(const char* e1,
938
                                      const char* e2,
939
                                      const char* e3,
940
                                      const T1& v1,
941
                                      const T2& v2,
942
                                      const T3& v3) const {
943
    return PredFormatFunction3(e1, e2, e3, v1, v2, v3);
944
  }
945
};
946
 
947
// Tests for {EXPECT|ASSERT}_PRED_FORMAT3.
948
 
949
class Predicate3Test : public testing::Test {
950
 protected:
951
  virtual void SetUp() {
952
    expected_to_finish_ = true;
953
    finished_ = false;
954
    n1_ = n2_ = n3_ = 0;
955
  }
956
 
957
  virtual void TearDown() {
958
    // Verifies that each of the predicate's arguments was evaluated
959
    // exactly once.
960
    EXPECT_EQ(1, n1_) <<
961
        "The predicate assertion didn't evaluate argument 2 "
962
        "exactly once.";
963
    EXPECT_EQ(1, n2_) <<
964
        "The predicate assertion didn't evaluate argument 3 "
965
        "exactly once.";
966
    EXPECT_EQ(1, n3_) <<
967
        "The predicate assertion didn't evaluate argument 4 "
968
        "exactly once.";
969
 
970
    // Verifies that the control flow in the test function is expected.
971
    if (expected_to_finish_ && !finished_) {
972
      FAIL() << "The predicate assertion unexpactedly aborted the test.";
973
    } else if (!expected_to_finish_ && finished_) {
974
      FAIL() << "The failed predicate assertion didn't abort the test "
975
                "as expected.";
976
    }
977
  }
978
 
979
  // true iff the test function is expected to run to finish.
980
  static bool expected_to_finish_;
981
 
982
  // true iff the test function did run to finish.
983
  static bool finished_;
984
 
985
  static int n1_;
986
  static int n2_;
987
  static int n3_;
988
};
989
 
990
bool Predicate3Test::expected_to_finish_;
991
bool Predicate3Test::finished_;
992
int Predicate3Test::n1_;
993
int Predicate3Test::n2_;
994
int Predicate3Test::n3_;
995
 
996
typedef Predicate3Test EXPECT_PRED_FORMAT3Test;
997
typedef Predicate3Test ASSERT_PRED_FORMAT3Test;
998
typedef Predicate3Test EXPECT_PRED3Test;
999
typedef Predicate3Test ASSERT_PRED3Test;
1000
 
1001
// Tests a successful EXPECT_PRED3 where the
1002
// predicate-formatter is a function on a built-in type (int).
1003
TEST_F(EXPECT_PRED3Test, FunctionOnBuiltInTypeSuccess) {
1004
  EXPECT_PRED3(PredFunction3Int,
1005
               ++n1_,
1006
               ++n2_,
1007
               ++n3_);
1008
  finished_ = true;
1009
}
1010
 
1011
// Tests a successful EXPECT_PRED3 where the
1012
// predicate-formatter is a function on a user-defined type (Bool).
1013
TEST_F(EXPECT_PRED3Test, FunctionOnUserTypeSuccess) {
1014
  EXPECT_PRED3(PredFunction3Bool,
1015
               Bool(++n1_),
1016
               Bool(++n2_),
1017
               Bool(++n3_));
1018
  finished_ = true;
1019
}
1020
 
1021
// Tests a successful EXPECT_PRED3 where the
1022
// predicate-formatter is a functor on a built-in type (int).
1023
TEST_F(EXPECT_PRED3Test, FunctorOnBuiltInTypeSuccess) {
1024
  EXPECT_PRED3(PredFunctor3(),
1025
               ++n1_,
1026
               ++n2_,
1027
               ++n3_);
1028
  finished_ = true;
1029
}
1030
 
1031
// Tests a successful EXPECT_PRED3 where the
1032
// predicate-formatter is a functor on a user-defined type (Bool).
1033
TEST_F(EXPECT_PRED3Test, FunctorOnUserTypeSuccess) {
1034
  EXPECT_PRED3(PredFunctor3(),
1035
               Bool(++n1_),
1036
               Bool(++n2_),
1037
               Bool(++n3_));
1038
  finished_ = true;
1039
}
1040
 
1041
// Tests a failed EXPECT_PRED3 where the
1042
// predicate-formatter is a function on a built-in type (int).
1043
TEST_F(EXPECT_PRED3Test, FunctionOnBuiltInTypeFailure) {
1044
  EXPECT_NONFATAL_FAILURE({  // NOLINT
1045
    EXPECT_PRED3(PredFunction3Int,
1046
                 n1_++,
1047
                 n2_++,
1048
                 n3_++);
1049
    finished_ = true;
1050
  }, "");
1051
}
1052
 
1053
// Tests a failed EXPECT_PRED3 where the
1054
// predicate-formatter is a function on a user-defined type (Bool).
1055
TEST_F(EXPECT_PRED3Test, FunctionOnUserTypeFailure) {
1056
  EXPECT_NONFATAL_FAILURE({  // NOLINT
1057
    EXPECT_PRED3(PredFunction3Bool,
1058
                 Bool(n1_++),
1059
                 Bool(n2_++),
1060
                 Bool(n3_++));
1061
    finished_ = true;
1062
  }, "");
1063
}
1064
 
1065
// Tests a failed EXPECT_PRED3 where the
1066
// predicate-formatter is a functor on a built-in type (int).
1067
TEST_F(EXPECT_PRED3Test, FunctorOnBuiltInTypeFailure) {
1068
  EXPECT_NONFATAL_FAILURE({  // NOLINT
1069
    EXPECT_PRED3(PredFunctor3(),
1070
                 n1_++,
1071
                 n2_++,
1072
                 n3_++);
1073
    finished_ = true;
1074
  }, "");
1075
}
1076
 
1077
// Tests a failed EXPECT_PRED3 where the
1078
// predicate-formatter is a functor on a user-defined type (Bool).
1079
TEST_F(EXPECT_PRED3Test, FunctorOnUserTypeFailure) {
1080
  EXPECT_NONFATAL_FAILURE({  // NOLINT
1081
    EXPECT_PRED3(PredFunctor3(),
1082
                 Bool(n1_++),
1083
                 Bool(n2_++),
1084
                 Bool(n3_++));
1085
    finished_ = true;
1086
  }, "");
1087
}
1088
 
1089
// Tests a successful ASSERT_PRED3 where the
1090
// predicate-formatter is a function on a built-in type (int).
1091
TEST_F(ASSERT_PRED3Test, FunctionOnBuiltInTypeSuccess) {
1092
  ASSERT_PRED3(PredFunction3Int,
1093
               ++n1_,
1094
               ++n2_,
1095
               ++n3_);
1096
  finished_ = true;
1097
}
1098
 
1099
// Tests a successful ASSERT_PRED3 where the
1100
// predicate-formatter is a function on a user-defined type (Bool).
1101
TEST_F(ASSERT_PRED3Test, FunctionOnUserTypeSuccess) {
1102
  ASSERT_PRED3(PredFunction3Bool,
1103
               Bool(++n1_),
1104
               Bool(++n2_),
1105
               Bool(++n3_));
1106
  finished_ = true;
1107
}
1108
 
1109
// Tests a successful ASSERT_PRED3 where the
1110
// predicate-formatter is a functor on a built-in type (int).
1111
TEST_F(ASSERT_PRED3Test, FunctorOnBuiltInTypeSuccess) {
1112
  ASSERT_PRED3(PredFunctor3(),
1113
               ++n1_,
1114
               ++n2_,
1115
               ++n3_);
1116
  finished_ = true;
1117
}
1118
 
1119
// Tests a successful ASSERT_PRED3 where the
1120
// predicate-formatter is a functor on a user-defined type (Bool).
1121
TEST_F(ASSERT_PRED3Test, FunctorOnUserTypeSuccess) {
1122
  ASSERT_PRED3(PredFunctor3(),
1123
               Bool(++n1_),
1124
               Bool(++n2_),
1125
               Bool(++n3_));
1126
  finished_ = true;
1127
}
1128
 
1129
// Tests a failed ASSERT_PRED3 where the
1130
// predicate-formatter is a function on a built-in type (int).
1131
TEST_F(ASSERT_PRED3Test, FunctionOnBuiltInTypeFailure) {
1132
  expected_to_finish_ = false;
1133
  EXPECT_FATAL_FAILURE({  // NOLINT
1134
    ASSERT_PRED3(PredFunction3Int,
1135
                 n1_++,
1136
                 n2_++,
1137
                 n3_++);
1138
    finished_ = true;
1139
  }, "");
1140
}
1141
 
1142
// Tests a failed ASSERT_PRED3 where the
1143
// predicate-formatter is a function on a user-defined type (Bool).
1144
TEST_F(ASSERT_PRED3Test, FunctionOnUserTypeFailure) {
1145
  expected_to_finish_ = false;
1146
  EXPECT_FATAL_FAILURE({  // NOLINT
1147
    ASSERT_PRED3(PredFunction3Bool,
1148
                 Bool(n1_++),
1149
                 Bool(n2_++),
1150
                 Bool(n3_++));
1151
    finished_ = true;
1152
  }, "");
1153
}
1154
 
1155
// Tests a failed ASSERT_PRED3 where the
1156
// predicate-formatter is a functor on a built-in type (int).
1157
TEST_F(ASSERT_PRED3Test, FunctorOnBuiltInTypeFailure) {
1158
  expected_to_finish_ = false;
1159
  EXPECT_FATAL_FAILURE({  // NOLINT
1160
    ASSERT_PRED3(PredFunctor3(),
1161
                 n1_++,
1162
                 n2_++,
1163
                 n3_++);
1164
    finished_ = true;
1165
  }, "");
1166
}
1167
 
1168
// Tests a failed ASSERT_PRED3 where the
1169
// predicate-formatter is a functor on a user-defined type (Bool).
1170
TEST_F(ASSERT_PRED3Test, FunctorOnUserTypeFailure) {
1171
  expected_to_finish_ = false;
1172
  EXPECT_FATAL_FAILURE({  // NOLINT
1173
    ASSERT_PRED3(PredFunctor3(),
1174
                 Bool(n1_++),
1175
                 Bool(n2_++),
1176
                 Bool(n3_++));
1177
    finished_ = true;
1178
  }, "");
1179
}
1180
 
1181
// Tests a successful EXPECT_PRED_FORMAT3 where the
1182
// predicate-formatter is a function on a built-in type (int).
1183
TEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnBuiltInTypeSuccess) {
1184
  EXPECT_PRED_FORMAT3(PredFormatFunction3,
1185
                      ++n1_,
1186
                      ++n2_,
1187
                      ++n3_);
1188
  finished_ = true;
1189
}
1190
 
1191
// Tests a successful EXPECT_PRED_FORMAT3 where the
1192
// predicate-formatter is a function on a user-defined type (Bool).
1193
TEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnUserTypeSuccess) {
1194
  EXPECT_PRED_FORMAT3(PredFormatFunction3,
1195
                      Bool(++n1_),
1196
                      Bool(++n2_),
1197
                      Bool(++n3_));
1198
  finished_ = true;
1199
}
1200
 
1201
// Tests a successful EXPECT_PRED_FORMAT3 where the
1202
// predicate-formatter is a functor on a built-in type (int).
1203
TEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnBuiltInTypeSuccess) {
1204
  EXPECT_PRED_FORMAT3(PredFormatFunctor3(),
1205
                      ++n1_,
1206
                      ++n2_,
1207
                      ++n3_);
1208
  finished_ = true;
1209
}
1210
 
1211
// Tests a successful EXPECT_PRED_FORMAT3 where the
1212
// predicate-formatter is a functor on a user-defined type (Bool).
1213
TEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnUserTypeSuccess) {
1214
  EXPECT_PRED_FORMAT3(PredFormatFunctor3(),
1215
                      Bool(++n1_),
1216
                      Bool(++n2_),
1217
                      Bool(++n3_));
1218
  finished_ = true;
1219
}
1220
 
1221
// Tests a failed EXPECT_PRED_FORMAT3 where the
1222
// predicate-formatter is a function on a built-in type (int).
1223
TEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnBuiltInTypeFailure) {
1224
  EXPECT_NONFATAL_FAILURE({  // NOLINT
1225
    EXPECT_PRED_FORMAT3(PredFormatFunction3,
1226
                        n1_++,
1227
                        n2_++,
1228
                        n3_++);
1229
    finished_ = true;
1230
  }, "");
1231
}
1232
 
1233
// Tests a failed EXPECT_PRED_FORMAT3 where the
1234
// predicate-formatter is a function on a user-defined type (Bool).
1235
TEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnUserTypeFailure) {
1236
  EXPECT_NONFATAL_FAILURE({  // NOLINT
1237
    EXPECT_PRED_FORMAT3(PredFormatFunction3,
1238
                        Bool(n1_++),
1239
                        Bool(n2_++),
1240
                        Bool(n3_++));
1241
    finished_ = true;
1242
  }, "");
1243
}
1244
 
1245
// Tests a failed EXPECT_PRED_FORMAT3 where the
1246
// predicate-formatter is a functor on a built-in type (int).
1247
TEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnBuiltInTypeFailure) {
1248
  EXPECT_NONFATAL_FAILURE({  // NOLINT
1249
    EXPECT_PRED_FORMAT3(PredFormatFunctor3(),
1250
                        n1_++,
1251
                        n2_++,
1252
                        n3_++);
1253
    finished_ = true;
1254
  }, "");
1255
}
1256
 
1257
// Tests a failed EXPECT_PRED_FORMAT3 where the
1258
// predicate-formatter is a functor on a user-defined type (Bool).
1259
TEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnUserTypeFailure) {
1260
  EXPECT_NONFATAL_FAILURE({  // NOLINT
1261
    EXPECT_PRED_FORMAT3(PredFormatFunctor3(),
1262
                        Bool(n1_++),
1263
                        Bool(n2_++),
1264
                        Bool(n3_++));
1265
    finished_ = true;
1266
  }, "");
1267
}
1268
 
1269
// Tests a successful ASSERT_PRED_FORMAT3 where the
1270
// predicate-formatter is a function on a built-in type (int).
1271
TEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnBuiltInTypeSuccess) {
1272
  ASSERT_PRED_FORMAT3(PredFormatFunction3,
1273
                      ++n1_,
1274
                      ++n2_,
1275
                      ++n3_);
1276
  finished_ = true;
1277
}
1278
 
1279
// Tests a successful ASSERT_PRED_FORMAT3 where the
1280
// predicate-formatter is a function on a user-defined type (Bool).
1281
TEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnUserTypeSuccess) {
1282
  ASSERT_PRED_FORMAT3(PredFormatFunction3,
1283
                      Bool(++n1_),
1284
                      Bool(++n2_),
1285
                      Bool(++n3_));
1286
  finished_ = true;
1287
}
1288
 
1289
// Tests a successful ASSERT_PRED_FORMAT3 where the
1290
// predicate-formatter is a functor on a built-in type (int).
1291
TEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnBuiltInTypeSuccess) {
1292
  ASSERT_PRED_FORMAT3(PredFormatFunctor3(),
1293
                      ++n1_,
1294
                      ++n2_,
1295
                      ++n3_);
1296
  finished_ = true;
1297
}
1298
 
1299
// Tests a successful ASSERT_PRED_FORMAT3 where the
1300
// predicate-formatter is a functor on a user-defined type (Bool).
1301
TEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnUserTypeSuccess) {
1302
  ASSERT_PRED_FORMAT3(PredFormatFunctor3(),
1303
                      Bool(++n1_),
1304
                      Bool(++n2_),
1305
                      Bool(++n3_));
1306
  finished_ = true;
1307
}
1308
 
1309
// Tests a failed ASSERT_PRED_FORMAT3 where the
1310
// predicate-formatter is a function on a built-in type (int).
1311
TEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnBuiltInTypeFailure) {
1312
  expected_to_finish_ = false;
1313
  EXPECT_FATAL_FAILURE({  // NOLINT
1314
    ASSERT_PRED_FORMAT3(PredFormatFunction3,
1315
                        n1_++,
1316
                        n2_++,
1317
                        n3_++);
1318
    finished_ = true;
1319
  }, "");
1320
}
1321
 
1322
// Tests a failed ASSERT_PRED_FORMAT3 where the
1323
// predicate-formatter is a function on a user-defined type (Bool).
1324
TEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnUserTypeFailure) {
1325
  expected_to_finish_ = false;
1326
  EXPECT_FATAL_FAILURE({  // NOLINT
1327
    ASSERT_PRED_FORMAT3(PredFormatFunction3,
1328
                        Bool(n1_++),
1329
                        Bool(n2_++),
1330
                        Bool(n3_++));
1331
    finished_ = true;
1332
  }, "");
1333
}
1334
 
1335
// Tests a failed ASSERT_PRED_FORMAT3 where the
1336
// predicate-formatter is a functor on a built-in type (int).
1337
TEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnBuiltInTypeFailure) {
1338
  expected_to_finish_ = false;
1339
  EXPECT_FATAL_FAILURE({  // NOLINT
1340
    ASSERT_PRED_FORMAT3(PredFormatFunctor3(),
1341
                        n1_++,
1342
                        n2_++,
1343
                        n3_++);
1344
    finished_ = true;
1345
  }, "");
1346
}
1347
 
1348
// Tests a failed ASSERT_PRED_FORMAT3 where the
1349
// predicate-formatter is a functor on a user-defined type (Bool).
1350
TEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnUserTypeFailure) {
1351
  expected_to_finish_ = false;
1352
  EXPECT_FATAL_FAILURE({  // NOLINT
1353
    ASSERT_PRED_FORMAT3(PredFormatFunctor3(),
1354
                        Bool(n1_++),
1355
                        Bool(n2_++),
1356
                        Bool(n3_++));
1357
    finished_ = true;
1358
  }, "");
1359
}
1360
// Sample functions/functors for testing 4-ary predicate assertions.
1361
 
1362
// A 4-ary predicate function.
1363
template <typename T1, typename T2, typename T3, typename T4>
1364
bool PredFunction4(T1 v1, T2 v2, T3 v3, T4 v4) {
1365
  return v1 + v2 + v3 + v4 > 0;
1366
}
1367
 
1368
// The following two functions are needed to circumvent a bug in
1369
// gcc 2.95.3, which sometimes has problem with the above template
1370
// function.
1371
bool PredFunction4Int(int v1, int v2, int v3, int v4) {
1372
  return v1 + v2 + v3 + v4 > 0;
1373
}
1374
bool PredFunction4Bool(Bool v1, Bool v2, Bool v3, Bool v4) {
1375
  return v1 + v2 + v3 + v4 > 0;
1376
}
1377
 
1378
// A 4-ary predicate functor.
1379
struct PredFunctor4 {
1380
  template <typename T1, typename T2, typename T3, typename T4>
1381
  bool operator()(const T1& v1,
1382
                  const T2& v2,
1383
                  const T3& v3,
1384
                  const T4& v4) {
1385
    return v1 + v2 + v3 + v4 > 0;
1386
  }
1387
};
1388
 
1389
// A 4-ary predicate-formatter function.
1390
template <typename T1, typename T2, typename T3, typename T4>
1391
testing::AssertionResult PredFormatFunction4(const char* e1,
1392
                                             const char* e2,
1393
                                             const char* e3,
1394
                                             const char* e4,
1395
                                             const T1& v1,
1396
                                             const T2& v2,
1397
                                             const T3& v3,
1398
                                             const T4& v4) {
1399
  if (PredFunction4(v1, v2, v3, v4))
1400
    return testing::AssertionSuccess();
1401
 
1402
  return testing::AssertionFailure()
1403
      << e1 << " + " << e2 << " + " << e3 << " + " << e4
1404
      << " is expected to be positive, but evaluates to "
1405
      << v1 + v2 + v3 + v4 << ".";
1406
}
1407
 
1408
// A 4-ary predicate-formatter functor.
1409
struct PredFormatFunctor4 {
1410
  template <typename T1, typename T2, typename T3, typename T4>
1411
  testing::AssertionResult operator()(const char* e1,
1412
                                      const char* e2,
1413
                                      const char* e3,
1414
                                      const char* e4,
1415
                                      const T1& v1,
1416
                                      const T2& v2,
1417
                                      const T3& v3,
1418
                                      const T4& v4) const {
1419
    return PredFormatFunction4(e1, e2, e3, e4, v1, v2, v3, v4);
1420
  }
1421
};
1422
 
1423
// Tests for {EXPECT|ASSERT}_PRED_FORMAT4.
1424
 
1425
class Predicate4Test : public testing::Test {
1426
 protected:
1427
  virtual void SetUp() {
1428
    expected_to_finish_ = true;
1429
    finished_ = false;
1430
    n1_ = n2_ = n3_ = n4_ = 0;
1431
  }
1432
 
1433
  virtual void TearDown() {
1434
    // Verifies that each of the predicate's arguments was evaluated
1435
    // exactly once.
1436
    EXPECT_EQ(1, n1_) <<
1437
        "The predicate assertion didn't evaluate argument 2 "
1438
        "exactly once.";
1439
    EXPECT_EQ(1, n2_) <<
1440
        "The predicate assertion didn't evaluate argument 3 "
1441
        "exactly once.";
1442
    EXPECT_EQ(1, n3_) <<
1443
        "The predicate assertion didn't evaluate argument 4 "
1444
        "exactly once.";
1445
    EXPECT_EQ(1, n4_) <<
1446
        "The predicate assertion didn't evaluate argument 5 "
1447
        "exactly once.";
1448
 
1449
    // Verifies that the control flow in the test function is expected.
1450
    if (expected_to_finish_ && !finished_) {
1451
      FAIL() << "The predicate assertion unexpactedly aborted the test.";
1452
    } else if (!expected_to_finish_ && finished_) {
1453
      FAIL() << "The failed predicate assertion didn't abort the test "
1454
                "as expected.";
1455
    }
1456
  }
1457
 
1458
  // true iff the test function is expected to run to finish.
1459
  static bool expected_to_finish_;
1460
 
1461
  // true iff the test function did run to finish.
1462
  static bool finished_;
1463
 
1464
  static int n1_;
1465
  static int n2_;
1466
  static int n3_;
1467
  static int n4_;
1468
};
1469
 
1470
bool Predicate4Test::expected_to_finish_;
1471
bool Predicate4Test::finished_;
1472
int Predicate4Test::n1_;
1473
int Predicate4Test::n2_;
1474
int Predicate4Test::n3_;
1475
int Predicate4Test::n4_;
1476
 
1477
typedef Predicate4Test EXPECT_PRED_FORMAT4Test;
1478
typedef Predicate4Test ASSERT_PRED_FORMAT4Test;
1479
typedef Predicate4Test EXPECT_PRED4Test;
1480
typedef Predicate4Test ASSERT_PRED4Test;
1481
 
1482
// Tests a successful EXPECT_PRED4 where the
1483
// predicate-formatter is a function on a built-in type (int).
1484
TEST_F(EXPECT_PRED4Test, FunctionOnBuiltInTypeSuccess) {
1485
  EXPECT_PRED4(PredFunction4Int,
1486
               ++n1_,
1487
               ++n2_,
1488
               ++n3_,
1489
               ++n4_);
1490
  finished_ = true;
1491
}
1492
 
1493
// Tests a successful EXPECT_PRED4 where the
1494
// predicate-formatter is a function on a user-defined type (Bool).
1495
TEST_F(EXPECT_PRED4Test, FunctionOnUserTypeSuccess) {
1496
  EXPECT_PRED4(PredFunction4Bool,
1497
               Bool(++n1_),
1498
               Bool(++n2_),
1499
               Bool(++n3_),
1500
               Bool(++n4_));
1501
  finished_ = true;
1502
}
1503
 
1504
// Tests a successful EXPECT_PRED4 where the
1505
// predicate-formatter is a functor on a built-in type (int).
1506
TEST_F(EXPECT_PRED4Test, FunctorOnBuiltInTypeSuccess) {
1507
  EXPECT_PRED4(PredFunctor4(),
1508
               ++n1_,
1509
               ++n2_,
1510
               ++n3_,
1511
               ++n4_);
1512
  finished_ = true;
1513
}
1514
 
1515
// Tests a successful EXPECT_PRED4 where the
1516
// predicate-formatter is a functor on a user-defined type (Bool).
1517
TEST_F(EXPECT_PRED4Test, FunctorOnUserTypeSuccess) {
1518
  EXPECT_PRED4(PredFunctor4(),
1519
               Bool(++n1_),
1520
               Bool(++n2_),
1521
               Bool(++n3_),
1522
               Bool(++n4_));
1523
  finished_ = true;
1524
}
1525
 
1526
// Tests a failed EXPECT_PRED4 where the
1527
// predicate-formatter is a function on a built-in type (int).
1528
TEST_F(EXPECT_PRED4Test, FunctionOnBuiltInTypeFailure) {
1529
  EXPECT_NONFATAL_FAILURE({  // NOLINT
1530
    EXPECT_PRED4(PredFunction4Int,
1531
                 n1_++,
1532
                 n2_++,
1533
                 n3_++,
1534
                 n4_++);
1535
    finished_ = true;
1536
  }, "");
1537
}
1538
 
1539
// Tests a failed EXPECT_PRED4 where the
1540
// predicate-formatter is a function on a user-defined type (Bool).
1541
TEST_F(EXPECT_PRED4Test, FunctionOnUserTypeFailure) {
1542
  EXPECT_NONFATAL_FAILURE({  // NOLINT
1543
    EXPECT_PRED4(PredFunction4Bool,
1544
                 Bool(n1_++),
1545
                 Bool(n2_++),
1546
                 Bool(n3_++),
1547
                 Bool(n4_++));
1548
    finished_ = true;
1549
  }, "");
1550
}
1551
 
1552
// Tests a failed EXPECT_PRED4 where the
1553
// predicate-formatter is a functor on a built-in type (int).
1554
TEST_F(EXPECT_PRED4Test, FunctorOnBuiltInTypeFailure) {
1555
  EXPECT_NONFATAL_FAILURE({  // NOLINT
1556
    EXPECT_PRED4(PredFunctor4(),
1557
                 n1_++,
1558
                 n2_++,
1559
                 n3_++,
1560
                 n4_++);
1561
    finished_ = true;
1562
  }, "");
1563
}
1564
 
1565
// Tests a failed EXPECT_PRED4 where the
1566
// predicate-formatter is a functor on a user-defined type (Bool).
1567
TEST_F(EXPECT_PRED4Test, FunctorOnUserTypeFailure) {
1568
  EXPECT_NONFATAL_FAILURE({  // NOLINT
1569
    EXPECT_PRED4(PredFunctor4(),
1570
                 Bool(n1_++),
1571
                 Bool(n2_++),
1572
                 Bool(n3_++),
1573
                 Bool(n4_++));
1574
    finished_ = true;
1575
  }, "");
1576
}
1577
 
1578
// Tests a successful ASSERT_PRED4 where the
1579
// predicate-formatter is a function on a built-in type (int).
1580
TEST_F(ASSERT_PRED4Test, FunctionOnBuiltInTypeSuccess) {
1581
  ASSERT_PRED4(PredFunction4Int,
1582
               ++n1_,
1583
               ++n2_,
1584
               ++n3_,
1585
               ++n4_);
1586
  finished_ = true;
1587
}
1588
 
1589
// Tests a successful ASSERT_PRED4 where the
1590
// predicate-formatter is a function on a user-defined type (Bool).
1591
TEST_F(ASSERT_PRED4Test, FunctionOnUserTypeSuccess) {
1592
  ASSERT_PRED4(PredFunction4Bool,
1593
               Bool(++n1_),
1594
               Bool(++n2_),
1595
               Bool(++n3_),
1596
               Bool(++n4_));
1597
  finished_ = true;
1598
}
1599
 
1600
// Tests a successful ASSERT_PRED4 where the
1601
// predicate-formatter is a functor on a built-in type (int).
1602
TEST_F(ASSERT_PRED4Test, FunctorOnBuiltInTypeSuccess) {
1603
  ASSERT_PRED4(PredFunctor4(),
1604
               ++n1_,
1605
               ++n2_,
1606
               ++n3_,
1607
               ++n4_);
1608
  finished_ = true;
1609
}
1610
 
1611
// Tests a successful ASSERT_PRED4 where the
1612
// predicate-formatter is a functor on a user-defined type (Bool).
1613
TEST_F(ASSERT_PRED4Test, FunctorOnUserTypeSuccess) {
1614
  ASSERT_PRED4(PredFunctor4(),
1615
               Bool(++n1_),
1616
               Bool(++n2_),
1617
               Bool(++n3_),
1618
               Bool(++n4_));
1619
  finished_ = true;
1620
}
1621
 
1622
// Tests a failed ASSERT_PRED4 where the
1623
// predicate-formatter is a function on a built-in type (int).
1624
TEST_F(ASSERT_PRED4Test, FunctionOnBuiltInTypeFailure) {
1625
  expected_to_finish_ = false;
1626
  EXPECT_FATAL_FAILURE({  // NOLINT
1627
    ASSERT_PRED4(PredFunction4Int,
1628
                 n1_++,
1629
                 n2_++,
1630
                 n3_++,
1631
                 n4_++);
1632
    finished_ = true;
1633
  }, "");
1634
}
1635
 
1636
// Tests a failed ASSERT_PRED4 where the
1637
// predicate-formatter is a function on a user-defined type (Bool).
1638
TEST_F(ASSERT_PRED4Test, FunctionOnUserTypeFailure) {
1639
  expected_to_finish_ = false;
1640
  EXPECT_FATAL_FAILURE({  // NOLINT
1641
    ASSERT_PRED4(PredFunction4Bool,
1642
                 Bool(n1_++),
1643
                 Bool(n2_++),
1644
                 Bool(n3_++),
1645
                 Bool(n4_++));
1646
    finished_ = true;
1647
  }, "");
1648
}
1649
 
1650
// Tests a failed ASSERT_PRED4 where the
1651
// predicate-formatter is a functor on a built-in type (int).
1652
TEST_F(ASSERT_PRED4Test, FunctorOnBuiltInTypeFailure) {
1653
  expected_to_finish_ = false;
1654
  EXPECT_FATAL_FAILURE({  // NOLINT
1655
    ASSERT_PRED4(PredFunctor4(),
1656
                 n1_++,
1657
                 n2_++,
1658
                 n3_++,
1659
                 n4_++);
1660
    finished_ = true;
1661
  }, "");
1662
}
1663
 
1664
// Tests a failed ASSERT_PRED4 where the
1665
// predicate-formatter is a functor on a user-defined type (Bool).
1666
TEST_F(ASSERT_PRED4Test, FunctorOnUserTypeFailure) {
1667
  expected_to_finish_ = false;
1668
  EXPECT_FATAL_FAILURE({  // NOLINT
1669
    ASSERT_PRED4(PredFunctor4(),
1670
                 Bool(n1_++),
1671
                 Bool(n2_++),
1672
                 Bool(n3_++),
1673
                 Bool(n4_++));
1674
    finished_ = true;
1675
  }, "");
1676
}
1677
 
1678
// Tests a successful EXPECT_PRED_FORMAT4 where the
1679
// predicate-formatter is a function on a built-in type (int).
1680
TEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnBuiltInTypeSuccess) {
1681
  EXPECT_PRED_FORMAT4(PredFormatFunction4,
1682
                      ++n1_,
1683
                      ++n2_,
1684
                      ++n3_,
1685
                      ++n4_);
1686
  finished_ = true;
1687
}
1688
 
1689
// Tests a successful EXPECT_PRED_FORMAT4 where the
1690
// predicate-formatter is a function on a user-defined type (Bool).
1691
TEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnUserTypeSuccess) {
1692
  EXPECT_PRED_FORMAT4(PredFormatFunction4,
1693
                      Bool(++n1_),
1694
                      Bool(++n2_),
1695
                      Bool(++n3_),
1696
                      Bool(++n4_));
1697
  finished_ = true;
1698
}
1699
 
1700
// Tests a successful EXPECT_PRED_FORMAT4 where the
1701
// predicate-formatter is a functor on a built-in type (int).
1702
TEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnBuiltInTypeSuccess) {
1703
  EXPECT_PRED_FORMAT4(PredFormatFunctor4(),
1704
                      ++n1_,
1705
                      ++n2_,
1706
                      ++n3_,
1707
                      ++n4_);
1708
  finished_ = true;
1709
}
1710
 
1711
// Tests a successful EXPECT_PRED_FORMAT4 where the
1712
// predicate-formatter is a functor on a user-defined type (Bool).
1713
TEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnUserTypeSuccess) {
1714
  EXPECT_PRED_FORMAT4(PredFormatFunctor4(),
1715
                      Bool(++n1_),
1716
                      Bool(++n2_),
1717
                      Bool(++n3_),
1718
                      Bool(++n4_));
1719
  finished_ = true;
1720
}
1721
 
1722
// Tests a failed EXPECT_PRED_FORMAT4 where the
1723
// predicate-formatter is a function on a built-in type (int).
1724
TEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnBuiltInTypeFailure) {
1725
  EXPECT_NONFATAL_FAILURE({  // NOLINT
1726
    EXPECT_PRED_FORMAT4(PredFormatFunction4,
1727
                        n1_++,
1728
                        n2_++,
1729
                        n3_++,
1730
                        n4_++);
1731
    finished_ = true;
1732
  }, "");
1733
}
1734
 
1735
// Tests a failed EXPECT_PRED_FORMAT4 where the
1736
// predicate-formatter is a function on a user-defined type (Bool).
1737
TEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnUserTypeFailure) {
1738
  EXPECT_NONFATAL_FAILURE({  // NOLINT
1739
    EXPECT_PRED_FORMAT4(PredFormatFunction4,
1740
                        Bool(n1_++),
1741
                        Bool(n2_++),
1742
                        Bool(n3_++),
1743
                        Bool(n4_++));
1744
    finished_ = true;
1745
  }, "");
1746
}
1747
 
1748
// Tests a failed EXPECT_PRED_FORMAT4 where the
1749
// predicate-formatter is a functor on a built-in type (int).
1750
TEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnBuiltInTypeFailure) {
1751
  EXPECT_NONFATAL_FAILURE({  // NOLINT
1752
    EXPECT_PRED_FORMAT4(PredFormatFunctor4(),
1753
                        n1_++,
1754
                        n2_++,
1755
                        n3_++,
1756
                        n4_++);
1757
    finished_ = true;
1758
  }, "");
1759
}
1760
 
1761
// Tests a failed EXPECT_PRED_FORMAT4 where the
1762
// predicate-formatter is a functor on a user-defined type (Bool).
1763
TEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnUserTypeFailure) {
1764
  EXPECT_NONFATAL_FAILURE({  // NOLINT
1765
    EXPECT_PRED_FORMAT4(PredFormatFunctor4(),
1766
                        Bool(n1_++),
1767
                        Bool(n2_++),
1768
                        Bool(n3_++),
1769
                        Bool(n4_++));
1770
    finished_ = true;
1771
  }, "");
1772
}
1773
 
1774
// Tests a successful ASSERT_PRED_FORMAT4 where the
1775
// predicate-formatter is a function on a built-in type (int).
1776
TEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnBuiltInTypeSuccess) {
1777
  ASSERT_PRED_FORMAT4(PredFormatFunction4,
1778
                      ++n1_,
1779
                      ++n2_,
1780
                      ++n3_,
1781
                      ++n4_);
1782
  finished_ = true;
1783
}
1784
 
1785
// Tests a successful ASSERT_PRED_FORMAT4 where the
1786
// predicate-formatter is a function on a user-defined type (Bool).
1787
TEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnUserTypeSuccess) {
1788
  ASSERT_PRED_FORMAT4(PredFormatFunction4,
1789
                      Bool(++n1_),
1790
                      Bool(++n2_),
1791
                      Bool(++n3_),
1792
                      Bool(++n4_));
1793
  finished_ = true;
1794
}
1795
 
1796
// Tests a successful ASSERT_PRED_FORMAT4 where the
1797
// predicate-formatter is a functor on a built-in type (int).
1798
TEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnBuiltInTypeSuccess) {
1799
  ASSERT_PRED_FORMAT4(PredFormatFunctor4(),
1800
                      ++n1_,
1801
                      ++n2_,
1802
                      ++n3_,
1803
                      ++n4_);
1804
  finished_ = true;
1805
}
1806
 
1807
// Tests a successful ASSERT_PRED_FORMAT4 where the
1808
// predicate-formatter is a functor on a user-defined type (Bool).
1809
TEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnUserTypeSuccess) {
1810
  ASSERT_PRED_FORMAT4(PredFormatFunctor4(),
1811
                      Bool(++n1_),
1812
                      Bool(++n2_),
1813
                      Bool(++n3_),
1814
                      Bool(++n4_));
1815
  finished_ = true;
1816
}
1817
 
1818
// Tests a failed ASSERT_PRED_FORMAT4 where the
1819
// predicate-formatter is a function on a built-in type (int).
1820
TEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnBuiltInTypeFailure) {
1821
  expected_to_finish_ = false;
1822
  EXPECT_FATAL_FAILURE({  // NOLINT
1823
    ASSERT_PRED_FORMAT4(PredFormatFunction4,
1824
                        n1_++,
1825
                        n2_++,
1826
                        n3_++,
1827
                        n4_++);
1828
    finished_ = true;
1829
  }, "");
1830
}
1831
 
1832
// Tests a failed ASSERT_PRED_FORMAT4 where the
1833
// predicate-formatter is a function on a user-defined type (Bool).
1834
TEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnUserTypeFailure) {
1835
  expected_to_finish_ = false;
1836
  EXPECT_FATAL_FAILURE({  // NOLINT
1837
    ASSERT_PRED_FORMAT4(PredFormatFunction4,
1838
                        Bool(n1_++),
1839
                        Bool(n2_++),
1840
                        Bool(n3_++),
1841
                        Bool(n4_++));
1842
    finished_ = true;
1843
  }, "");
1844
}
1845
 
1846
// Tests a failed ASSERT_PRED_FORMAT4 where the
1847
// predicate-formatter is a functor on a built-in type (int).
1848
TEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnBuiltInTypeFailure) {
1849
  expected_to_finish_ = false;
1850
  EXPECT_FATAL_FAILURE({  // NOLINT
1851
    ASSERT_PRED_FORMAT4(PredFormatFunctor4(),
1852
                        n1_++,
1853
                        n2_++,
1854
                        n3_++,
1855
                        n4_++);
1856
    finished_ = true;
1857
  }, "");
1858
}
1859
 
1860
// Tests a failed ASSERT_PRED_FORMAT4 where the
1861
// predicate-formatter is a functor on a user-defined type (Bool).
1862
TEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnUserTypeFailure) {
1863
  expected_to_finish_ = false;
1864
  EXPECT_FATAL_FAILURE({  // NOLINT
1865
    ASSERT_PRED_FORMAT4(PredFormatFunctor4(),
1866
                        Bool(n1_++),
1867
                        Bool(n2_++),
1868
                        Bool(n3_++),
1869
                        Bool(n4_++));
1870
    finished_ = true;
1871
  }, "");
1872
}
1873
// Sample functions/functors for testing 5-ary predicate assertions.
1874
 
1875
// A 5-ary predicate function.
1876
template <typename T1, typename T2, typename T3, typename T4, typename T5>
1877
bool PredFunction5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) {
1878
  return v1 + v2 + v3 + v4 + v5 > 0;
1879
}
1880
 
1881
// The following two functions are needed to circumvent a bug in
1882
// gcc 2.95.3, which sometimes has problem with the above template
1883
// function.
1884
bool PredFunction5Int(int v1, int v2, int v3, int v4, int v5) {
1885
  return v1 + v2 + v3 + v4 + v5 > 0;
1886
}
1887
bool PredFunction5Bool(Bool v1, Bool v2, Bool v3, Bool v4, Bool v5) {
1888
  return v1 + v2 + v3 + v4 + v5 > 0;
1889
}
1890
 
1891
// A 5-ary predicate functor.
1892
struct PredFunctor5 {
1893
  template <typename T1, typename T2, typename T3, typename T4, typename T5>
1894
  bool operator()(const T1& v1,
1895
                  const T2& v2,
1896
                  const T3& v3,
1897
                  const T4& v4,
1898
                  const T5& v5) {
1899
    return v1 + v2 + v3 + v4 + v5 > 0;
1900
  }
1901
};
1902
 
1903
// A 5-ary predicate-formatter function.
1904
template <typename T1, typename T2, typename T3, typename T4, typename T5>
1905
testing::AssertionResult PredFormatFunction5(const char* e1,
1906
                                             const char* e2,
1907
                                             const char* e3,
1908
                                             const char* e4,
1909
                                             const char* e5,
1910
                                             const T1& v1,
1911
                                             const T2& v2,
1912
                                             const T3& v3,
1913
                                             const T4& v4,
1914
                                             const T5& v5) {
1915
  if (PredFunction5(v1, v2, v3, v4, v5))
1916
    return testing::AssertionSuccess();
1917
 
1918
  return testing::AssertionFailure()
1919
      << e1 << " + " << e2 << " + " << e3 << " + " << e4 << " + " << e5
1920
      << " is expected to be positive, but evaluates to "
1921
      << v1 + v2 + v3 + v4 + v5 << ".";
1922
}
1923
 
1924
// A 5-ary predicate-formatter functor.
1925
struct PredFormatFunctor5 {
1926
  template <typename T1, typename T2, typename T3, typename T4, typename T5>
1927
  testing::AssertionResult operator()(const char* e1,
1928
                                      const char* e2,
1929
                                      const char* e3,
1930
                                      const char* e4,
1931
                                      const char* e5,
1932
                                      const T1& v1,
1933
                                      const T2& v2,
1934
                                      const T3& v3,
1935
                                      const T4& v4,
1936
                                      const T5& v5) const {
1937
    return PredFormatFunction5(e1, e2, e3, e4, e5, v1, v2, v3, v4, v5);
1938
  }
1939
};
1940
 
1941
// Tests for {EXPECT|ASSERT}_PRED_FORMAT5.
1942
 
1943
class Predicate5Test : public testing::Test {
1944
 protected:
1945
  virtual void SetUp() {
1946
    expected_to_finish_ = true;
1947
    finished_ = false;
1948
    n1_ = n2_ = n3_ = n4_ = n5_ = 0;
1949
  }
1950
 
1951
  virtual void TearDown() {
1952
    // Verifies that each of the predicate's arguments was evaluated
1953
    // exactly once.
1954
    EXPECT_EQ(1, n1_) <<
1955
        "The predicate assertion didn't evaluate argument 2 "
1956
        "exactly once.";
1957
    EXPECT_EQ(1, n2_) <<
1958
        "The predicate assertion didn't evaluate argument 3 "
1959
        "exactly once.";
1960
    EXPECT_EQ(1, n3_) <<
1961
        "The predicate assertion didn't evaluate argument 4 "
1962
        "exactly once.";
1963
    EXPECT_EQ(1, n4_) <<
1964
        "The predicate assertion didn't evaluate argument 5 "
1965
        "exactly once.";
1966
    EXPECT_EQ(1, n5_) <<
1967
        "The predicate assertion didn't evaluate argument 6 "
1968
        "exactly once.";
1969
 
1970
    // Verifies that the control flow in the test function is expected.
1971
    if (expected_to_finish_ && !finished_) {
1972
      FAIL() << "The predicate assertion unexpactedly aborted the test.";
1973
    } else if (!expected_to_finish_ && finished_) {
1974
      FAIL() << "The failed predicate assertion didn't abort the test "
1975
                "as expected.";
1976
    }
1977
  }
1978
 
1979
  // true iff the test function is expected to run to finish.
1980
  static bool expected_to_finish_;
1981
 
1982
  // true iff the test function did run to finish.
1983
  static bool finished_;
1984
 
1985
  static int n1_;
1986
  static int n2_;
1987
  static int n3_;
1988
  static int n4_;
1989
  static int n5_;
1990
};
1991
 
1992
bool Predicate5Test::expected_to_finish_;
1993
bool Predicate5Test::finished_;
1994
int Predicate5Test::n1_;
1995
int Predicate5Test::n2_;
1996
int Predicate5Test::n3_;
1997
int Predicate5Test::n4_;
1998
int Predicate5Test::n5_;
1999
 
2000
typedef Predicate5Test EXPECT_PRED_FORMAT5Test;
2001
typedef Predicate5Test ASSERT_PRED_FORMAT5Test;
2002
typedef Predicate5Test EXPECT_PRED5Test;
2003
typedef Predicate5Test ASSERT_PRED5Test;
2004
 
2005
// Tests a successful EXPECT_PRED5 where the
2006
// predicate-formatter is a function on a built-in type (int).
2007
TEST_F(EXPECT_PRED5Test, FunctionOnBuiltInTypeSuccess) {
2008
  EXPECT_PRED5(PredFunction5Int,
2009
               ++n1_,
2010
               ++n2_,
2011
               ++n3_,
2012
               ++n4_,
2013
               ++n5_);
2014
  finished_ = true;
2015
}
2016
 
2017
// Tests a successful EXPECT_PRED5 where the
2018
// predicate-formatter is a function on a user-defined type (Bool).
2019
TEST_F(EXPECT_PRED5Test, FunctionOnUserTypeSuccess) {
2020
  EXPECT_PRED5(PredFunction5Bool,
2021
               Bool(++n1_),
2022
               Bool(++n2_),
2023
               Bool(++n3_),
2024
               Bool(++n4_),
2025
               Bool(++n5_));
2026
  finished_ = true;
2027
}
2028
 
2029
// Tests a successful EXPECT_PRED5 where the
2030
// predicate-formatter is a functor on a built-in type (int).
2031
TEST_F(EXPECT_PRED5Test, FunctorOnBuiltInTypeSuccess) {
2032
  EXPECT_PRED5(PredFunctor5(),
2033
               ++n1_,
2034
               ++n2_,
2035
               ++n3_,
2036
               ++n4_,
2037
               ++n5_);
2038
  finished_ = true;
2039
}
2040
 
2041
// Tests a successful EXPECT_PRED5 where the
2042
// predicate-formatter is a functor on a user-defined type (Bool).
2043
TEST_F(EXPECT_PRED5Test, FunctorOnUserTypeSuccess) {
2044
  EXPECT_PRED5(PredFunctor5(),
2045
               Bool(++n1_),
2046
               Bool(++n2_),
2047
               Bool(++n3_),
2048
               Bool(++n4_),
2049
               Bool(++n5_));
2050
  finished_ = true;
2051
}
2052
 
2053
// Tests a failed EXPECT_PRED5 where the
2054
// predicate-formatter is a function on a built-in type (int).
2055
TEST_F(EXPECT_PRED5Test, FunctionOnBuiltInTypeFailure) {
2056
  EXPECT_NONFATAL_FAILURE({  // NOLINT
2057
    EXPECT_PRED5(PredFunction5Int,
2058
                 n1_++,
2059
                 n2_++,
2060
                 n3_++,
2061
                 n4_++,
2062
                 n5_++);
2063
    finished_ = true;
2064
  }, "");
2065
}
2066
 
2067
// Tests a failed EXPECT_PRED5 where the
2068
// predicate-formatter is a function on a user-defined type (Bool).
2069
TEST_F(EXPECT_PRED5Test, FunctionOnUserTypeFailure) {
2070
  EXPECT_NONFATAL_FAILURE({  // NOLINT
2071
    EXPECT_PRED5(PredFunction5Bool,
2072
                 Bool(n1_++),
2073
                 Bool(n2_++),
2074
                 Bool(n3_++),
2075
                 Bool(n4_++),
2076
                 Bool(n5_++));
2077
    finished_ = true;
2078
  }, "");
2079
}
2080
 
2081
// Tests a failed EXPECT_PRED5 where the
2082
// predicate-formatter is a functor on a built-in type (int).
2083
TEST_F(EXPECT_PRED5Test, FunctorOnBuiltInTypeFailure) {
2084
  EXPECT_NONFATAL_FAILURE({  // NOLINT
2085
    EXPECT_PRED5(PredFunctor5(),
2086
                 n1_++,
2087
                 n2_++,
2088
                 n3_++,
2089
                 n4_++,
2090
                 n5_++);
2091
    finished_ = true;
2092
  }, "");
2093
}
2094
 
2095
// Tests a failed EXPECT_PRED5 where the
2096
// predicate-formatter is a functor on a user-defined type (Bool).
2097
TEST_F(EXPECT_PRED5Test, FunctorOnUserTypeFailure) {
2098
  EXPECT_NONFATAL_FAILURE({  // NOLINT
2099
    EXPECT_PRED5(PredFunctor5(),
2100
                 Bool(n1_++),
2101
                 Bool(n2_++),
2102
                 Bool(n3_++),
2103
                 Bool(n4_++),
2104
                 Bool(n5_++));
2105
    finished_ = true;
2106
  }, "");
2107
}
2108
 
2109
// Tests a successful ASSERT_PRED5 where the
2110
// predicate-formatter is a function on a built-in type (int).
2111
TEST_F(ASSERT_PRED5Test, FunctionOnBuiltInTypeSuccess) {
2112
  ASSERT_PRED5(PredFunction5Int,
2113
               ++n1_,
2114
               ++n2_,
2115
               ++n3_,
2116
               ++n4_,
2117
               ++n5_);
2118
  finished_ = true;
2119
}
2120
 
2121
// Tests a successful ASSERT_PRED5 where the
2122
// predicate-formatter is a function on a user-defined type (Bool).
2123
TEST_F(ASSERT_PRED5Test, FunctionOnUserTypeSuccess) {
2124
  ASSERT_PRED5(PredFunction5Bool,
2125
               Bool(++n1_),
2126
               Bool(++n2_),
2127
               Bool(++n3_),
2128
               Bool(++n4_),
2129
               Bool(++n5_));
2130
  finished_ = true;
2131
}
2132
 
2133
// Tests a successful ASSERT_PRED5 where the
2134
// predicate-formatter is a functor on a built-in type (int).
2135
TEST_F(ASSERT_PRED5Test, FunctorOnBuiltInTypeSuccess) {
2136
  ASSERT_PRED5(PredFunctor5(),
2137
               ++n1_,
2138
               ++n2_,
2139
               ++n3_,
2140
               ++n4_,
2141
               ++n5_);
2142
  finished_ = true;
2143
}
2144
 
2145
// Tests a successful ASSERT_PRED5 where the
2146
// predicate-formatter is a functor on a user-defined type (Bool).
2147
TEST_F(ASSERT_PRED5Test, FunctorOnUserTypeSuccess) {
2148
  ASSERT_PRED5(PredFunctor5(),
2149
               Bool(++n1_),
2150
               Bool(++n2_),
2151
               Bool(++n3_),
2152
               Bool(++n4_),
2153
               Bool(++n5_));
2154
  finished_ = true;
2155
}
2156
 
2157
// Tests a failed ASSERT_PRED5 where the
2158
// predicate-formatter is a function on a built-in type (int).
2159
TEST_F(ASSERT_PRED5Test, FunctionOnBuiltInTypeFailure) {
2160
  expected_to_finish_ = false;
2161
  EXPECT_FATAL_FAILURE({  // NOLINT
2162
    ASSERT_PRED5(PredFunction5Int,
2163
                 n1_++,
2164
                 n2_++,
2165
                 n3_++,
2166
                 n4_++,
2167
                 n5_++);
2168
    finished_ = true;
2169
  }, "");
2170
}
2171
 
2172
// Tests a failed ASSERT_PRED5 where the
2173
// predicate-formatter is a function on a user-defined type (Bool).
2174
TEST_F(ASSERT_PRED5Test, FunctionOnUserTypeFailure) {
2175
  expected_to_finish_ = false;
2176
  EXPECT_FATAL_FAILURE({  // NOLINT
2177
    ASSERT_PRED5(PredFunction5Bool,
2178
                 Bool(n1_++),
2179
                 Bool(n2_++),
2180
                 Bool(n3_++),
2181
                 Bool(n4_++),
2182
                 Bool(n5_++));
2183
    finished_ = true;
2184
  }, "");
2185
}
2186
 
2187
// Tests a failed ASSERT_PRED5 where the
2188
// predicate-formatter is a functor on a built-in type (int).
2189
TEST_F(ASSERT_PRED5Test, FunctorOnBuiltInTypeFailure) {
2190
  expected_to_finish_ = false;
2191
  EXPECT_FATAL_FAILURE({  // NOLINT
2192
    ASSERT_PRED5(PredFunctor5(),
2193
                 n1_++,
2194
                 n2_++,
2195
                 n3_++,
2196
                 n4_++,
2197
                 n5_++);
2198
    finished_ = true;
2199
  }, "");
2200
}
2201
 
2202
// Tests a failed ASSERT_PRED5 where the
2203
// predicate-formatter is a functor on a user-defined type (Bool).
2204
TEST_F(ASSERT_PRED5Test, FunctorOnUserTypeFailure) {
2205
  expected_to_finish_ = false;
2206
  EXPECT_FATAL_FAILURE({  // NOLINT
2207
    ASSERT_PRED5(PredFunctor5(),
2208
                 Bool(n1_++),
2209
                 Bool(n2_++),
2210
                 Bool(n3_++),
2211
                 Bool(n4_++),
2212
                 Bool(n5_++));
2213
    finished_ = true;
2214
  }, "");
2215
}
2216
 
2217
// Tests a successful EXPECT_PRED_FORMAT5 where the
2218
// predicate-formatter is a function on a built-in type (int).
2219
TEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnBuiltInTypeSuccess) {
2220
  EXPECT_PRED_FORMAT5(PredFormatFunction5,
2221
                      ++n1_,
2222
                      ++n2_,
2223
                      ++n3_,
2224
                      ++n4_,
2225
                      ++n5_);
2226
  finished_ = true;
2227
}
2228
 
2229
// Tests a successful EXPECT_PRED_FORMAT5 where the
2230
// predicate-formatter is a function on a user-defined type (Bool).
2231
TEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnUserTypeSuccess) {
2232
  EXPECT_PRED_FORMAT5(PredFormatFunction5,
2233
                      Bool(++n1_),
2234
                      Bool(++n2_),
2235
                      Bool(++n3_),
2236
                      Bool(++n4_),
2237
                      Bool(++n5_));
2238
  finished_ = true;
2239
}
2240
 
2241
// Tests a successful EXPECT_PRED_FORMAT5 where the
2242
// predicate-formatter is a functor on a built-in type (int).
2243
TEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnBuiltInTypeSuccess) {
2244
  EXPECT_PRED_FORMAT5(PredFormatFunctor5(),
2245
                      ++n1_,
2246
                      ++n2_,
2247
                      ++n3_,
2248
                      ++n4_,
2249
                      ++n5_);
2250
  finished_ = true;
2251
}
2252
 
2253
// Tests a successful EXPECT_PRED_FORMAT5 where the
2254
// predicate-formatter is a functor on a user-defined type (Bool).
2255
TEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnUserTypeSuccess) {
2256
  EXPECT_PRED_FORMAT5(PredFormatFunctor5(),
2257
                      Bool(++n1_),
2258
                      Bool(++n2_),
2259
                      Bool(++n3_),
2260
                      Bool(++n4_),
2261
                      Bool(++n5_));
2262
  finished_ = true;
2263
}
2264
 
2265
// Tests a failed EXPECT_PRED_FORMAT5 where the
2266
// predicate-formatter is a function on a built-in type (int).
2267
TEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnBuiltInTypeFailure) {
2268
  EXPECT_NONFATAL_FAILURE({  // NOLINT
2269
    EXPECT_PRED_FORMAT5(PredFormatFunction5,
2270
                        n1_++,
2271
                        n2_++,
2272
                        n3_++,
2273
                        n4_++,
2274
                        n5_++);
2275
    finished_ = true;
2276
  }, "");
2277
}
2278
 
2279
// Tests a failed EXPECT_PRED_FORMAT5 where the
2280
// predicate-formatter is a function on a user-defined type (Bool).
2281
TEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnUserTypeFailure) {
2282
  EXPECT_NONFATAL_FAILURE({  // NOLINT
2283
    EXPECT_PRED_FORMAT5(PredFormatFunction5,
2284
                        Bool(n1_++),
2285
                        Bool(n2_++),
2286
                        Bool(n3_++),
2287
                        Bool(n4_++),
2288
                        Bool(n5_++));
2289
    finished_ = true;
2290
  }, "");
2291
}
2292
 
2293
// Tests a failed EXPECT_PRED_FORMAT5 where the
2294
// predicate-formatter is a functor on a built-in type (int).
2295
TEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnBuiltInTypeFailure) {
2296
  EXPECT_NONFATAL_FAILURE({  // NOLINT
2297
    EXPECT_PRED_FORMAT5(PredFormatFunctor5(),
2298
                        n1_++,
2299
                        n2_++,
2300
                        n3_++,
2301
                        n4_++,
2302
                        n5_++);
2303
    finished_ = true;
2304
  }, "");
2305
}
2306
 
2307
// Tests a failed EXPECT_PRED_FORMAT5 where the
2308
// predicate-formatter is a functor on a user-defined type (Bool).
2309
TEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnUserTypeFailure) {
2310
  EXPECT_NONFATAL_FAILURE({  // NOLINT
2311
    EXPECT_PRED_FORMAT5(PredFormatFunctor5(),
2312
                        Bool(n1_++),
2313
                        Bool(n2_++),
2314
                        Bool(n3_++),
2315
                        Bool(n4_++),
2316
                        Bool(n5_++));
2317
    finished_ = true;
2318
  }, "");
2319
}
2320
 
2321
// Tests a successful ASSERT_PRED_FORMAT5 where the
2322
// predicate-formatter is a function on a built-in type (int).
2323
TEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnBuiltInTypeSuccess) {
2324
  ASSERT_PRED_FORMAT5(PredFormatFunction5,
2325
                      ++n1_,
2326
                      ++n2_,
2327
                      ++n3_,
2328
                      ++n4_,
2329
                      ++n5_);
2330
  finished_ = true;
2331
}
2332
 
2333
// Tests a successful ASSERT_PRED_FORMAT5 where the
2334
// predicate-formatter is a function on a user-defined type (Bool).
2335
TEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnUserTypeSuccess) {
2336
  ASSERT_PRED_FORMAT5(PredFormatFunction5,
2337
                      Bool(++n1_),
2338
                      Bool(++n2_),
2339
                      Bool(++n3_),
2340
                      Bool(++n4_),
2341
                      Bool(++n5_));
2342
  finished_ = true;
2343
}
2344
 
2345
// Tests a successful ASSERT_PRED_FORMAT5 where the
2346
// predicate-formatter is a functor on a built-in type (int).
2347
TEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnBuiltInTypeSuccess) {
2348
  ASSERT_PRED_FORMAT5(PredFormatFunctor5(),
2349
                      ++n1_,
2350
                      ++n2_,
2351
                      ++n3_,
2352
                      ++n4_,
2353
                      ++n5_);
2354
  finished_ = true;
2355
}
2356
 
2357
// Tests a successful ASSERT_PRED_FORMAT5 where the
2358
// predicate-formatter is a functor on a user-defined type (Bool).
2359
TEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnUserTypeSuccess) {
2360
  ASSERT_PRED_FORMAT5(PredFormatFunctor5(),
2361
                      Bool(++n1_),
2362
                      Bool(++n2_),
2363
                      Bool(++n3_),
2364
                      Bool(++n4_),
2365
                      Bool(++n5_));
2366
  finished_ = true;
2367
}
2368
 
2369
// Tests a failed ASSERT_PRED_FORMAT5 where the
2370
// predicate-formatter is a function on a built-in type (int).
2371
TEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnBuiltInTypeFailure) {
2372
  expected_to_finish_ = false;
2373
  EXPECT_FATAL_FAILURE({  // NOLINT
2374
    ASSERT_PRED_FORMAT5(PredFormatFunction5,
2375
                        n1_++,
2376
                        n2_++,
2377
                        n3_++,
2378
                        n4_++,
2379
                        n5_++);
2380
    finished_ = true;
2381
  }, "");
2382
}
2383
 
2384
// Tests a failed ASSERT_PRED_FORMAT5 where the
2385
// predicate-formatter is a function on a user-defined type (Bool).
2386
TEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnUserTypeFailure) {
2387
  expected_to_finish_ = false;
2388
  EXPECT_FATAL_FAILURE({  // NOLINT
2389
    ASSERT_PRED_FORMAT5(PredFormatFunction5,
2390
                        Bool(n1_++),
2391
                        Bool(n2_++),
2392
                        Bool(n3_++),
2393
                        Bool(n4_++),
2394
                        Bool(n5_++));
2395
    finished_ = true;
2396
  }, "");
2397
}
2398
 
2399
// Tests a failed ASSERT_PRED_FORMAT5 where the
2400
// predicate-formatter is a functor on a built-in type (int).
2401
TEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnBuiltInTypeFailure) {
2402
  expected_to_finish_ = false;
2403
  EXPECT_FATAL_FAILURE({  // NOLINT
2404
    ASSERT_PRED_FORMAT5(PredFormatFunctor5(),
2405
                        n1_++,
2406
                        n2_++,
2407
                        n3_++,
2408
                        n4_++,
2409
                        n5_++);
2410
    finished_ = true;
2411
  }, "");
2412
}
2413
 
2414
// Tests a failed ASSERT_PRED_FORMAT5 where the
2415
// predicate-formatter is a functor on a user-defined type (Bool).
2416
TEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnUserTypeFailure) {
2417
  expected_to_finish_ = false;
2418
  EXPECT_FATAL_FAILURE({  // NOLINT
2419
    ASSERT_PRED_FORMAT5(PredFormatFunctor5(),
2420
                        Bool(n1_++),
2421
                        Bool(n2_++),
2422
                        Bool(n3_++),
2423
                        Bool(n4_++),
2424
                        Bool(n5_++));
2425
    finished_ = true;
2426
  }, "");
2427
}

powered by: WebSVN 2.1.0

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