padded_bytes_test.cc (1399B)
1 // Copyright (c) the JPEG XL Project Authors. All rights reserved. 2 // 3 // Use of this source code is governed by a BSD-style 4 // license that can be found in the LICENSE file. 5 6 #include "lib/jxl/padded_bytes.h" 7 8 #include <numeric> // iota 9 #include <vector> 10 11 #include "lib/jxl/testing.h" 12 13 namespace jxl { 14 namespace { 15 16 TEST(PaddedBytesTest, TestNonEmptyFirstByteZero) { 17 PaddedBytes pb(1); 18 EXPECT_EQ(0, pb[0]); 19 // Even after resizing.. 20 pb.resize(20); 21 EXPECT_EQ(0, pb[0]); 22 // And reserving. 23 pb.reserve(200); 24 EXPECT_EQ(0, pb[0]); 25 } 26 27 TEST(PaddedBytesTest, TestEmptyFirstByteZero) { 28 PaddedBytes pb(0); 29 // After resizing - new zero is written despite there being nothing to copy. 30 pb.resize(20); 31 EXPECT_EQ(0, pb[0]); 32 } 33 34 TEST(PaddedBytesTest, TestFillWithoutReserve) { 35 PaddedBytes pb; 36 for (size_t i = 0; i < 170u; ++i) { 37 pb.push_back(i); 38 } 39 EXPECT_EQ(170u, pb.size()); 40 EXPECT_GE(pb.capacity(), 170u); 41 } 42 43 TEST(PaddedBytesTest, TestFillWithExactReserve) { 44 PaddedBytes pb; 45 pb.reserve(170); 46 for (size_t i = 0; i < 170u; ++i) { 47 pb.push_back(i); 48 } 49 EXPECT_EQ(170u, pb.size()); 50 EXPECT_EQ(pb.capacity(), 170u); 51 } 52 53 TEST(PaddedBytesTest, TestFillWithMoreReserve) { 54 PaddedBytes pb; 55 pb.reserve(171); 56 for (size_t i = 0; i < 170u; ++i) { 57 pb.push_back(i); 58 } 59 EXPECT_EQ(170u, pb.size()); 60 EXPECT_GT(pb.capacity(), 170u); 61 } 62 63 } // namespace 64 } // namespace jxl