char_ptr_ctor.pass.cpp revision c52f43e72dfcea03037729649da84c23b3beb04a
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// License. See LICENSE.TXT for details.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// test bitset(const char *str);
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <bitset>
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cassert>
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <std::size_t N>
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void test_char_pointer_ctor()
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    try
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        std::bitset<N> v("xxx1010101010xxxx");
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(false);
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    catch (std::invalid_argument&)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const char str[] ="1010101010";
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    std::bitset<N> v(str);
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    std::size_t M = std::min<std::size_t>(N, 10);
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for (std::size_t i = 0; i < M; ++i)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(v[i] == (str[M - 1 - i] == '1'));
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for (std::size_t i = 10; i < N; ++i)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(v[i] == false);
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int main()
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_char_pointer_ctor<0>();
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_char_pointer_ctor<1>();
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_char_pointer_ctor<31>();
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_char_pointer_ctor<32>();
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_char_pointer_ctor<33>();
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_char_pointer_ctor<63>();
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_char_pointer_ctor<64>();
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_char_pointer_ctor<65>();
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test_char_pointer_ctor<1000>();
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)