// Copyright 2015 The Chromium 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 "cc/raster/texture_compressor.h" #include #include "testing/gtest/include/gtest/gtest.h" namespace cc { namespace { const int kImageWidth = 256; const int kImageHeight = 256; const int kImageChannels = 4; const int kImageSizeInBytes = kImageWidth * kImageHeight * kImageChannels; TEST(TextureCompressorETC1Test, Compress256x256Ratio) { scoped_ptr compressor = TextureCompressor::Create(TextureCompressor::kFormatETC1); uint8_t src[kImageSizeInBytes]; uint8_t dst[kImageSizeInBytes]; const unsigned int kImagePoison = 0xDEADBEEF; // Poison destination bytes so we can see how much has been // overwritten by compression algorithm. uint32_t* dst_32 = reinterpret_cast(dst); for (int i = 0; i < kImageWidth * kImageHeight; i++) { dst_32[i] = kImagePoison; } // Generate test texture. for (int i = 0; i < kImageSizeInBytes; i++) { src[i] = i % 256; } compressor->Compress(src, dst, kImageWidth, kImageHeight, TextureCompressor::kQualityLow); int compressed_size = 0; for (compressed_size = 0; compressed_size < kImageWidth * kImageHeight; compressed_size++) { if (dst_32[compressed_size] == kImagePoison) { // Represents size in bytes of the compressed block. compressed_size = compressed_size * 4; break; } } // Check if compression ratio is 8:1 for RGBA or BGRA images, after discarding // alpha channel. EXPECT_EQ(kImageSizeInBytes, compressed_size * 8); } } // namespace } // namespace cc