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 <immer/array_transient.hpp> |
11 | |
12 | #define VECTOR_T ::immer::array |
13 | #define VECTOR_TRANSIENT_T ::immer::array_transient |
14 | |
15 | #include "../vector_transient/generic.ipp" |
16 | |
17 | TEST_CASE("array_transient default constructor compiles") |
18 | { |
19 | immer::array_transient<int> transient; |
20 | } |
21 | |
22 | TEST_CASE("array provides mutable data") |
23 | { |
24 | auto arr = immer::array<int>(10, 0); |
25 | CHECK(arr.size() == 10); |
26 | auto tr = arr.transient(); |
27 | CHECK(tr.data() == arr.data()); |
28 | |
29 | auto d = tr.data_mut(); |
30 | CHECK(tr.data_mut() != arr.data()); |
31 | CHECK(tr.data() == tr.data_mut()); |
32 | CHECK(arr.data() != tr.data_mut()); |
33 | |
34 | arr = tr.persistent(); |
35 | CHECK(arr.data() == d); |
36 | CHECK(arr.data() == tr.data()); |
37 | |
38 | CHECK(tr.data_mut() != arr.data()); |
39 | CHECK(tr.data() == tr.data_mut()); |
40 | CHECK(arr.data() != tr.data_mut()); |
41 | } |
42 |