summaryrefslogtreecommitdiff
path: root/core/fxcodec/gif/cfx_gifcontext_unittest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/fxcodec/gif/cfx_gifcontext_unittest.cpp')
-rw-r--r--core/fxcodec/gif/cfx_gifcontext_unittest.cpp145
1 files changed, 68 insertions, 77 deletions
diff --git a/core/fxcodec/gif/cfx_gifcontext_unittest.cpp b/core/fxcodec/gif/cfx_gifcontext_unittest.cpp
index c5d3ac90c7..20aa6913d0 100644
--- a/core/fxcodec/gif/cfx_gifcontext_unittest.cpp
+++ b/core/fxcodec/gif/cfx_gifcontext_unittest.cpp
@@ -17,93 +17,76 @@ class CFX_GifContextForTest : public CFX_GifContext {
using CFX_GifContext::ReadData;
using CFX_GifContext::ReadGifSignature;
using CFX_GifContext::ReadLogicalScreenDescriptor;
+
+ CFX_MemoryStream* InputBuffer() const { return input_buffer_.Get(); }
};
TEST(CFX_GifContext, SetInputBuffer) {
CFX_GifContextForTest context(nullptr, nullptr);
context.SetInputBuffer(nullptr, 0);
- EXPECT_EQ(nullptr, context.next_in_);
- EXPECT_EQ(0u, context.avail_in_);
- EXPECT_EQ(0u, context.skip_size_);
+ EXPECT_EQ(nullptr, context.InputBuffer()->GetBuffer());
+ EXPECT_EQ(0, context.InputBuffer()->GetSize());
+ EXPECT_EQ(0, context.InputBuffer()->GetPosition());
context.SetInputBuffer(nullptr, 100);
- EXPECT_EQ(nullptr, context.next_in_);
- EXPECT_EQ(100u, context.avail_in_);
- EXPECT_EQ(0u, context.skip_size_);
+ EXPECT_EQ(nullptr, context.InputBuffer()->GetBuffer());
+ EXPECT_EQ(100, context.InputBuffer()->GetSize());
+ EXPECT_EQ(0, context.InputBuffer()->GetPosition());
uint8_t buffer[] = {0x00, 0x01, 0x02};
context.SetInputBuffer(buffer, 0);
- EXPECT_EQ(buffer, context.next_in_);
- EXPECT_EQ(0u, context.avail_in_);
- EXPECT_EQ(0u, context.skip_size_);
+ EXPECT_EQ(buffer, context.InputBuffer()->GetBuffer());
+ EXPECT_EQ(0, context.InputBuffer()->GetSize());
+ EXPECT_EQ(0, context.InputBuffer()->GetPosition());
context.SetInputBuffer(buffer, 3);
- EXPECT_EQ(buffer, context.next_in_);
- EXPECT_EQ(3u, context.avail_in_);
- EXPECT_EQ(0u, context.skip_size_);
+ EXPECT_EQ(buffer, context.InputBuffer()->GetBuffer());
+ EXPECT_EQ(3, context.InputBuffer()->GetSize());
+ EXPECT_EQ(0, context.InputBuffer()->GetPosition());
context.SetInputBuffer(buffer, 100);
- EXPECT_EQ(buffer, context.next_in_);
- EXPECT_EQ(100u, context.avail_in_);
- EXPECT_EQ(0u, context.skip_size_);
+ EXPECT_EQ(buffer, context.InputBuffer()->GetBuffer());
+ EXPECT_EQ(100, context.InputBuffer()->GetSize());
+ EXPECT_EQ(0, context.InputBuffer()->GetPosition());
}
TEST(CFX_GifContext, ReadData) {
CFX_GifContextForTest context(nullptr, nullptr);
context.SetInputBuffer(nullptr, 0);
- EXPECT_EQ(nullptr, context.ReadData(nullptr, 0));
- EXPECT_EQ(nullptr, context.ReadData(nullptr, 10));
+ EXPECT_FALSE(context.ReadData(nullptr, 0));
+ EXPECT_FALSE(context.ReadData(nullptr, 10));
- uint8_t* dest_buffer = nullptr;
- EXPECT_EQ(nullptr,
- context.ReadData(reinterpret_cast<uint8_t**>(&dest_buffer), 0));
- EXPECT_EQ(nullptr,
- context.ReadData(reinterpret_cast<uint8_t**>(&dest_buffer), 10));
+ std::vector<uint8_t> dest_buffer;
+ EXPECT_FALSE(context.ReadData(dest_buffer.data(), 0));
+ EXPECT_FALSE(context.ReadData(dest_buffer.data(), 10));
uint8_t src_buffer[] = {0x00, 0x01, 0x02, 0x03, 0x04,
0x05, 0x06, 0x07, 0x08, 0x09};
context.SetInputBuffer(src_buffer, 0);
- EXPECT_EQ(nullptr,
- context.ReadData(reinterpret_cast<uint8_t**>(&dest_buffer), 10));
- EXPECT_EQ(reinterpret_cast<uint8_t*>(src_buffer), context.next_in_);
- EXPECT_EQ(0u, context.avail_in_);
- EXPECT_EQ(0u, context.skip_size_);
-
- dest_buffer = nullptr;
- context.SetInputBuffer(src_buffer, 10);
- EXPECT_EQ(src_buffer,
- context.ReadData(reinterpret_cast<uint8_t**>(&dest_buffer), 10));
- EXPECT_EQ(reinterpret_cast<uint8_t*>(src_buffer), dest_buffer);
- EXPECT_EQ(src_buffer, context.next_in_);
- EXPECT_EQ(10u, context.avail_in_);
- EXPECT_EQ(10u, context.skip_size_);
-
- dest_buffer = nullptr;
- context.SetInputBuffer(src_buffer, 10);
- EXPECT_EQ(src_buffer,
- context.ReadData(reinterpret_cast<uint8_t**>(&dest_buffer), 5));
- EXPECT_EQ(reinterpret_cast<uint8_t*>(src_buffer), dest_buffer);
- EXPECT_EQ(src_buffer, context.next_in_);
- EXPECT_EQ(10u, context.avail_in_);
- EXPECT_EQ(5u, context.skip_size_);
-
- dest_buffer = nullptr;
- EXPECT_EQ(src_buffer + 5,
- context.ReadData(reinterpret_cast<uint8_t**>(&dest_buffer), 5));
- EXPECT_EQ(reinterpret_cast<uint8_t*>(src_buffer + 5), dest_buffer);
- EXPECT_EQ(src_buffer, context.next_in_);
- EXPECT_EQ(10u, context.avail_in_);
- EXPECT_EQ(10u, context.skip_size_);
-
- dest_buffer = nullptr;
- EXPECT_EQ(nullptr,
- context.ReadData(reinterpret_cast<uint8_t**>(&dest_buffer), 5));
- EXPECT_EQ(nullptr, dest_buffer);
- EXPECT_EQ(src_buffer, context.next_in_);
- EXPECT_EQ(10u, context.avail_in_);
- EXPECT_EQ(10u, context.skip_size_);
+ dest_buffer.resize(sizeof(src_buffer));
+ EXPECT_FALSE(context.ReadData(dest_buffer.data(), sizeof(src_buffer)));
+
+ context.SetInputBuffer(src_buffer, 1);
+ EXPECT_FALSE(context.ReadData(dest_buffer.data(), sizeof(src_buffer)));
+ EXPECT_EQ(0, context.InputBuffer()->GetPosition());
+ EXPECT_FALSE(context.ReadData(nullptr, sizeof(src_buffer)));
+ EXPECT_FALSE(context.ReadData(nullptr, 1));
+ EXPECT_TRUE(context.ReadData(dest_buffer.data(), 1));
+ EXPECT_EQ(src_buffer[0], dest_buffer[0]);
+
+ context.SetInputBuffer(src_buffer, sizeof(src_buffer));
+ EXPECT_FALSE(context.ReadData(nullptr, sizeof(src_buffer)));
+ EXPECT_TRUE(context.ReadData(dest_buffer.data(), sizeof(src_buffer)));
+ for (size_t i = 0; i < sizeof(src_buffer); i++)
+ EXPECT_EQ(src_buffer[i], dest_buffer[i]);
+
+ context.SetInputBuffer(src_buffer, sizeof(src_buffer));
+ for (size_t i = 0; i < sizeof(src_buffer); i++) {
+ EXPECT_TRUE(context.ReadData(dest_buffer.data(), 1));
+ EXPECT_EQ(src_buffer[i], dest_buffer[0]);
+ }
}
TEST(CFX_GifContext, ReadGifSignature) {
@@ -113,48 +96,48 @@ TEST(CFX_GifContext, ReadGifSignature) {
uint8_t data[1];
context.SetInputBuffer(data, 0);
EXPECT_EQ(CFX_GifDecodeStatus::Unfinished, context.ReadGifSignature());
- EXPECT_EQ(0u, context.skip_size_);
+ EXPECT_EQ(0, context.InputBuffer()->GetPosition());
}
// Make sure testing the entire signature
{
uint8_t data[] = {'G', 'I', 'F'};
context.SetInputBuffer(data, sizeof(data));
EXPECT_EQ(CFX_GifDecodeStatus::Unfinished, context.ReadGifSignature());
- EXPECT_EQ(0u, context.skip_size_);
+ EXPECT_EQ(0, context.InputBuffer()->GetPosition());
}
{
uint8_t data[] = {'N', 'O', 'T', 'G', 'I', 'F'};
context.SetInputBuffer(data, sizeof(data));
EXPECT_EQ(CFX_GifDecodeStatus::Error, context.ReadGifSignature());
- EXPECT_EQ(6u, context.skip_size_);
+ EXPECT_EQ(6, context.InputBuffer()->GetPosition());
}
// Make sure not matching GIF8*a
{
uint8_t data[] = {'G', 'I', 'F', '8', '0', 'a'};
context.SetInputBuffer(data, sizeof(data));
EXPECT_EQ(CFX_GifDecodeStatus::Error, context.ReadGifSignature());
- EXPECT_EQ(6u, context.skip_size_);
+ EXPECT_EQ(6, context.InputBuffer()->GetPosition());
}
// Make sure not matching GIF**a
{
uint8_t data[] = {'G', 'I', 'F', '9', '2', 'a'};
context.SetInputBuffer(data, sizeof(data));
EXPECT_EQ(CFX_GifDecodeStatus::Error, context.ReadGifSignature());
- EXPECT_EQ(6u, context.skip_size_);
+ EXPECT_EQ(6, context.InputBuffer()->GetPosition());
}
// One valid signature
{
uint8_t data[] = {'G', 'I', 'F', '8', '7', 'a'};
context.SetInputBuffer(data, sizeof(data));
EXPECT_EQ(CFX_GifDecodeStatus::Success, context.ReadGifSignature());
- EXPECT_EQ(6u, context.skip_size_);
+ EXPECT_EQ(6, context.InputBuffer()->GetPosition());
}
// The other valid signature
{
uint8_t data[] = {'G', 'I', 'F', '8', '9', 'a'};
context.SetInputBuffer(data, sizeof(data));
EXPECT_EQ(CFX_GifDecodeStatus::Success, context.ReadGifSignature());
- EXPECT_EQ(6u, context.skip_size_);
+ EXPECT_EQ(6, context.InputBuffer()->GetPosition());
}
}
@@ -175,7 +158,8 @@ TEST(CFX_GifContext, ReadLocalScreenDescriptor) {
EXPECT_EQ(CFX_GifDecodeStatus::Success,
context.ReadLogicalScreenDescriptor());
- EXPECT_EQ(sizeof(CFX_GifLocalScreenDescriptor), context.skip_size_);
+ EXPECT_EQ(sizeof(CFX_GifLocalScreenDescriptor),
+ static_cast<size_t>(context.InputBuffer()->GetPosition()));
EXPECT_EQ(0, context.width_);
EXPECT_EQ(0, context.height_);
EXPECT_EQ(0u, context.bc_index_);
@@ -190,7 +174,8 @@ TEST(CFX_GifContext, ReadLocalScreenDescriptor) {
EXPECT_EQ(CFX_GifDecodeStatus::Success,
context.ReadLogicalScreenDescriptor());
- EXPECT_EQ(sizeof(CFX_GifLocalScreenDescriptor), context.skip_size_);
+ EXPECT_EQ(sizeof(CFX_GifLocalScreenDescriptor),
+ static_cast<size_t>(context.InputBuffer()->GetPosition()));
EXPECT_EQ(0x000A, context.width_);
EXPECT_EQ(0x0F00, context.height_);
EXPECT_EQ(0u, context.bc_index_); // bc_index_ is 0 if no global palette
@@ -205,7 +190,7 @@ TEST(CFX_GifContext, ReadLocalScreenDescriptor) {
EXPECT_EQ(CFX_GifDecodeStatus::Unfinished,
context.ReadLogicalScreenDescriptor());
- EXPECT_EQ(0u, context.skip_size_);
+ EXPECT_EQ(0, context.InputBuffer()->GetPosition());
}
// LSD with global palette
{
@@ -219,7 +204,8 @@ TEST(CFX_GifContext, ReadLocalScreenDescriptor) {
EXPECT_EQ(CFX_GifDecodeStatus::Success,
context.ReadLogicalScreenDescriptor());
- EXPECT_EQ(sizeof(data), context.skip_size_);
+ EXPECT_EQ(sizeof(data),
+ static_cast<size_t>(context.InputBuffer()->GetPosition()));
EXPECT_EQ(0x000A, context.width_);
EXPECT_EQ(0x0F00, context.height_);
EXPECT_EQ(1u, context.bc_index_);
@@ -246,7 +232,8 @@ TEST(CFX_GifContext, ReadHeader) {
EXPECT_EQ(CFX_GifDecodeStatus::Error, context.ReadHeader());
- EXPECT_EQ(sizeof(data.signature), context.skip_size_);
+ EXPECT_EQ(sizeof(data.signature),
+ static_cast<size_t>(context.InputBuffer()->GetPosition()));
}
// Short after signature
{
@@ -256,7 +243,8 @@ TEST(CFX_GifContext, ReadHeader) {
EXPECT_EQ(CFX_GifDecodeStatus::Unfinished, context.ReadHeader());
- EXPECT_EQ(sizeof(signature), context.skip_size_);
+ EXPECT_EQ(sizeof(signature),
+ static_cast<size_t>(context.InputBuffer()->GetPosition()));
}
// Success without global palette
{
@@ -269,7 +257,8 @@ TEST(CFX_GifContext, ReadHeader) {
EXPECT_EQ(CFX_GifDecodeStatus::Success, context.ReadHeader());
- EXPECT_EQ(sizeof(data), context.skip_size_);
+ EXPECT_EQ(sizeof(data),
+ static_cast<size_t>(context.InputBuffer()->GetPosition()));
EXPECT_EQ(0x000A, context.width_);
EXPECT_EQ(0x0F00, context.height_);
EXPECT_EQ(0u, context.bc_index_); // bc_index_ is 0 if no global palette
@@ -286,7 +275,8 @@ TEST(CFX_GifContext, ReadHeader) {
EXPECT_EQ(CFX_GifDecodeStatus::Unfinished, context.ReadHeader());
- EXPECT_EQ(sizeof(data.signature), context.skip_size_);
+ EXPECT_EQ(sizeof(data.signature),
+ static_cast<size_t>(context.InputBuffer()->GetPosition()));
}
// Success with global palette
{
@@ -301,7 +291,8 @@ TEST(CFX_GifContext, ReadHeader) {
EXPECT_EQ(CFX_GifDecodeStatus::Success, context.ReadHeader());
- EXPECT_EQ(sizeof(data), context.skip_size_);
+ EXPECT_EQ(sizeof(data),
+ static_cast<size_t>(context.InputBuffer()->GetPosition()));
EXPECT_EQ(0x000A, context.width_);
EXPECT_EQ(0x0F00, context.height_);
EXPECT_EQ(1u, context.bc_index_);