mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-05-23 15:07:34 +08:00
Matrix: add proper print function testing
Before the print function was just implicitly called somewhere and that's why we had 100% line coverage. With this we have actual testing of the functions.
This commit is contained in:
committed by
Julian Kent
parent
b0b7d7229a
commit
33a629105c
+5
-4
@@ -322,18 +322,19 @@ public:
|
||||
const Matrix<Type, M, N> &self = *this;
|
||||
for (size_t i = 0; i < M; i++) {
|
||||
for (size_t j = 0; j < N; j++) {
|
||||
snprintf(buf + strlen(buf), n - strlen(buf), "\t%8.2g", double(self(i, j))); // directly append to the string buffer
|
||||
snprintf(buf + strlen(buf), n - strlen(buf), "\t%8.8g", double(self(i, j))); // directly append to the string buffer
|
||||
}
|
||||
snprintf(buf + strlen(buf), n - strlen(buf), "\n");
|
||||
}
|
||||
}
|
||||
|
||||
void print() const
|
||||
void print(FILE *stream = stdout) const
|
||||
{
|
||||
static const size_t n = 11*N*M + M; // for every entry a tab and 10 digits, for every row a newline
|
||||
// element: tab, point, 8 digits; row: newline; string: \0 end
|
||||
static const size_t n = 10*N*M + M + 1;
|
||||
char * buf = new char[n];
|
||||
write_string(buf, n);
|
||||
printf("%s\n", buf);
|
||||
fprintf(stream, "%s\n", buf);
|
||||
delete[] buf;
|
||||
}
|
||||
|
||||
|
||||
@@ -132,6 +132,44 @@ int main()
|
||||
m7.setNaN();
|
||||
TEST(m7 != m8);
|
||||
|
||||
// check write_string()
|
||||
float comma[6] = {
|
||||
1.f, 12345.678f,
|
||||
12345.67891f, 12345.67891f,
|
||||
1112345.67891f, 12345.111111111f
|
||||
};
|
||||
Matrix<float, 3, 2> Comma(comma);
|
||||
const size_t len = 10*2*3 + 2 + 1;
|
||||
char buffer[len];
|
||||
Comma.write_string(buffer, len);
|
||||
char output[] = "\t 1\t12345.678\n\t12345.679\t12345.679\n\t1112345.6\t12345.111\n";
|
||||
for (size_t i = 0; i < len; i++) {
|
||||
TEST(buffer[i] == output[i]);
|
||||
if (buffer[i] == '\0') {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// check print()
|
||||
// write
|
||||
FILE *fp = fopen("testoutput.txt", "w+");
|
||||
TEST(fp != nullptr);
|
||||
Comma.print(fp);
|
||||
TEST(!fclose(fp));
|
||||
// read
|
||||
fp = fopen("testoutput.txt", "r");
|
||||
TEST(fp != nullptr);
|
||||
TEST(!fseek(fp, 0, SEEK_SET));
|
||||
for (size_t i = 0; i < len; i++) {
|
||||
char c = static_cast<char>(fgetc(fp));
|
||||
if (c == '\n') {
|
||||
break;
|
||||
}
|
||||
printf("%d %d %c\n", static_cast<int>(i), c, c);
|
||||
TEST(c == output[i]);
|
||||
}
|
||||
TEST(!fclose(fp));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user