brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · e04b38f Raw
83 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// UNSUPPORTED: no-localization10 11// test:12 13// template <class charT, class traits, size_t N>14// basic_istream<charT, traits>&15// operator>>(basic_istream<charT, traits>& is, bitset<N>& x);16 17#include <bitset>18#include <sstream>19#include <cassert>20#include "test_macros.h"21 22int main(int, char**)23{24    {25        std::istringstream in("01011010");26        std::bitset<8> b;27        in >> b;28        assert(b.to_ulong() == 0x5A);29    }30    {31        // Make sure that input-streaming an empty bitset does not cause the32        // failbit to be set (LWG 3199).33        std::istringstream in("01011010");34        std::bitset<0> b;35        in >> b;36        assert(b.to_string() == "");37        assert(!in.bad());38        assert(!in.fail());39        assert(!in.eof());40        assert(in.good());41    }42#ifndef TEST_HAS_NO_EXCEPTIONS43    {44        std::stringbuf sb;45        std::istream is(&sb);46        is.exceptions(std::ios::failbit);47 48        bool threw = false;49        try {50            std::bitset<8> b;51            is >> b;52        } catch (std::ios::failure const&) {53            threw = true;54        }55 56        assert(!is.bad());57        assert(is.fail());58        assert(is.eof());59        assert(threw);60    }61    {62        std::stringbuf sb;63        std::istream is(&sb);64        is.exceptions(std::ios::eofbit);65 66        bool threw = false;67        try {68            std::bitset<8> b;69            is >> b;70        } catch (std::ios::failure const&) {71            threw = true;72        }73 74        assert(!is.bad());75        assert(is.fail());76        assert(is.eof());77        assert(threw);78    }79#endif // TEST_HAS_NO_EXCEPTIONS80 81    return 0;82}83