54 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// <ios>10 11// template <class charT, class traits> class basic_ios12 13// iostate exceptions() const;14 15#include <ios>16#include <streambuf>17#include <cassert>18 19#include "test_macros.h"20 21struct testbuf : public std::streambuf {};22 23int main(int, char**)24{25 {26 std::ios ios(0);27 assert(ios.exceptions() == std::ios::goodbit);28 ios.exceptions(std::ios::eofbit);29 assert(ios.exceptions() == std::ios::eofbit);30#ifndef TEST_HAS_NO_EXCEPTIONS31 try32 {33 ios.exceptions(std::ios::badbit);34 assert(false);35 }36 catch (std::ios::failure&)37 {38 }39 assert(ios.exceptions() == std::ios::badbit);40#endif41 }42 {43 testbuf sb;44 std::ios ios(&sb);45 assert(ios.exceptions() == std::ios::goodbit);46 ios.exceptions(std::ios::eofbit);47 assert(ios.exceptions() == std::ios::eofbit);48 ios.exceptions(std::ios::badbit);49 assert(ios.exceptions() == std::ios::badbit);50 }51 52 return 0;53}54