aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/tr2/dynamic_bitset/pr115399.cc
blob: e626e4a5d15662a4a53fbab2c6d57f587512806e (plain)
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
33
34
35
36
37
// { dg-do run { target c++11 } }

// PR libstdc++/115399
// std::tr2::dynamic_bitset shift behaves differently from std::bitset

#include <tr2/dynamic_bitset>
#include <testsuite_hooks.h>

void
test_left_shift()
{
  std::tr2::dynamic_bitset<> b(65);
  b[0] = 1;
  auto b2 = b << 64;
  VERIFY(b2[64] == 1);
  VERIFY(b2[0] == 0);
  b <<= 64;
  VERIFY( b2 == b );
}

void
test_right_shift()
{
  std::tr2::dynamic_bitset<> b(65);
  b[64] = 1;
  auto b2 = b >> 64;
  VERIFY(b2[64] == 0);
  VERIFY(b2[0] == 1);
  b >>= 64;
  VERIFY( b2 == b );
}

int main()
{
  test_left_shift();
  test_right_shift();
}