| 383 | } |
| 384 | |
| 385 | char* test_to_string(test t, char* dest, size_t dest_size, bool show_equality) |
| 386 | { |
| 387 | |
| 388 | |
| 389 | cons* c; |
| 390 | complex_test* ct; |
| 391 | char* ch; |
| 392 | |
| 393 | if (!dest) |
| 394 | { |
| 395 | dest = Output_Manager::Get_OM().get_printed_output_string(); |
| 396 | dest_size = output_string_size; /* from agent.h */ |
| 397 | } |
| 398 | ch = dest; |
| 399 | |
| 400 | if (!t) |
| 401 | { |
| 402 | strncpy(dest, "[BLANK TEST]", dest_size); /* this should never get executed */ |
| 403 | dest[dest_size - 1] = 0; /* ensure null termination */ |
| 404 | return dest; |
| 405 | } |
| 406 | |
| 407 | if (test_is_blank_or_equality_test(t)) |
| 408 | { |
| 409 | return referent_of_equality_test(t)->to_string(true, dest, dest_size); |
| 410 | } |
| 411 | |
| 412 | ct = complex_test_from_test(t); |
| 413 | |
| 414 | switch (ct->type) |
| 415 | { |
| 416 | case EQUALITY_TEST: |
| 417 | if (show_equality) |
| 418 | { |
| 419 | strncpy(ch, "= ", dest_size - (ch - dest)); |
| 420 | ch[dest_size - (ch - dest) - 1] = 0; /* ensure null termination */ |
| 421 | while (*ch) |
| 422 | { |
| 423 | ch++; |
| 424 | } |
| 425 | ct->data.referent->to_string(true, ch, dest_size - (ch - dest)); |
| 426 | } |
| 427 | else |
| 428 | { |
| 429 | return (ct->data.referent->to_string(true, dest, dest_size)); |
| 430 | } |
| 431 | break; |
| 432 | case NOT_EQUAL_TEST: |
| 433 | strncpy(ch, "<> ", dest_size - (ch - dest)); |
| 434 | ch[dest_size - (ch - dest) - 1] = 0; /* ensure null termination */ |
| 435 | while (*ch) |
| 436 | { |
| 437 | ch++; |
| 438 | } |
| 439 | ct->data.referent->to_string(true, ch, dest_size - (ch - dest)); |
| 440 | break; |
| 441 | case LESS_TEST: |
| 442 | strncpy(ch, "< ", dest_size - (ch - dest)); |
no test coverage detected