// Copyright 2017 The Chromium OS Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "bsdiff/brotli_compressor.h" #include <gtest/gtest.h> #include "bsdiff/brotli_decompressor.h" namespace { constexpr uint8_t kHelloWorld[] = { 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x0a, }; } // namespace namespace bsdiff { TEST(BrotliCompressorTest, BrotliCompressorSmoke) { BrotliCompressor brotli_compressor(11); EXPECT_TRUE(brotli_compressor.Write(kHelloWorld, sizeof(kHelloWorld))); EXPECT_TRUE(brotli_compressor.Finish()); std::vector<uint8_t> compressed_data = brotli_compressor.GetCompressedData(); EXPECT_GT(compressed_data.size(), static_cast<size_t>(0)); // Run decompressor and check we can get the exact same data as kHelloWorld. std::vector<uint8_t> decompressed_data(sizeof(kHelloWorld)); BrotliDecompressor brotli_decompressor; EXPECT_TRUE(brotli_decompressor.SetInputData(compressed_data.data(), compressed_data.size())); EXPECT_TRUE( brotli_decompressor.Read(decompressed_data.data(), sizeof(kHelloWorld))); EXPECT_TRUE(brotli_decompressor.Close()); EXPECT_EQ( std::vector<uint8_t>(kHelloWorld, kHelloWorld + sizeof(kHelloWorld)), decompressed_data); } TEST(BrotliCompressorTest, BrotliCompressorEmptyStream) { uint8_t unused_value = 0; BrotliCompressor brotli_compressor(11); EXPECT_TRUE(brotli_compressor.Write(&unused_value, 0)); EXPECT_TRUE(brotli_compressor.Finish()); std::vector<uint8_t> compressed_data = brotli_compressor.GetCompressedData(); // Check that we can close the decompressor without errors. BrotliDecompressor brotli_decompressor; EXPECT_TRUE(brotli_decompressor.SetInputData(compressed_data.data(), compressed_data.size())); EXPECT_TRUE(brotli_decompressor.Close()); } } // namespace bsdiff