X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=libstdc%2B%2B-v3%2Ftestsuite%2F23_containers%2Fbitset%2Foperations%2F1.cc;fp=libstdc%2B%2B-v3%2Ftestsuite%2F23_containers%2Fbitset%2Foperations%2F1.cc;h=227b66429ce9eab6c135543d1bfc7c438dd690d2;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=0000000000000000000000000000000000000000;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git diff --git a/libstdc++-v3/testsuite/23_containers/bitset/operations/1.cc b/libstdc++-v3/testsuite/23_containers/bitset/operations/1.cc new file mode 100644 index 00000000..227b6642 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/bitset/operations/1.cc @@ -0,0 +1,108 @@ +// 2000-01-15 Anders Widell + +// Copyright (C) 2000, 2003, 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// . + +#include +#include +#include +#include + +static char original_bits[1024]; +static char left_shifted[1024]; +static char right_shifted[1024]; + +char +random_bit() { + static long x = 1; + return ((x = (3432L*x + 6789L) % 9973L) & 1) + '0'; +} + +void +initialise(size_t size) { + for (size_t i=0; i + bool + do_test() { + bool test __attribute__((unused)) = true; + + std::bitset shifted; + std::bitset correct; + + initialise(size); + + //std::bitset original = std::string(original_bits); + std::bitset original = std::bitset (std::string(original_bits)); + + for (size_t shift_step=0; shift_step==0 || shift_step (std::string(left_shifted)); + VERIFY( shifted == correct ); + + shifted = original; + shifted >>= shift_step; + //correct = std::string(right_shifted); + correct = std::bitset (std::string(right_shifted)); + VERIFY( shifted == correct ); + } + + return test; + } + +bool +test01() { + bool test __attribute__((unused)) = true; + + VERIFY( do_test<32>() ); + VERIFY( do_test<48>() ); + VERIFY( do_test<64>() ); + + VERIFY( do_test<511>() ); + VERIFY( do_test<513>() ); + VERIFY( do_test<997>() ); + return test; +} + +int +main() +{ + test01(); + return 0; +}