summaryrefslogtreecommitdiff
path: root/src/macro.h
blob: 042138851aff4e2e8fa46061e8234b07cc269a24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#pragma once

#define KEL_CONCAT_(x, y) x##y
#define KEL_CONCAT(x, y) KEL_CONCAT_(x, y)

#define KEL_UNIQUE_NAME(prefix) KEL_CONCAT(prefix, __LINE__)

#define KEL_TEST(description) \
	class KEL_UNIQUE_NAME(test_case) : public ::keltest::test_case { \
		public: \
			KEL_UNIQUE_NAME(test_case)(): ::keltest::test_case(__FILE__,__LINE__,description) {} \
		void run() override; \
	} KEL_UNIQUE_NAME(test_case_); \
	void KEL_UNIQUE_NAME(test_case)::run()

#define KEL_EXPECT(expr, msg_split) \
		if( ! (expr) ){ \
			auto msg = msg_split; \
			throw std::runtime_error{std::string{msg}}; \
		}