mirror of
https://github.com/GerbilSoft/zlib-ng.git
synced 2025-06-18 11:35:35 -04:00
59 lines
1.6 KiB
C++
59 lines
1.6 KiB
C++
/* test_raw.cc - Test raw streams. */
|
|
|
|
#include "zbuild.h"
|
|
#ifdef ZLIB_COMPAT
|
|
# include "zlib.h"
|
|
#else
|
|
# include "zlib-ng.h"
|
|
#endif
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
TEST(raw, basic) {
|
|
PREFIX3(stream) stream;
|
|
int err;
|
|
unsigned char plain[512];
|
|
size_t i;
|
|
unsigned char compr[sizeof(plain)];
|
|
unsigned int compr_len;
|
|
unsigned char plain_again[sizeof(plain)];
|
|
|
|
memset(&stream, 0, sizeof(stream));
|
|
err = PREFIX(deflateInit2)(&stream, Z_BEST_SPEED, Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY);
|
|
EXPECT_EQ(err, Z_OK);
|
|
|
|
for (i = 0; i < sizeof(plain); i++)
|
|
plain[i] = (unsigned char)i;
|
|
stream.adler = 0x12345678;
|
|
stream.next_in = plain;
|
|
stream.avail_in = (uint32_t)sizeof(plain);
|
|
stream.next_out = compr;
|
|
stream.avail_out = (uint32_t)sizeof(compr);
|
|
err = PREFIX(deflate)(&stream, Z_FINISH);
|
|
EXPECT_EQ(err, Z_STREAM_END);
|
|
EXPECT_EQ(stream.adler, 0x12345678);
|
|
compr_len = sizeof(compr) - stream.avail_out;
|
|
|
|
err = PREFIX(deflateEnd)(&stream);
|
|
EXPECT_EQ(err, Z_OK);
|
|
|
|
memset(&stream, 0, sizeof(stream));
|
|
err = PREFIX(inflateInit2)(&stream, -MAX_WBITS);
|
|
EXPECT_EQ(err, Z_OK);
|
|
|
|
stream.adler = 0x87654321;
|
|
stream.next_in = compr;
|
|
stream.avail_in = compr_len;
|
|
stream.next_out = plain_again;
|
|
stream.avail_out = (unsigned int)sizeof(plain_again);
|
|
|
|
err = PREFIX(inflate)(&stream, Z_NO_FLUSH);
|
|
EXPECT_EQ(err, Z_STREAM_END);
|
|
EXPECT_EQ(stream.adler, 0x87654321);
|
|
|
|
err = PREFIX(inflateEnd)(&stream);
|
|
EXPECT_EQ(err, Z_OK);
|
|
|
|
EXPECT_TRUE(memcmp(plain_again, plain, sizeof(plain)) == 0);
|
|
}
|