Skip to content

Commit 9648649

Browse files
committed
tests improvements
- suppress the output for unit_evaluate - improve debug printout codec_conversion_test_testcard_uyvy_to_i420 - improve C variant of ASSERT_EQUAL_MESSAGE macro (prints num values also in hex) - remove VLA from codec_conversions_test.cpp (not valid in C++)
1 parent b86d628 commit 9648649

File tree

4 files changed

+38
-11
lines changed

4 files changed

+38
-11
lines changed

src/utils/fs.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,12 @@
4343
#ifdef _WIN32
4444
#include <windef.h> /// for MAX_PATH
4545
#define MAX_PATH_SIZE (MAX_PATH + 1)
46+
#define NULL_FILE "NUL"
4647
#define PATH_SEPARATOR "\\"
4748
#else
4849
#include <limits.h>
4950
#define MAX_PATH_SIZE PATH_MAX
51+
#define NULL_FILE "/dev/null"
5052
#define PATH_SEPARATOR "/"
5153
#endif
5254

test/codec_conversions_test.cpp

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,21 +41,24 @@ int codec_conversion_test_testcard_uyvy_to_i420(void)
4141
unsigned char uyvy_pattern[4] = { 'u', 'y', 'v', 'Y' };
4242
size_t uyvy_buf_size = ((size_x + 1) & ~1) * 2 * size_y;
4343

44-
unsigned char uyvy_buf[uyvy_buf_size];
44+
vector<unsigned char> uyvy_buf(uyvy_buf_size);
4545
for (size_t i = 0; i < size_y * 2 * ((size_x + 1) & ~1); ++i) {
4646
uyvy_buf[i] = uyvy_pattern[i % 4];
4747
}
4848

4949
auto *i420_buf = (unsigned char *) malloc(vc_get_datalen(size_x, size_y, I420));
50-
testcard_convert_buffer(UYVY, I420, i420_buf, uyvy_buf, size_x, size_y);
50+
testcard_convert_buffer(UYVY, I420, i420_buf, uyvy_buf.data(),
51+
size_x, size_y);
5152
unsigned char *y_ptr = i420_buf;
5253
for (size_t i = 0; i < size_y; ++i) {
5354
for (size_t j = 0; j < size_x; ++j) {
5455
ostringstream oss;
5556
unsigned char expected = uyvy_pattern[((2 * j + 1) % 4)];
5657
unsigned char actual = *y_ptr++;
57-
oss << size_x << "X" << size_y << ": [" << i << ", " << j << "]";
58-
ASSERT_EQUAL_MESSAGE(oss.str(), expected, actual);
58+
oss << "size: " << size_x << "x" << size_y
59+
<< ": [" << i << ", " << j << "]";
60+
ASSERT_EQUAL_MESSAGE(oss.str(), expected,
61+
actual);
5962
}
6063
}
6164
// U
@@ -65,7 +68,8 @@ int codec_conversion_test_testcard_uyvy_to_i420(void)
6568
ostringstream oss;
6669
unsigned char expected = 'u';
6770
unsigned char actual = *u_ptr++;
68-
oss << "[" << i << ", " << j << "]";
71+
oss << "size: " << size_x << "x" << size_y
72+
<< ": [" << i << ", " << j << "]";
6973
ASSERT_EQUAL_MESSAGE(oss.str(), expected, actual);
7074
}
7175
}
@@ -136,7 +140,7 @@ codec_conversion_test_y216_to_p010le(void)
136140
y216_to_p010le(out_data, out_linesize,
137141
(unsigned char *) &y216_buf[0], size_x, size_y);
138142

139-
auto *y_ptr = (uint16_t *) out_data[0];
143+
auto *y_ptr = (uint16_t *) (void *) out_data[0];
140144
for (size_t i = 0; i < size_y; ++i) {
141145
for (size_t j = 0; j < size_x; ++j) {
142146
ostringstream oss;
@@ -150,7 +154,8 @@ codec_conversion_test_y216_to_p010le(void)
150154
}
151155
// UV combined
152156
for (size_t i = 0; i < (size_y + 1) / 2; ++i) {
153-
auto *uv_ptr = (uint16_t *) out_data[1] + i * ((size_x + 1) & ~1);
157+
auto *uv_ptr = ((uint16_t *) (void *) out_data[1]) +
158+
i * ((size_x + 1) & ~1);
154159
for (size_t j = 0; j < ((size_x + 1) & ~1); ++j) {
155160
ostringstream oss;
156161
auto expected = y216_pattern[((2 * j + 1) % 4)];

test/misc_test.cpp

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,22 @@
11
#include <climits>
2-
#include <cstring> // for strcmp
32
#include <cmath> // for abs
3+
#include <cstring> // for strcmp
44
#include <list>
55
#include <sstream>
66
#include <string> // for allocator, basic_string, operator+, string
77

8+
#include <fcntl.h>
9+
#include <sys/stat.h>
10+
#ifdef _WIN32
11+
#include <cstdlib>
12+
#include <io.h>
13+
#else
14+
#include <unistd.h>
15+
#endif
16+
817
#include "color.h"
918
#include "types.h"
19+
#include "utils/fs.h" // for NULL_FILE
1020
#include "utils/misc.h"
1121
#include "utils/net.h"
1222
#include "utils/string.h"
@@ -155,13 +165,22 @@ int misc_test_unit_evaluate()
155165
{ "Gi", LLONG_MIN, "Gi" },
156166
};
157167

168+
// temporarily redirect output to null file
169+
int stdout_save = dup(STDOUT_FILENO);
170+
int null_fd = open(NULL_FILE, O_WRONLY);
171+
dup2(null_fd, STDOUT_FILENO);
172+
close(null_fd);
173+
158174
for (unsigned i = 0; i < sizeof test_cases / sizeof test_cases[0];
159175
++i) {
160176
const char *endptr = nullptr;
161177
long long val = unit_evaluate(test_cases[i].str, &endptr);
162178
ASSERT_EQUAL(test_cases[i].exp_val, val);
163179
ASSERT_EQUAL_STR(test_cases[i].exp_endstr, endptr);
164180
}
181+
// restore output
182+
dup2(stdout_save, STDOUT_FILENO);
183+
close(stdout_save);
165184

166185
return 0;
167186
}

test/unit_common.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,10 @@
7878
#define ASSERT_EQUAL_MESSAGE(msg, expected, actual) \
7979
if ((expected) != (actual)) { \
8080
fprintf(stderr, \
81-
"Assertion failed - expected %" PRIdMAX \
82-
", actual %" PRIdMAX ": %s\n", \
83-
(intmax_t) (expected), (intmax_t) (actual), (msg)); \
81+
"Assertion failed - expected %" PRIdMAX " (%#" PRIxMAX \
82+
"), actual %" PRIdMAX " (%#" PRIxMAX "): %s\n", \
83+
(intmax_t) (expected), (uintmax_t) (expected), \
84+
(intmax_t) (actual), (uintmax_t) (actual), (msg)); \
8485
return -1; \
8586
}
8687
#endif

0 commit comments

Comments
 (0)