Use variadic macros for kak_assert to remove the need for COMMA

This commit is contained in:
Maxime Coste 2016-05-17 19:39:55 +01:00
parent 3b6d6956e2
commit f51ba6089c
6 changed files with 27 additions and 28 deletions

View File

@ -15,15 +15,14 @@ void on_assert_failed(const char* message);
#define STRINGIFY(X) #X #define STRINGIFY(X) #X
#define TOSTRING(X) STRINGIFY(X) #define TOSTRING(X) STRINGIFY(X)
#define COMMA ,
#ifdef KAK_DEBUG #ifdef KAK_DEBUG
#define kak_assert(condition) \ #define kak_assert(...) \
if (not (condition)) \ if (not (__VA_ARGS__)) \
on_assert_failed("assert failed \"" #condition \ on_assert_failed("assert failed \"" #__VA_ARGS__ \
"\" at " __FILE__ ":" TOSTRING(__LINE__)) "\" at " __FILE__ ":" TOSTRING(__LINE__))
#else #else
#define kak_assert(condition) #define kak_assert(...)
#endif #endif

View File

@ -639,13 +639,13 @@ UnitTest test_buffer{[]()
BufferIterator pos = buffer.begin(); BufferIterator pos = buffer.begin();
kak_assert(*pos == 'a'); kak_assert(*pos == 'a');
pos += 6; pos += 6;
kak_assert(pos.coord() == ByteCoord{0 COMMA 6}); kak_assert(pos.coord() == ByteCoord{0, 6});
++pos; ++pos;
kak_assert(pos.coord() == ByteCoord{1 COMMA 0}); kak_assert(pos.coord() == ByteCoord{1, 0});
--pos; --pos;
kak_assert(pos.coord() == ByteCoord{0 COMMA 6}); kak_assert(pos.coord() == ByteCoord{0, 6});
pos += 1; pos += 1;
kak_assert(pos.coord() == ByteCoord{1 COMMA 0}); kak_assert(pos.coord() == ByteCoord{1, 0});
buffer.insert(pos.coord(), "tchou kanaky\n"); buffer.insert(pos.coord(), "tchou kanaky\n");
kak_assert(buffer.line_count() == 5); kak_assert(buffer.line_count() == 5);
BufferIterator pos2 = buffer.end(); BufferIterator pos2 = buffer.end();

View File

@ -110,7 +110,7 @@ UnitTest test_line_modifications{[]()
buffer.erase({1, 0}, {2, 0}); buffer.erase({1, 0}, {2, 0});
auto modifs = compute_line_modifications(buffer, ts); auto modifs = compute_line_modifications(buffer, ts);
kak_assert(modifs.size() == 1 and modifs[0] == LineModification{ 1 COMMA 1 COMMA 1 COMMA 0 }); kak_assert(modifs.size() == 1 and modifs[0] == LineModification{ 1, 1, 1, 0 });
} }
{ {
@ -119,7 +119,7 @@ UnitTest test_line_modifications{[]()
buffer.insert({1, 7}, "line 3"); buffer.insert({1, 7}, "line 3");
auto modifs = compute_line_modifications(buffer, ts); auto modifs = compute_line_modifications(buffer, ts);
kak_assert(modifs.size() == 1 and modifs[0] == LineModification{ 2 COMMA 2 COMMA 0 COMMA 1 }); kak_assert(modifs.size() == 1 and modifs[0] == LineModification{ 2, 2, 0, 1 });
} }
{ {
@ -130,7 +130,7 @@ UnitTest test_line_modifications{[]()
buffer.erase({0, 0}, {1, 0}); buffer.erase({0, 0}, {1, 0});
auto modifs = compute_line_modifications(buffer, ts); auto modifs = compute_line_modifications(buffer, ts);
kak_assert(modifs.size() == 1 and modifs[0] == LineModification{ 0 COMMA 0 COMMA 2 COMMA 2 }); kak_assert(modifs.size() == 1 and modifs[0] == LineModification{ 0, 0, 2, 2 });
} }
{ {
@ -142,13 +142,13 @@ UnitTest test_line_modifications{[]()
buffer.erase({0,0}, {1,0}); buffer.erase({0,0}, {1,0});
{ {
auto modifs = compute_line_modifications(buffer, ts); auto modifs = compute_line_modifications(buffer, ts);
kak_assert(modifs.size() == 1 and modifs[0] == LineModification{ 0 COMMA 0 COMMA 4 COMMA 3 }); kak_assert(modifs.size() == 1 and modifs[0] == LineModification{ 0, 0, 4, 3 });
} }
buffer.insert({3,0}, "newline 4\n"); buffer.insert({3,0}, "newline 4\n");
{ {
auto modifs = compute_line_modifications(buffer, ts); auto modifs = compute_line_modifications(buffer, ts);
kak_assert(modifs.size() == 1 and modifs[0] == LineModification{ 0 COMMA 0 COMMA 4 COMMA 4 }); kak_assert(modifs.size() == 1 and modifs[0] == LineModification{ 0, 0, 4, 4 });
} }
} }
@ -159,7 +159,7 @@ UnitTest test_line_modifications{[]()
buffer.insert({0,1}, "e"); buffer.insert({0,1}, "e");
buffer.insert({0,2}, "w"); buffer.insert({0,2}, "w");
auto modifs = compute_line_modifications(buffer, ts); auto modifs = compute_line_modifications(buffer, ts);
kak_assert(modifs.size() == 1 and modifs[0] == LineModification{ 0 COMMA 0 COMMA 1 COMMA 1 }); kak_assert(modifs.size() == 1 and modifs[0] == LineModification{ 0, 0, 1, 1 });
} }
}}; }};

