libjxl

FORK: libjxl patches used on blog
git clone https://git.neptards.moe/blog/libjxl.git
Log | Files | Refs | Submodules | README | LICENSE

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