1413
This commit is contained in:
parent
d1bd043922
commit
5af8334699
31
003trace.cc
31
003trace.cc
|
@ -184,6 +184,8 @@ struct lease_tracer {
|
|||
START_TRACING_UNTIL_END_OF_SCOPE
|
||||
//? Trace_stream->dump_layer = "all"; //? 1
|
||||
|
||||
#define CHECK_TRACE_CONTENTS(...) check_trace_contents(__FUNCTION__, __FILE__, __LINE__, __VA_ARGS__)
|
||||
|
||||
:(before "End Tracing")
|
||||
bool check_trace_contents(string FUNCTION, string FILE, int LINE, string expected) { // missing layer == anywhere
|
||||
vector<string> expected_lines = split(expected, "");
|
||||
|
@ -195,7 +197,7 @@ bool check_trace_contents(string FUNCTION, string FILE, int LINE, string expecte
|
|||
string layer, contents;
|
||||
split_layer_contents(expected_lines.at(curr_expected_line), &layer, &contents);
|
||||
for (vector<pair<string, string> >::iterator p = Trace_stream->past_lines.begin(); p != Trace_stream->past_lines.end(); ++p) {
|
||||
if (!layer.empty() && layer != p->first)
|
||||
if (layer != p->first)
|
||||
continue;
|
||||
|
||||
if (contents != p->second)
|
||||
|
@ -230,33 +232,6 @@ void split_layer_contents(const string& s, string* layer, string* contents) {
|
|||
|
||||
|
||||
|
||||
bool check_trace_contents(string FUNCTION, string FILE, int LINE, string layer, string expected) { // empty layer == everything
|
||||
vector<string> expected_lines = split(expected, "");
|
||||
long long int curr_expected_line = 0;
|
||||
while (curr_expected_line < SIZE(expected_lines) && expected_lines.at(curr_expected_line).empty())
|
||||
++curr_expected_line;
|
||||
if (curr_expected_line == SIZE(expected_lines)) return true;
|
||||
Trace_stream->newline();
|
||||
for (vector<pair<string, string> >::iterator p = Trace_stream->past_lines.begin(); p != Trace_stream->past_lines.end(); ++p) {
|
||||
if (!layer.empty() && layer != p->first)
|
||||
continue;
|
||||
if (p->second != expected_lines.at(curr_expected_line))
|
||||
continue;
|
||||
++curr_expected_line;
|
||||
while (curr_expected_line < SIZE(expected_lines) && expected_lines.at(curr_expected_line).empty())
|
||||
++curr_expected_line;
|
||||
if (curr_expected_line == SIZE(expected_lines)) return true;
|
||||
}
|
||||
|
||||
++Num_failures;
|
||||
cerr << "\nF - " << FUNCTION << "(" << FILE << ":" << LINE << "): missing [" << expected_lines.at(curr_expected_line) << "] in trace:\n";
|
||||
DUMP(layer);
|
||||
Passed = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
#define CHECK_TRACE_CONTENTS(...) check_trace_contents(__FUNCTION__, __FILE__, __LINE__, __VA_ARGS__)
|
||||
|
||||
int trace_count(string layer) {
|
||||
return trace_count(layer, "");
|
||||
}
|
||||
|
|
|
@ -1,64 +1,37 @@
|
|||
void test_trace_check_compares() {
|
||||
CHECK_TRACE_CONTENTS("test layer", "");
|
||||
trace("test layer") << "foo";
|
||||
CHECK_TRACE_CONTENTS("test layer", "foo");
|
||||
CHECK_TRACE_CONTENTS("test layer: foo");
|
||||
}
|
||||
|
||||
void test_trace_check_filters_layers() {
|
||||
void test_trace_check_ignores_other_layers() {
|
||||
trace("test layer 1") << "foo";
|
||||
trace("test layer 2") << "bar";
|
||||
CHECK_TRACE_CONTENTS("test layer 1", "foo");
|
||||
CHECK_TRACE_CONTENTS("test layer 1: foo");
|
||||
CHECK_TRACE_DOESNT_CONTAIN("test layer 2: foo");
|
||||
}
|
||||
|
||||
void test_trace_check_ignores_other_lines() {
|
||||
trace("test layer 1") << "foo";
|
||||
trace("test layer 1") << "bar";
|
||||
CHECK_TRACE_CONTENTS("test layer 1", "foo");
|
||||
CHECK_TRACE_CONTENTS("test layer 1: foo");
|
||||
}
|
||||
|
||||
void test_trace_check_ignores_other_lines2() {
|
||||
trace("test layer 1") << "foo";
|
||||
trace("test layer 1") << "bar";
|
||||
CHECK_TRACE_CONTENTS("test layer 1: bar");
|
||||
}
|
||||
|
||||
void test_trace_ignores_trailing_whitespace() {
|
||||
trace("test layer 1") << "foo\n";
|
||||
CHECK_TRACE_CONTENTS("test layer 1", "foo");
|
||||
}
|
||||
|
||||
void test_trace_check_always_finds_empty_lines() {
|
||||
CHECK_TRACE_CONTENTS("test layer 1", "");
|
||||
}
|
||||
|
||||
void test_trace_check_treats_empty_layers_as_wildcards() {
|
||||
trace("test layer 1") << "foo";
|
||||
CHECK_TRACE_CONTENTS("", "foo");
|
||||
}
|
||||
|
||||
void test_trace_check_multiple_lines_at_once() {
|
||||
trace("test layer 1") << "foo";
|
||||
trace("test layer 2") << "bar";
|
||||
CHECK_TRACE_CONTENTS("", "foobar");
|
||||
}
|
||||
|
||||
void test_trace_check_always_finds_empty_lines2() {
|
||||
CHECK_TRACE_CONTENTS("test layer 1", "");
|
||||
CHECK_TRACE_CONTENTS("test layer 1: foo");
|
||||
}
|
||||
|
||||
void test_trace_orders_across_layers() {
|
||||
trace("test layer 1") << "foo";
|
||||
trace("test layer 2") << "bar";
|
||||
trace("test layer 1") << "qux";
|
||||
CHECK_TRACE_CONTENTS("", "foobarqux");
|
||||
}
|
||||
|
||||
void test_trace_orders_across_layers2() {
|
||||
trace("test layer 1") << "foo";
|
||||
trace("test layer 2") << "bar";
|
||||
trace("test layer 1") << "qux";
|
||||
CHECK_TRACE_CONTENTS("foobarqux");
|
||||
}
|
||||
|
||||
void test_trace_checks_ordering_spanning_multiple_layers() {
|
||||
trace("layer1") << "foo";
|
||||
trace("layer2") << "bar";
|
||||
trace("layer1") << "qux";
|
||||
CHECK_TRACE_CONTENTS("layer1: foolayer2: barlayer1: qux");
|
||||
CHECK_TRACE_CONTENTS("test layer 1: footest layer 2: bartest layer 1: qux");
|
||||
}
|
||||
|
||||
void test_trace_supports_count() {
|
||||
|
|
Loading…
Reference in New Issue