179397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez//===----------------------------------------------------------------------===//
279397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez//
379397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez//                     The LLVM Compiler Infrastructure
479397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez//
579397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez// This file is dual licensed under the MIT and the University of Illinois Open
679397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez// Source Licenses. See LICENSE.TXT for details.
779397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez//
879397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez//===----------------------------------------------------------------------===//
979397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez
1079397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez// <set>
1179397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez
1279397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez// class set
1379397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez
1479397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez// set(const set& m, const allocator_type& a);
1579397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez
1679397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez#include <set>
1779397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez#include <cassert>
1879397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez
1979397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez#include "../../../test_compare.h"
2079397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez#include "test_allocator.h"
2179397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez
2279397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandezint main()
2379397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez{
2479397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    typedef int V;
2579397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    V ar[] =
2679397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    {
2779397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez        1,
2879397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez        1,
2979397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez        1,
3079397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez        2,
3179397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez        2,
3279397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez        2,
3379397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez        3,
3479397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez        3,
3579397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez        3
3679397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    };
3779397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    typedef test_compare<std::less<int> > C;
3879397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    typedef test_allocator<V> A;
3979397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    std::set<int, C, A> mo(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5), A(7));
4079397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    std::set<int, C, A> m(mo, A(3));
4179397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    assert(m.get_allocator() == A(3));
4279397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    assert(m.key_comp() == C(5));
4379397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    assert(m.size() == 3);
4479397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    assert(distance(m.begin(), m.end()) == 3);
4579397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    assert(*m.begin() == 1);
4679397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    assert(*next(m.begin()) == 2);
4779397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    assert(*next(m.begin(), 2) == 3);
4879397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez
4979397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    assert(mo.get_allocator() == A(7));
5079397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    assert(mo.key_comp() == C(5));
5179397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    assert(mo.size() == 3);
5279397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    assert(distance(mo.begin(), mo.end()) == 3);
5379397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    assert(*mo.begin() == 1);
5479397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    assert(*next(mo.begin()) == 2);
5579397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez    assert(*next(mo.begin(), 2) == 3);
5679397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez}
5779397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez