tor-browser

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

TestBuffer.cpp (2164B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 #include "gtest/gtest.h"
      6 
      7 #include "mozilla/Buffer.h"
      8 #include "mozilla/Array.h"
      9 
     10 using namespace mozilla;
     11 
     12 TEST(Buffer, TestBufferInfallible)
     13 {
     14  const size_t LEN = 8;
     15  Array<int32_t, LEN> arr = {1, 2, 3, 4, 5, 6, 7, 8};
     16  Buffer<int32_t> buf(arr);
     17 
     18  for (size_t i = 0; i < LEN; i++) {
     19    ASSERT_EQ(buf[i], arr[i]);
     20  }
     21 
     22  auto iter = buf.begin();
     23  auto end = buf.end();
     24  for (size_t i = 0; i < LEN; i++) {
     25    ASSERT_EQ(*iter, arr[i]);
     26    iter++;
     27  }
     28  ASSERT_EQ(iter, end);
     29 
     30  Span<int32_t> span = buf;
     31  for (size_t i = 0; i < LEN; i++) {
     32    ASSERT_EQ(span[i], arr[i]);
     33  }
     34 
     35  auto spanIter = span.begin();
     36  auto spanEnd = span.end();
     37  for (size_t i = 0; i < LEN; i++) {
     38    ASSERT_EQ(*spanIter, arr[i]);
     39    spanIter++;
     40  }
     41  ASSERT_EQ(spanIter, spanEnd);
     42 
     43  span[3] = 42;
     44  ASSERT_EQ(buf[3], 42);
     45 
     46  Buffer<int32_t> another(std::move(buf));
     47  ASSERT_EQ(another[3], 42);
     48  ASSERT_EQ(buf.Length(), 0U);
     49 }
     50 
     51 TEST(Buffer, TestBufferFallible)
     52 {
     53  const size_t LEN = 8;
     54  Array<int32_t, LEN> arr = {1, 2, 3, 4, 5, 6, 7, 8};
     55  auto maybe = Buffer<int32_t>::CopyFrom(arr);
     56  ASSERT_TRUE(maybe.isSome());
     57  Buffer<int32_t> buf(std::move(*maybe));
     58 
     59  for (size_t i = 0; i < LEN; i++) {
     60    ASSERT_EQ(buf[i], arr[i]);
     61  }
     62 
     63  auto iter = buf.begin();
     64  auto end = buf.end();
     65  for (size_t i = 0; i < LEN; i++) {
     66    ASSERT_EQ(*iter, arr[i]);
     67    iter++;
     68  }
     69  ASSERT_EQ(iter, end);
     70 
     71  Span<int32_t> span = buf;
     72  for (size_t i = 0; i < LEN; i++) {
     73    ASSERT_EQ(span[i], arr[i]);
     74  }
     75 
     76  auto spanIter = span.begin();
     77  auto spanEnd = span.end();
     78  for (size_t i = 0; i < LEN; i++) {
     79    ASSERT_EQ(*spanIter, arr[i]);
     80    spanIter++;
     81  }
     82  ASSERT_EQ(spanIter, spanEnd);
     83 
     84  span[3] = 42;
     85  ASSERT_EQ(buf[3], 42);
     86 
     87  Buffer<int32_t> another(std::move(buf));
     88  ASSERT_EQ(another[3], 42);
     89  ASSERT_EQ(buf.Length(), 0U);
     90 }
     91 
     92 TEST(Buffer, TestBufferElements)
     93 {
     94  ASSERT_EQ(Buffer<int32_t>().Elements(),
     95            reinterpret_cast<int32_t*>(alignof(int32_t)));
     96 }