reset_one.pass.cpp revision b64f8b07c104c6cc986570ac8ee0ed16a9f23976
12d67b90a21c9c1093e6598809c2cbc832919cfe6Argyrios Kyrtzidis//===----------------------------------------------------------------------===//
22d67b90a21c9c1093e6598809c2cbc832919cfe6Argyrios Kyrtzidis//
32d67b90a21c9c1093e6598809c2cbc832919cfe6Argyrios Kyrtzidis//                     The LLVM Compiler Infrastructure
42d67b90a21c9c1093e6598809c2cbc832919cfe6Argyrios Kyrtzidis//
52d67b90a21c9c1093e6598809c2cbc832919cfe6Argyrios Kyrtzidis// This file is dual licensed under the MIT and the University of Illinois Open
62d67b90a21c9c1093e6598809c2cbc832919cfe6Argyrios Kyrtzidis// Source Licenses. See LICENSE.TXT for details.
72d67b90a21c9c1093e6598809c2cbc832919cfe6Argyrios Kyrtzidis//
82d67b90a21c9c1093e6598809c2cbc832919cfe6Argyrios Kyrtzidis//===----------------------------------------------------------------------===//
92d67b90a21c9c1093e6598809c2cbc832919cfe6Argyrios Kyrtzidis
106026df1e5d518a958aef342d55a9e5d0fbdb85caJordan Rose// test bitset<N>& reset(size_t pos);
112d67b90a21c9c1093e6598809c2cbc832919cfe6Argyrios Kyrtzidis
122d67b90a21c9c1093e6598809c2cbc832919cfe6Argyrios Kyrtzidis#include <bitset>
132d67b90a21c9c1093e6598809c2cbc832919cfe6Argyrios Kyrtzidis#include <cassert>
142d67b90a21c9c1093e6598809c2cbc832919cfe6Argyrios Kyrtzidis
1558f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenektemplate <std::size_t N>
1655fc873017f10f6f566b182b70f6fc22aefa3464Chandler Carruthvoid test_reset_one()
17196b8cfe9cfcc452eb2f83aa4ad330c2324f8c7dAnna Zaks{
1855fc873017f10f6f566b182b70f6fc22aefa3464Chandler Carruth    std::bitset<N> v;
1955fc873017f10f6f566b182b70f6fc22aefa3464Chandler Carruth    try
209f7ba9bd52823eb0fdb64767f2d09fb6b96b8179Anna Zaks    {
219f7ba9bd52823eb0fdb64767f2d09fb6b96b8179Anna Zaks        v.set();
22682060c5d95f6e4f79536013781ab0870cdd3850Ted Kremenek        v.reset(50);
232d67b90a21c9c1093e6598809c2cbc832919cfe6Argyrios Kyrtzidis        if (50 >= v.size())
242d67b90a21c9c1093e6598809c2cbc832919cfe6Argyrios Kyrtzidis            assert(false);
252d67b90a21c9c1093e6598809c2cbc832919cfe6Argyrios Kyrtzidis        for (unsigned i = 0; i < v.size(); ++i)
262d67b90a21c9c1093e6598809c2cbc832919cfe6Argyrios Kyrtzidis            if (i == 50)
272d67b90a21c9c1093e6598809c2cbc832919cfe6Argyrios Kyrtzidis                assert(!v[i]);
2858f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenek            else
2958f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenek                assert(v[i]);
3058f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenek    }
3158f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenek    catch (std::out_of_range&)
3258f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenek    {
3358f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenek    }
3458f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenek}
3558f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenek
3658f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenekint main()
3702f34c5003b2c5067675f89ffce0a84c28faf722Anna Zaks{
3802f34c5003b2c5067675f89ffce0a84c28faf722Anna Zaks    test_reset_one<0>();
3958f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenek    test_reset_one<1>();
4058f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenek    test_reset_one<31>();
4158f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenek    test_reset_one<32>();
4258f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenek    test_reset_one<33>();
4358f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenek    test_reset_one<63>();
4458f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenek    test_reset_one<64>();
4558f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenek    test_reset_one<65>();
4658f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenek    test_reset_one<1000>();
4758f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenek}
4858f6f1e37ab32fdd0c8bab6771d8e09bc139e9edTed Kremenek