op_eq_eq.pass.cpp revision c52f43e72dfcea03037729649da84c23b3beb04a
1//===----------------------------------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10// test: 11 12// bool operator==(const bitset<N>& rhs) const; 13// bool operator!=(const bitset<N>& rhs) const; 14 15#include <bitset> 16#include <cstdlib> 17#include <cassert> 18 19template <std::size_t N> 20std::bitset<N> 21make_bitset() 22{ 23 std::bitset<N> v; 24 for (std::size_t i = 0; i < N; ++i) 25 v[i] = static_cast<bool>(std::rand() & 1); 26 return v; 27} 28 29template <std::size_t N> 30void test_equality() 31{ 32 const std::bitset<N> v1 = make_bitset<N>(); 33 std::bitset<N> v2 = v1; 34 assert(v1 == v2); 35 if (N > 0) 36 { 37 v2[N/2].flip(); 38 assert(v1 != v2); 39 } 40} 41 42int main() 43{ 44 test_equality<0>(); 45 test_equality<1>(); 46 test_equality<31>(); 47 test_equality<32>(); 48 test_equality<33>(); 49 test_equality<63>(); 50 test_equality<64>(); 51 test_equality<65>(); 52 test_equality<1000>(); 53} 54