tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

padded_bytes_test.cc (2147B)


      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 <jxl/memory_manager.h>
      9 
     10 #include <cstddef>
     11 
     12 #include "lib/jxl/test_memory_manager.h"
     13 #include "lib/jxl/test_utils.h"
     14 #include "lib/jxl/testing.h"
     15 
     16 namespace jxl {
     17 namespace {
     18 
     19 TEST(PaddedBytesTest, TestNonEmptyFirstByteZero) {
     20  JxlMemoryManager* memory_manager = jxl::test::MemoryManager();
     21  JXL_TEST_ASSIGN_OR_DIE(PaddedBytes pb,
     22                         PaddedBytes::WithInitialSpace(memory_manager, 1));
     23  EXPECT_EQ(0, pb[0]);
     24  // Even after resizing..
     25  EXPECT_TRUE(pb.resize(20));
     26  EXPECT_EQ(0, pb[0]);
     27  // And reserving.
     28  EXPECT_TRUE(pb.reserve(200));
     29  EXPECT_EQ(0, pb[0]);
     30 }
     31 
     32 TEST(PaddedBytesTest, TestEmptyFirstByteZero) {
     33  JxlMemoryManager* memory_manager = jxl::test::MemoryManager();
     34  JXL_TEST_ASSIGN_OR_DIE(PaddedBytes pb,
     35                         PaddedBytes::WithInitialSpace(memory_manager, 0));
     36  // After resizing - new zero is written despite there being nothing to copy.
     37  ASSERT_TRUE(pb.resize(20));
     38  EXPECT_EQ(0, pb[0]);
     39 }
     40 
     41 TEST(PaddedBytesTest, TestFillWithoutReserve) {
     42  JxlMemoryManager* memory_manager = jxl::test::MemoryManager();
     43  PaddedBytes pb{memory_manager};
     44  for (size_t i = 0; i < 170u; ++i) {
     45    EXPECT_TRUE(pb.push_back(i));
     46  }
     47  EXPECT_EQ(170u, pb.size());
     48  EXPECT_GE(pb.capacity(), 170u);
     49 }
     50 
     51 TEST(PaddedBytesTest, TestFillWithExactReserve) {
     52  JxlMemoryManager* memory_manager = jxl::test::MemoryManager();
     53  PaddedBytes pb{memory_manager};
     54  EXPECT_TRUE(pb.reserve(170));
     55  for (size_t i = 0; i < 170u; ++i) {
     56    EXPECT_TRUE(pb.push_back(i));
     57  }
     58  EXPECT_EQ(170u, pb.size());
     59  EXPECT_EQ(pb.capacity(), 170u);
     60 }
     61 
     62 TEST(PaddedBytesTest, TestFillWithMoreReserve) {
     63  JxlMemoryManager* memory_manager = jxl::test::MemoryManager();
     64  PaddedBytes pb{memory_manager};
     65  EXPECT_TRUE(pb.reserve(171));
     66  for (size_t i = 0; i < 170u; ++i) {
     67    EXPECT_TRUE(pb.push_back(i));
     68  }
     69  EXPECT_EQ(170u, pb.size());
     70  EXPECT_GT(pb.capacity(), 170u);
     71 }
     72 
     73 }  // namespace
     74 }  // namespace jxl