File: test_atomic_bits_array.cc

package info (click to toggle)
jellyfish 2.3.1-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,276 kB
  • sloc: cpp: 35,703; sh: 995; ruby: 578; makefile: 397; python: 165; perl: 36
file content (32 lines) | stat: -rw-r--r-- 785 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <memory>

#include <gtest/gtest.h>
#include <unit_tests/test_main.hpp>
#include <jellyfish/atomic_bits_array.hpp>

namespace {
TEST(AtomicBitsArray, Fill) {
  static const size_t size = 2066;
  static const int    bits = 3;
  jellyfish::atomic_bits_array<unsigned char> ary(bits, size);
  std::unique_ptr<unsigned char[]> data(new unsigned char[size]);

  for(size_t i = 0; i < size; ++i) {
    data[i] = random_bits(bits);
    auto e = ary[i];
    e.get();
    EXPECT_TRUE(e.set(data[i]));
  }

  auto it = ary.begin();
  auto it_end = ary.end();
  for(size_t i = 0; i < size; ++i, ++it) {
    auto e = ary[i];
    EXPECT_EQ(data[i], e.get());
    EXPECT_EQ(data[i], (unsigned char)e);
    ASSERT_NE(it_end, it);
    EXPECT_EQ(data[i], *it);
  }
  EXPECT_EQ(it_end, it);
}
}