/home/balazs/CLionProjects/prog2/hf_naptar/gtest_lite.h
Ugrás a fájl dokumentációjához.
#ifndef GTEST_LITE_H
#define GTEST_LITE_H
#include "../../../../../usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include/g++-v9/iostream"
#include "../../../../../usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include/g++-v9/cassert"
#include "../../../../../usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include/g++-v9/cmath"
#include "../../../../../usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include/g++-v9/cstring"
#include "../../../../../usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include/g++-v9/limits"
#include "../../../../../usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include/g++-v9/string"
#include "../../../../../usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include/g++-v9/fstream"
#ifdef MEMTRACE
#include "memtrace.h"
#endif
// Két makró az egyes tesztek elé és mögé:
// A két makró a kapcsos zárójelekkel egy új blokkot hoz létre, amiben
// a nevek lokálisak, így elkerülhető a névütközés.
#define TEST(C, N) { gtest_lite::test.begin(#C"."#N);
#define END gtest_lite::test.end(); }
// Eredmények vizsgálatát segítő makrók.
// A paraméterek és a funkciók a gtest keretrendszerrel megegyeznek.
#define SUCCEED() gtest_lite::test.tstatus(true, __FILE__, __LINE__)
#define FAIL() gtest_lite::test.tstatus(false, __FILE__, __LINE__)
#define EXPECT_EQ(expected, actual) EXPECTCMP((expected) == (actual), expected, actual)
#define EXPECT_NE(expected, actual) EXPECTNE((expected) != (actual), expected, actual)
#define EXPECT_TRUE(actual) EXPECTCMP(actual, "true", actual)
#define EXPECT_FALSE(actual) EXPECTCMP(!(actual), "false", actual)
#define EXPECT_DOUBLE_EQ(expected, actual) EXPECTCMP(gtest_lite::almostEQ(expected, actual), expected, actual)
#define EXPECT_STREQ(expected, actual) ((actual != NULL) ? \
EXPECTCMP(strcmp(expected, actual) == 0, expected, actual) : \
EXPECT(false, "STR_EQ NULL pointert kapott!"))
#define EXPECT_STRNE(expected, actual) ((actual != NULL) ? \
EXPECTNE(strcmp(expected, actual) != 0, expected, actual) : \
EXPECT(false, "STR_EQ NULL pointert kapott!"))
#define EXPECT_THROW(statement, exception_type) try { gtest_lite::test.tmp = false; statement; } \
catch (exception_type) { gtest_lite::test.tmp = true; } \
catch (...) { } \
EXPECTTHROW(statement, "kivetelt dob.", "nem dobott '"#exception_type"' kivetelt.")
#define EXPECT_THROW_THROW(statement, exception_type) try { gtest_lite::test.tmp = false; statement; } \
catch (exception_type) { gtest_lite::test.tmp = true; throw; } \
EXPECTTHROW(statement, "kivetelt dob.", "nem dobott '"#exception_type"' kivetelt.")
#define EXPECT_NO_THROW(statement) try { gtest_lite::test.tmp = true; statement; } \
catch (...) { gtest_lite::test.tmp = false; }\
EXPECTTHROW(statement, "nem dob kivetelt.", "kivetelt dobott.")
#define CREATE_Has_(X) \
template<typename T> struct Has_##X { \
struct Fallback { int X; }; \
struct Derived : T, Fallback {}; \
template<typename C, C> struct ChT; \
template<typename D> static char (&f(ChT<int Fallback::*, &D::X>*))[1]; \
template<typename D> static char (&f(...))[2]; \
static bool const member = sizeof(f<Derived>(0)) == 2; \
};
void hasMember(...) {}
#define EXPECT(expr, msg) gtest_lite::test.expect(expr, __FILE__, __LINE__, #msg)
#define EXPECTEXP(expr, exp, act) gtest_lite::test.expect(expr, __FILE__, __LINE__, #expr) \
<< "**A(z) '"#act << "'kifejezes\n** erteke: " << std::boolalpha << (act) \
<< "\n** elvart: " << (exp) << std::endl
#define EXPECTCMP(expr, exp, act) gtest_lite::test.expect(expr, __FILE__, __LINE__, #act) \
<< "**A(z) '"#act << "'kifejezes\n** erteke: " << std::boolalpha << (act) \
<< "\n** elvart: " << (exp) << std::endl
#define EXPECTNE(expr, exp, act) gtest_lite::test.expect(expr, __FILE__, __LINE__, #act) \
<< "**A(z) '"#act << "'kifejezes\n** erteke: " << std::boolalpha << (act) \
<< "\n** elvart, hogy nem: " << (exp) << std::endl
#define EXPECTTHROW(statement, exp, act) gtest_lite::test.expect(gtest_lite::test.tmp, __FILE__, __LINE__, #statement) \
<< "**Az utasitas " << (act) \
<< "\n**Azt vartuk, hogy " << (exp) << std::endl
#ifdef CPORTA
#define GTINIT(is) \
int magic; \
is >> magic;
#else
#define GTINIT(IS)
#endif // CPORTA
#ifdef CPORTA
#define GTEND(os) \
os << magic << (gtest_lite::test.fail() ? " NO" : " OK?") << std::endl;
#else
#define GTEND(os)
#endif // CPORTA
namespace gtest_lite {
struct Test {
int sum;
int failed;
bool status;
bool tmp;
std::string name;
std::fstream null;
Test() :sum(0), failed(0), status(false), null("/dev/null") {}
void begin(const char *n) {
name = n; status = true;
#ifndef CPORTA
std::cerr << "\n---> " << name << std::endl;
#endif // CPORTA
++sum;
}
void end() {
#ifdef CPORTA
if (!status)
#endif // CPORTA
std::cerr << (status ? " SIKERES" : "** HIBAS ****") << "\t" << name << " <---" << std::endl;
}
bool fail() { return failed; }
std::ostream& expect(bool st, const char *file, int line, const char *expr) {
if (!st) {
++failed;
status = false;
std::string str(file);
size_t i = str.rfind("\\");
if (i == std::string::npos) i = str.rfind("/");
if (i == std::string::npos) i = 0; else i++;
return std::cerr << "\n**** HIBA: " << &file[i] << "(" << line << "): " << expr << " ****" << std::endl;
}
return null;
}
std::ostream& tstatus(bool st, const char *file, int line) {
if (!st) {
++failed;
status = false;
}
std::string str(file);
size_t i = str.rfind("\\");
if (i == std::string::npos) i = str.rfind("/");
if (i == std::string::npos) i = 0; else i++;
return std::cerr << (status ? "** SIKERES" : "** HIBAS") << " TESZT "<< &file[i] << "(" << line << ") **" << std::endl;
}
~Test() {
#ifdef CPORTA
if (failed)
#endif // CPORTA
std::cerr << "\n==== TESZT VEGE ==== HIBAS/OSSZES: " << failed << "/" << sum << std::endl;
}
};
static Test test;
inline bool almostEQ(double a, double b) {
// eps: ha a relatív, vagy abszolút hiba ettől kisebb, akkor elfogadjuk
double eps = 10 * std::numeric_limits<double>::epsilon(); // 10-szer a legkisebb érték
if (a == b) return true;
if (fabs(a - b) < eps)
return true;
double aa = fabs(a);
double ba = fabs(b);
if (aa < ba) {
aa = ba;
ba = fabs(a);
}
return (aa - ba) < aa * eps;
}
} // namespace gtest_lite
#endif // GTEST_LITE_H
Naptar
A naptár osztály tárolja azoknak a napoknak a dátumát,amely napok foglaltak már. Ha az osztály kap eg...
Definition: Naptar.h:169
gtest_lite::Test::status
bool status
éppen futó teszt státusza.
Definition: gtest_lite.h:171
gtest_lite::Test::tmp
bool tmp
temp a kivételkezeléshez;
Definition: gtest_lite.h:172
hasMember
void hasMember(...)
Segédfüggvény egy publikus adattag, vagy tagfüggvény létezésének tesztelésére fordítási időben.
Definition: gtest_lite.h:116
gtest_lite::Test::begin
void begin(const char *n)
Teszt kezdete.
Definition: gtest_lite.h:178
gtest_lite::Test::null
std::fstream null
nyelő, ha nem kell kiírni semmit
Definition: gtest_lite.h:174
gtest_lite::Test::tstatus
std::ostream & tstatus(bool st, const char *file, int line)
Eredményt adminisztráló tagfüggvény True a jó eset, mindig ír.
Definition: gtest_lite.h:210
gtest_lite::Test::end
void end()
Teszt vége.
Definition: gtest_lite.h:186
gtest_lite
gtest_lite: a keretrendszer függvényinek és objektumainak névtere
Definition: gtest_lite.h:163
gtest_lite::Test::sum
int sum
tesztek számlálója
Definition: gtest_lite.h:169
gtest_lite::Test::failed
int failed
hibás tesztek
Definition: gtest_lite.h:170
gtest_lite::Test::~Test
~Test()
Destruktor.
Definition: gtest_lite.h:223
gtest_lite::Test::name
std::string name
éppen futó teszt neve.
Definition: gtest_lite.h:173
gtest_lite::Test::expect
std::ostream & expect(bool st, const char *file, int line, const char *expr)
Eredményt adminisztráló tagfüggvény True a jó eset.
Definition: gtest_lite.h:196
gtest_lite::Test
Definition: gtest_lite.h:168
gtest_lite::almostEQ
bool almostEQ(double a, double b)
Definition: gtest_lite.h:238