View File

@ -611,7 +611,7 @@ void NCursesUI::draw_menu()
draw_line(m_menu.win, item, 0, column_width, draw_line(m_menu.win, item, 0, column_width,
item_idx == m_menu.selected_item ? m_menu.fg : m_menu.bg); item_idx == m_menu.selected_item ? m_menu.fg : m_menu.bg);
const CharCount pad = column_width - item.length(); const CharCount pad = column_width - item.length();
add_str(m_menu.win, String{' ' COMMA pad}); add_str(m_menu.win, String{' ', pad});
} }
const bool is_mark = line >= mark_line and const bool is_mark = line >= mark_line and
line < mark_line + mark_height; line < mark_line + mark_height;

View File

@ -693,41 +693,41 @@ UnitTest test_find_surrounding{[]()
{ {
auto res = find_surrounding(s, s.begin() + 10, '{', '}', auto res = find_surrounding(s, s.begin() + 10, '{', '}',
ObjectFlags::ToBegin | ObjectFlags::ToEnd, 0); ObjectFlags::ToBegin | ObjectFlags::ToEnd, 0);
kak_assert(res and StringView{res->first COMMA res->second+1} == "{ toi[] }"); kak_assert(res and StringView{res->first, res->second+1} == "{ toi[] }");
} }
{ {
auto res = find_surrounding(s, s.begin() + 10, '[', ']', auto res = find_surrounding(s, s.begin() + 10, '[', ']',
ObjectFlags::ToBegin | ObjectFlags::ToEnd | ObjectFlags::Inner, 0); ObjectFlags::ToBegin | ObjectFlags::ToEnd | ObjectFlags::Inner, 0);
kak_assert(res and StringView{res->first COMMA res->second+1} == "salut { toi[] }"); kak_assert(res and StringView{res->first, res->second+1} == "salut { toi[] }");
} }
{ {
auto res = find_surrounding(s, s.begin(), '[', ']', auto res = find_surrounding(s, s.begin(), '[', ']',
ObjectFlags::ToBegin | ObjectFlags::ToEnd, 0); ObjectFlags::ToBegin | ObjectFlags::ToEnd, 0);
kak_assert(res and StringView{res->first COMMA res->second+1} == "[salut { toi[] }]"); kak_assert(res and StringView{res->first, res->second+1} == "[salut { toi[] }]");
} }
{ {
auto res = find_surrounding(s, s.begin()+7, '{', '}', auto res = find_surrounding(s, s.begin()+7, '{', '}',
ObjectFlags::ToBegin | ObjectFlags::ToEnd, 0); ObjectFlags::ToBegin | ObjectFlags::ToEnd, 0);
kak_assert(res and StringView{res->first COMMA res->second+1} == "{ toi[] }"); kak_assert(res and StringView{res->first, res->second+1} == "{ toi[] }");
} }
{ {
auto res = find_surrounding(s, s.begin() + 12, '[', ']', auto res = find_surrounding(s, s.begin() + 12, '[', ']',
ObjectFlags::ToBegin | ObjectFlags::ToEnd | ObjectFlags::Inner, 0); ObjectFlags::ToBegin | ObjectFlags::ToEnd | ObjectFlags::Inner, 0);
kak_assert(res and StringView{res->first COMMA res->second+1} == "]"); kak_assert(res and StringView{res->first, res->second+1} == "]");
} }
{ {
auto res = find_surrounding(s, s.begin() + 14, '[', ']', auto res = find_surrounding(s, s.begin() + 14, '[', ']',
ObjectFlags::ToBegin | ObjectFlags::ToEnd, 0); ObjectFlags::ToBegin | ObjectFlags::ToEnd, 0);
kak_assert(res and StringView{res->first COMMA res->second+1} == "[salut { toi[] }]"); kak_assert(res and StringView{res->first, res->second+1} == "[salut { toi[] }]");
} }
{ {
auto res = find_surrounding(s, s.begin() + 1, '[', ']', ObjectFlags::ToBegin, 0); auto res = find_surrounding(s, s.begin() + 1, '[', ']', ObjectFlags::ToBegin, 0);
kak_assert(res and StringView{res->second COMMA res->first+1} == "[s"); kak_assert(res and StringView{res->second, res->first+1} == "[s");
} }
s = "[]"; s = "[]";
{ {
auto res = find_surrounding(s, s.begin() + 1, '[', ']', ObjectFlags::ToBegin | ObjectFlags::ToEnd, 0); auto res = find_surrounding(s, s.begin() + 1, '[', ']', ObjectFlags::ToBegin | ObjectFlags::ToEnd, 0);
kak_assert(res and StringView{res->first COMMA res->second+1} == "[]"); kak_assert(res and StringView{res->first, res->second+1} == "[]");
} }
s = "[*][] hehe"; s = "[*][] hehe";
{ {
@ -738,7 +738,7 @@ UnitTest test_find_surrounding{[]()
{ {
auto res = find_surrounding(s, s.begin() + 6, "begin", "end", auto res = find_surrounding(s, s.begin() + 6, "begin", "end",
ObjectFlags::ToBegin | ObjectFlags::ToEnd, 0); ObjectFlags::ToBegin | ObjectFlags::ToEnd, 0);
kak_assert(res and StringView{res->first COMMA res->second+1} == s); kak_assert(res and StringView{res->first, res->second+1} == s);
} }
}}; }};

