Skip to content

Commit 974186e

Browse files
authored
helper for combinatorial tests (#16954)
1 parent af8199d commit 974186e

File tree

2 files changed

+81
-18
lines changed

2 files changed

+81
-18
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
#pragma once
2+
3+
4+
#define Y_UNIT_TEST_COMBINATOR_1(BaseName, Flag1) \
5+
template<bool> void BaseName(NUnitTest::TTestContext&); \
6+
struct TTestRegistration##BaseName { \
7+
TTestRegistration##BaseName() { \
8+
TCurrentTest::AddTest(#BaseName "-" #Flag1, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false>), false); \
9+
TCurrentTest::AddTest(#BaseName "+" #Flag1, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true>), false); \
10+
} \
11+
}; \
12+
static TTestRegistration##BaseName testRegistration##BaseName; \
13+
template<bool Flag1> \
14+
void BaseName(NUnitTest::TTestContext&)
15+
16+
#define Y_UNIT_TEST_COMBINATOR_2(BaseName, Flag1, Flag2) \
17+
template<bool, bool> void BaseName(NUnitTest::TTestContext&); \
18+
struct TTestRegistration##BaseName { \
19+
TTestRegistration##BaseName() { \
20+
TCurrentTest::AddTest(#BaseName "-" #Flag1 "-" #Flag2, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false, false>), false); \
21+
TCurrentTest::AddTest(#BaseName "+" #Flag1 "-" #Flag2, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true, false>), false); \
22+
TCurrentTest::AddTest(#BaseName "-" #Flag1 "+" #Flag2, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false, true>), false); \
23+
TCurrentTest::AddTest(#BaseName "+" #Flag1 "+" #Flag2, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true, true>), false); \
24+
} \
25+
}; \
26+
static TTestRegistration##BaseName testRegistration##BaseName; \
27+
template<bool Flag1, bool Flag2> \
28+
void BaseName(NUnitTest::TTestContext&)
29+
30+
31+
#define Y_UNIT_TEST_COMBINATOR_3(BaseName, Flag1, Flag2, Flag3) \
32+
template<bool, bool, bool> void BaseName(NUnitTest::TTestContext&); \
33+
struct TTestRegistration##BaseName { \
34+
TTestRegistration##BaseName() { \
35+
TCurrentTest::AddTest(#BaseName "-" #Flag1 "-" #Flag2 "-" #Flag3, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false, false, false>), false); \
36+
TCurrentTest::AddTest(#BaseName "+" #Flag1 "-" #Flag2 "-" #Flag3, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true, false, false>), false); \
37+
TCurrentTest::AddTest(#BaseName "-" #Flag1 "+" #Flag2 "-" #Flag3, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false, true, false>), false); \
38+
TCurrentTest::AddTest(#BaseName "+" #Flag1 "+" #Flag2 "-" #Flag3, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true, true, false>), false); \
39+
TCurrentTest::AddTest(#BaseName "-" #Flag1 "-" #Flag2 "+" #Flag3, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false, false, true>), false); \
40+
TCurrentTest::AddTest(#BaseName "+" #Flag1 "-" #Flag2 "+" #Flag3, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true, false, true>), false); \
41+
TCurrentTest::AddTest(#BaseName "-" #Flag1 "+" #Flag2 "+" #Flag3, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false, true, true>), false); \
42+
TCurrentTest::AddTest(#BaseName "+" #Flag1 "+" #Flag2 "+" #Flag3, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true, true, true>), false); \
43+
} \
44+
}; \
45+
static TTestRegistration##BaseName testRegistration##BaseName; \
46+
template<bool Flag1, bool Flag2, bool Flag3> \
47+
void BaseName(NUnitTest::TTestContext&)
48+
49+
#define Y_UNIT_TEST_COMBINATOR_4(BaseName, Flag1, Flag2, Flag3, Flag4) \
50+
template<bool, bool, bool, bool> void BaseName(NUnitTest::TTestContext&); \
51+
struct TTestRegistration##BaseName { \
52+
TTestRegistration##BaseName() { \
53+
TCurrentTest::AddTest(#BaseName "-" #Flag1 "-" #Flag2 "-" #Flag3 "-" #Flag4, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false, false, false, false>), false); \
54+
TCurrentTest::AddTest(#BaseName "+" #Flag1 "-" #Flag2 "-" #Flag3 "-" #Flag4, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true, false, false, false>), false); \
55+
TCurrentTest::AddTest(#BaseName "-" #Flag1 "+" #Flag2 "-" #Flag3 "-" #Flag4, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false, true, false, false>), false); \
56+
TCurrentTest::AddTest(#BaseName "+" #Flag1 "+" #Flag2 "-" #Flag3 "-" #Flag4, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true, true, false, false>), false); \
57+
TCurrentTest::AddTest(#BaseName "-" #Flag1 "-" #Flag2 "+" #Flag3 "-" #Flag4, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false, false, true, false>), false); \
58+
TCurrentTest::AddTest(#BaseName "+" #Flag1 "-" #Flag2 "+" #Flag3 "-" #Flag4, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true, false, true, false>), false); \
59+
TCurrentTest::AddTest(#BaseName "-" #Flag1 "+" #Flag2 "+" #Flag3 "-" #Flag4, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false, true, true, false>), false); \
60+
TCurrentTest::AddTest(#BaseName "+" #Flag1 "+" #Flag2 "+" #Flag3 "-" #Flag4, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true, true, true, false>), false); \
61+
TCurrentTest::AddTest(#BaseName "-" #Flag1 "-" #Flag2 "-" #Flag3 "+" #Flag4, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false, false, false, true>), false); \
62+
TCurrentTest::AddTest(#BaseName "+" #Flag1 "-" #Flag2 "-" #Flag3 "+" #Flag4, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true, false, false, true>), false); \
63+
TCurrentTest::AddTest(#BaseName "-" #Flag1 "+" #Flag2 "-" #Flag3 "+" #Flag4, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false, true, false, true>), false); \
64+
TCurrentTest::AddTest(#BaseName "+" #Flag1 "+" #Flag2 "-" #Flag3 "+" #Flag4, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true, true, false, true>), false); \
65+
TCurrentTest::AddTest(#BaseName "-" #Flag1 "-" #Flag2 "+" #Flag3 "+" #Flag4, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false, false, true, true>), false); \
66+
TCurrentTest::AddTest(#BaseName "+" #Flag1 "-" #Flag2 "+" #Flag3 "+" #Flag4, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true, false, true, true>), false); \
67+
TCurrentTest::AddTest(#BaseName "-" #Flag1 "+" #Flag2 "+" #Flag3 "+" #Flag4, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false, true, true, true>), false); \
68+
TCurrentTest::AddTest(#BaseName "+" #Flag1 "+" #Flag2 "+" #Flag3 "+" #Flag4, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true, true, true, true>), false); \
69+
} \
70+
}; \
71+
static TTestRegistration##BaseName testRegistration##BaseName; \
72+
template<bool Flag1, bool Flag2, bool Flag3, bool Flag4> \
73+
void BaseName(NUnitTest::TTestContext&)
74+
75+
76+
#define Y_UNIT_TEST_DUO Y_UNIT_TEST_COMBINATOR_1
77+
#define Y_UNIT_TEST_QUATRO Y_UNIT_TEST_COMBINATOR_2
78+
#define Y_UNIT_TEST_OCTO Y_UNIT_TEST_COMBINATOR_3
79+
#define Y_UNIT_TEST_SEDECIM Y_UNIT_TEST_COMBINATOR_4
80+

ydb/core/tx/columnshard/ut_schema/ut_columnshard_schema.cpp

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <ydb/core/tx/tx_proxy/proxy.h>
77
#include <ydb/core/tx/schemeshard/schemeshard.h>
88
#include <ydb/core/tx/columnshard/test_helper/shard_reader.h>
9+
#include <ydb/core/tx/columnshard/test_helper/test_combinator.h>
910
#include <ydb/core/tx/columnshard/hooks/abstract/abstract.h>
1011
#include <ydb/core/tx/columnshard/hooks/testing/controller.h>
1112
#include <ydb/core/tx/columnshard/blobs_reader/actor.h>
@@ -20,24 +21,6 @@
2021
#include <library/cpp/deprecated/atomic/atomic.h>
2122
#include <library/cpp/testing/hook/hook.h>
2223

23-
#define Y_UNIT_TEST_OCTO(BaseName, Flag1, Flag2, Flag3) \
24-
template<bool, bool, bool> void BaseName(NUnitTest::TTestContext&); \
25-
struct TTestRegistration##BaseName { \
26-
TTestRegistration##BaseName() { \
27-
TCurrentTest::AddTest(#BaseName "-" #Flag1 "-" #Flag2 "-" #Flag3, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false, false, false>), false); \
28-
TCurrentTest::AddTest(#BaseName "+" #Flag1 "-" #Flag2 "-" #Flag3, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true, false, false>), false); \
29-
TCurrentTest::AddTest(#BaseName "-" #Flag1 "+" #Flag2 "-" #Flag3, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false, true, false>), false); \
30-
TCurrentTest::AddTest(#BaseName "+" #Flag1 "+" #Flag2 "-" #Flag3, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true, true, false>), false); \
31-
TCurrentTest::AddTest(#BaseName "-" #Flag1 "-" #Flag2 "+" #Flag3, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false, false, true>), false); \
32-
TCurrentTest::AddTest(#BaseName "+" #Flag1 "-" #Flag2 "+" #Flag3, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true, false, true>), false); \
33-
TCurrentTest::AddTest(#BaseName "-" #Flag1 "+" #Flag2 "+" #Flag3, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<false, true, true>), false); \
34-
TCurrentTest::AddTest(#BaseName "+" #Flag1 "+" #Flag2 "+" #Flag3, static_cast<void (*)(NUnitTest::TTestContext&)>(&BaseName<true, true, true>), false); \
35-
} \
36-
}; \
37-
static TTestRegistration##BaseName testRegistration##BaseName; \
38-
template<bool Flag1, bool Flag2, bool Flag3> \
39-
void BaseName(NUnitTest::TTestContext&)
40-
4124

4225
namespace NKikimr {
4326

0 commit comments

Comments
 (0)