1 //===----------------------------------------------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is dual licensed under the MIT and the University of Illinois Open 6 // Source Licenses. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 // test bitset<N>& reset(size_t pos); 11 12 #include <bitset> 13 #include <cassert> 14 #include <stdexcept> 15 16 #include "test_macros.h" 17 18 template <std::size_t N> test_reset_one(bool test_throws)19void test_reset_one(bool test_throws) 20 { 21 std::bitset<N> v; 22 #ifdef TEST_HAS_NO_EXCEPTIONS 23 if (test_throws) return; 24 #else 25 try 26 { 27 #endif 28 v.set(); 29 v.reset(50); 30 if (50 >= v.size()) 31 assert(false); 32 for (unsigned i = 0; i < v.size(); ++i) 33 if (i == 50) 34 assert(!v[i]); 35 else 36 assert(v[i]); 37 assert(!test_throws); 38 #ifndef TEST_HAS_NO_EXCEPTIONS 39 } 40 catch (std::out_of_range&) 41 { 42 assert(test_throws); 43 } 44 #endif 45 } 46 main()47int main() 48 { 49 test_reset_one<0>(true); 50 test_reset_one<1>(true); 51 test_reset_one<31>(true); 52 test_reset_one<32>(true); 53 test_reset_one<33>(true); 54 test_reset_one<63>(false); 55 test_reset_one<64>(false); 56 test_reset_one<65>(false); 57 test_reset_one<1000>(false); 58 } 59