View File

@ -163,17 +163,17 @@ UnitTest test_word_db{[]()
WordDB word_db(buffer); WordDB word_db(buffer);
auto res = word_db.find_matching(""); auto res = word_db.find_matching("");
std::sort(res.begin(), res.end(), cmp_words); std::sort(res.begin(), res.end(), cmp_words);
kak_assert(eq(res, WordList{ "allo" COMMA "kanaky" COMMA "mutch" COMMA "tchaa" COMMA "tchou" })); kak_assert(eq(res, WordList{ "allo", "kanaky", "mutch", "tchaa", "tchou" }));
kak_assert(word_db.get_word_occurences("tchou") == 3); kak_assert(word_db.get_word_occurences("tchou") == 3);
kak_assert(word_db.get_word_occurences("allo") == 1); kak_assert(word_db.get_word_occurences("allo") == 1);
buffer.erase({1, 6}, {4, 0}); buffer.erase({1, 6}, {4, 0});
res = word_db.find_matching(""); res = word_db.find_matching("");
std::sort(res.begin(), res.end(), cmp_words); std::sort(res.begin(), res.end(), cmp_words);
kak_assert(eq(res, WordList{ "allo" COMMA "mutch" COMMA "tchou" })); kak_assert(eq(res, WordList{ "allo", "mutch", "tchou" }));
buffer.insert({1, 0}, "re"); buffer.insert({1, 0}, "re");
res = word_db.find_matching(""); res = word_db.find_matching("");
std::sort(res.begin(), res.end(), cmp_words); std::sort(res.begin(), res.end(), cmp_words);
kak_assert(eq(res, WordList{ "allo" COMMA "mutch" COMMA "retchou" COMMA "tchou" })); kak_assert(eq(res, WordList{ "allo", "mutch", "retchou", "tchou" }));
}}; }};
} }