1//
2// immer: immutable data structures for C++
3// Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente
4//
5// This software is distributed under the Boost Software License, Version 1.0.
6// See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
7//
8
9#include <immer/array.hpp>
10#include <cassert>
11
12int main()
13{
14 {
15// include:push-back/start
16 auto v1 = immer::array<int>{1};
17 auto v2 = v1.push_back(8);
18
19 assert((v1 == immer::array<int>{1}));
20 assert((v2 == immer::array<int>{1,8}));
21// include:push-back/end
22 }
23
24 {
25// include:set/start
26 auto v1 = immer::array<int>{1,2,3};
27 auto v2 = v1.set(0,5);
28
29 assert((v1 == immer::array<int>{1,2,3}));
30 assert((v2 == immer::array<int>{5,2,3}));
31// include:set/end
32 }
33
34 {
35// include:update/start
36 auto v1 = immer::array<int>{1,2,3,4};
37 auto v2 = v1.update(2, [&] (auto l) {
38 return ++l;
39 });
40
41 assert((v1 == immer::array<int>{1,2,3,4}));
42 assert((v2 == immer::array<int>{1,2,4,4}));
43// include:update/end
44 }
45
46 {
47// include:take/start
48 auto v1 = immer::array<int>{1,2,3,4,5,6};
49 auto v2 = v1.take(3);
50
51 assert((v1 == immer::array<int>{1,2,3,4,5,6}));
52 assert((v2 == immer::array<int>{1,2,3}));
53// include:take/end
54 }
55}
56