2 #include "llvm/Support/raw_ostream.h"
14 static void BitBucket(const char *, ...) {}
16 static void PrintFailureDetails(const char *format
, ...) {
20 vfprintf(stderr
, format
, ap
);
25 FailureDetailPrinter
Test(
26 const char *file
, int line
, const char *predicate
, bool pass
) {
32 fprintf(stderr
, "%s:%d: FAIL: %s\n", file
, line
, predicate
);
33 return PrintFailureDetails
;
37 FailureDetailPrinter
Match(const char *file
, int line
, std::uint64_t want
,
38 const char *gots
, std::uint64_t got
) {
44 fprintf(stderr
, "%s:%d: FAIL: %s == 0x%jx, not 0x%jx\n", file
, line
, gots
,
45 static_cast<std::uintmax_t>(got
), static_cast<std::uintmax_t>(want
));
46 return PrintFailureDetails
;
50 FailureDetailPrinter
Match(const char *file
, int line
, const char *want
,
51 const char *gots
, const std::string
&got
) {
57 fprintf(stderr
, "%s:%d: FAIL: %s == \"%s\", not \"%s\"\n", file
, line
, gots
,
59 return PrintFailureDetails
;
63 FailureDetailPrinter
Match(const char *file
, int line
, const std::string
&want
,
64 const char *gots
, const std::string
&got
) {
65 return Match(file
, line
, want
.data(), gots
, got
);
68 FailureDetailPrinter
Compare(const char *file
, int line
, const char *xs
,
69 const char *rel
, const char *ys
, std::uint64_t x
, std::uint64_t y
) {
80 } else if (*rel
== '>') {
86 } else if (*rel
== '=') {
88 } else if (*rel
== '!') {
96 fprintf(stderr
, "%s:%d: FAIL: %s[0x%jx] %s %s[0x%jx]\n", file
, line
, xs
,
97 static_cast<std::uintmax_t>(x
), rel
, ys
,
98 static_cast<std::uintmax_t>(y
));
99 return PrintFailureDetails
;
106 llvm::outs() << "single test PASSES\n";
108 llvm::outs() << "all " << passes
<< " tests PASS\n";
114 llvm::errs() << "1 test passes, ";
116 llvm::errs() << passes
<< " tests pass, ";
119 llvm::errs() << "1 test FAILS\n";
121 llvm::errs() << failures
<< " tests FAIL\n";
123 passes
= failures
= 0;
127 } // namespace testing