mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 15:38:09 +02:00
util: u_memstream: add tests
Now we have a few extra methods and things are diverging a bit between Linux and Windows. Add a few unit tests to make sure this works. Signed-off-by: Daniel Almeida <daniel.almeida@collabora.com> Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30594>
This commit is contained in:
parent
279f38918f
commit
01586bc57e
2 changed files with 100 additions and 0 deletions
|
|
@ -382,6 +382,7 @@ if with_tests
|
|||
'tests/u_call_once_test.cpp',
|
||||
'tests/u_debug_stack_test.cpp',
|
||||
'tests/u_debug_test.cpp',
|
||||
'tests/u_memstream_test.cpp',
|
||||
'tests/u_printf_test.cpp',
|
||||
'tests/u_qsort_test.cpp',
|
||||
'tests/vector_test.cpp',
|
||||
|
|
|
|||
99
src/util/tests/u_memstream_test.cpp
Normal file
99
src/util/tests/u_memstream_test.cpp
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
// Copyright © 2024 Collabora, Ltd.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
#include "memstream.h"
|
||||
|
||||
class MemStreamTest : public ::testing::Test {
|
||||
protected:
|
||||
struct u_memstream mem;
|
||||
char *buffer;
|
||||
size_t size;
|
||||
|
||||
MemStreamTest() : buffer(nullptr), size(0) {
|
||||
u_memstream_open(&mem, &buffer, &size);
|
||||
}
|
||||
|
||||
~MemStreamTest() {
|
||||
u_memstream_close(&mem);
|
||||
free(buffer);
|
||||
}
|
||||
|
||||
void resetStream() {
|
||||
u_memstream_close(&mem);
|
||||
free(buffer);
|
||||
buffer = nullptr;
|
||||
size = 0;
|
||||
u_memstream_open(&mem, &buffer, &size);
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(MemStreamTest, OpenStream) {
|
||||
EXPECT_NE(mem.f, nullptr);
|
||||
EXPECT_EQ(size, 0);
|
||||
}
|
||||
|
||||
TEST_F(MemStreamTest, WriteAndFlush) {
|
||||
const char *data = "Hello, world!";
|
||||
size_t data_len = strlen(data);
|
||||
|
||||
EXPECT_EQ(fwrite(data, 1, data_len, mem.f), data_len);
|
||||
EXPECT_EQ(u_memstream_flush(&mem), 0);
|
||||
|
||||
EXPECT_STREQ(buffer, data);
|
||||
EXPECT_EQ(size, data_len);
|
||||
}
|
||||
|
||||
TEST_F(MemStreamTest, ResetStream) {
|
||||
const char *data = "Hello, world!";
|
||||
size_t data_len = strlen(data);
|
||||
|
||||
EXPECT_EQ(fwrite(data, 1, data_len, mem.f), data_len);
|
||||
EXPECT_EQ(u_memstream_flush(&mem), 0);
|
||||
|
||||
EXPECT_STREQ(buffer, data);
|
||||
EXPECT_EQ(size, data_len);
|
||||
|
||||
resetStream();
|
||||
|
||||
EXPECT_EQ(size, 0);
|
||||
}
|
||||
|
||||
TEST_F(MemStreamTest, WriteAfterReset) {
|
||||
const char *data1 = "Hello, world!";
|
||||
const char *data2 = "New data";
|
||||
size_t data1_len = strlen(data1);
|
||||
size_t data2_len = strlen(data2);
|
||||
|
||||
EXPECT_EQ(fwrite(data1, 1, data1_len, mem.f), data1_len);
|
||||
EXPECT_EQ(u_memstream_flush(&mem), 0);
|
||||
|
||||
EXPECT_STREQ(buffer, data1);
|
||||
EXPECT_EQ(size, data1_len);
|
||||
|
||||
resetStream();
|
||||
|
||||
EXPECT_EQ(size, 0);
|
||||
|
||||
EXPECT_EQ(fwrite(data2, 1, data2_len, mem.f), data2_len);
|
||||
EXPECT_EQ(u_memstream_flush(&mem), 0);
|
||||
|
||||
EXPECT_STREQ(buffer, data2);
|
||||
EXPECT_EQ(size, data2_len);
|
||||
}
|
||||
|
||||
TEST_F(MemStreamTest, MultipleFlushes) {
|
||||
const char *data = "Hello, world!";
|
||||
size_t data_len = strlen(data);
|
||||
|
||||
EXPECT_EQ(fwrite(data, 1, data_len, mem.f), data_len);
|
||||
EXPECT_EQ(u_memstream_flush(&mem), 0);
|
||||
|
||||
EXPECT_STREQ(buffer, data);
|
||||
EXPECT_EQ(size, data_len);
|
||||
|
||||
EXPECT_EQ(u_memstream_flush(&mem), 0);
|
||||
|
||||
EXPECT_STREQ(buffer, data);
|
||||
EXPECT_EQ(size, data_len);
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue