diff options
author | Vincent Ambo <mail@tazj.in> | 2020-12-23T12·36+0100 |
---|---|---|
committer | tazjin <mail@tazj.in> | 2020-12-23T12·44+0000 |
commit | 73e9265f954528b6b2eccf98572e77126539a8df (patch) | |
tree | 48a1e093761e86c5e605d074e8c4d5f1bb64f1b1 /third_party/immer/test/box | |
parent | f7ea650142eb796eb3f2827c805cc0bc563e2183 (diff) |
chore(3p/immer): Remove vendored copy of immer r/2029
We ended up dropping the use of this library again. Change-Id: I2c44cd22a6128d23f87a582402bf5fb84991d608 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2292 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
Diffstat (limited to 'third_party/immer/test/box')
-rw-r--r-- | third_party/immer/test/box/default.cpp | 12 | ||||
-rw-r--r-- | third_party/immer/test/box/gc.cpp | 20 | ||||
-rw-r--r-- | third_party/immer/test/box/generic.ipp | 58 | ||||
-rw-r--r-- | third_party/immer/test/box/recursive.cpp | 108 | ||||
-rw-r--r-- | third_party/immer/test/box/vector-of-boxes-transient.cpp | 36 |
5 files changed, 0 insertions, 234 deletions
diff --git a/third_party/immer/test/box/default.cpp b/third_party/immer/test/box/default.cpp deleted file mode 100644 index fbd1b178df08..000000000000 --- a/third_party/immer/test/box/default.cpp +++ /dev/null @@ -1,12 +0,0 @@ -// -// immer: immutable data structures for C++ -// Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente -// -// This software is distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt -// - -#include <immer/box.hpp> - -#define BOX_T ::immer::box -#include "generic.ipp" diff --git a/third_party/immer/test/box/gc.cpp b/third_party/immer/test/box/gc.cpp deleted file mode 100644 index 04e459559abc..000000000000 --- a/third_party/immer/test/box/gc.cpp +++ /dev/null @@ -1,20 +0,0 @@ -// -// immer: immutable data structures for C++ -// Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente -// -// This software is distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt -// - -#include <immer/box.hpp> -#include <immer/heap/gc_heap.hpp> -#include <immer/refcount/no_refcount_policy.hpp> - -using gc_memory = immer::memory_policy<immer::heap_policy<immer::gc_heap>, - immer::no_refcount_policy>; - -template <typename T> -using test_box_t = immer::box<T, gc_memory>; - -#define BOX_T test_box_t -#include "generic.ipp" diff --git a/third_party/immer/test/box/generic.ipp b/third_party/immer/test/box/generic.ipp deleted file mode 100644 index cfb5f04ea1b9..000000000000 --- a/third_party/immer/test/box/generic.ipp +++ /dev/null @@ -1,58 +0,0 @@ -// -// immer: immutable data structures for C++ -// Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente -// -// This software is distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt -// - -#ifndef BOX_T -#error "define the box template to use in BOX_T" -#endif - -#include <catch.hpp> - -TEST_CASE("construction and copy") -{ - auto x = BOX_T<int>{}; - CHECK(x == 0); - - auto y = x; - CHECK(&x.get() == &y.get()); - - auto z = std::move(x); - CHECK(&z.get() == &y.get()); -} - -TEST_CASE("equality") -{ - auto x = BOX_T<int>{}; - auto y = x; - CHECK(x == 0.0f); - CHECK(x == y); - CHECK(x == BOX_T<int>{}); - CHECK(x != BOX_T<int>{42}); -} - -TEST_CASE("update") -{ - auto x = BOX_T<int>{}; - auto y = x.update([](auto v) { return v + 1; }); - CHECK(x == 0); - CHECK(y == 1); -} - -TEST_CASE("update move") -{ - auto x = BOX_T<int>{}; - auto addr = &x.get(); - auto y = std::move(x).update( - [](auto&& v) { return std::forward<decltype(v)>(v) + 1; }); - - CHECK(y == 1); - if (std::is_empty<typename BOX_T<int>::memory_policy::refcount>::value) { - CHECK(&y.get() != addr); - } else { - CHECK(&y.get() == addr); - } -} diff --git a/third_party/immer/test/box/recursive.cpp b/third_party/immer/test/box/recursive.cpp deleted file mode 100644 index 4c8fce07dea2..000000000000 --- a/third_party/immer/test/box/recursive.cpp +++ /dev/null @@ -1,108 +0,0 @@ -// -// immer: immutable data structures for C++ -// Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente -// -// This software is distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt -// - -#include <immer/algorithm.hpp> -#include <immer/box.hpp> -#include <immer/flex_vector.hpp> -#include <immer/map.hpp> -#include <immer/set.hpp> -#include <immer/vector.hpp> - -#include <catch.hpp> - -struct rec_vec -{ - int data; - immer::vector<immer::box<rec_vec>> children; -}; - -TEST_CASE("recursive vector") -{ - auto v1 = rec_vec{42, - {rec_vec{12, {}}, - rec_vec{13, {rec_vec{5, {}}, rec_vec{7, {}}}}, - rec_vec{15, {}}}}; - CHECK(v1.data == 42); - CHECK(v1.children[0]->data == 12); - CHECK(v1.children[1]->children[0]->data == 5); -} - -struct rec_fvec -{ - int data; - immer::flex_vector<immer::box<rec_fvec>> children; -}; - -TEST_CASE("recursive flex_vector") -{ - auto v1 = rec_fvec{42, - {rec_fvec{12, {}}, - rec_fvec{13, {rec_fvec{5, {}}, rec_fvec{7, {}}}}, - rec_fvec{15, {}}}}; - CHECK(v1.data == 42); - CHECK(v1.children[0]->data == 12); - CHECK(v1.children[1]->children[0]->data == 5); -} - -struct rec_map -{ - int data; - immer::map<std::string, immer::box<rec_map>> children; -}; - -TEST_CASE("recursive map") -{ - auto v1 = rec_map{42, {}}; - auto v2 = rec_map{43, v1.children.set("hello", rec_map{12, {}})}; - auto v3 = rec_map{44, v2.children.set("world", rec_map{13, {}})}; - - CHECK(v3.data == 44); - CHECK(v3.children["hello"]->data == 12); - CHECK(v3.children["world"]->data == 13); -} - -struct rec_set -{ - int data; - immer::set<immer::box<rec_set>> children; - - bool operator==(const rec_set& other) const - { - return data == other.data && children == other.children; - } - bool operator!=(const rec_set& other) const { return !(*this == other); } -}; - -namespace std { - -template <> -struct hash<rec_set> -{ - auto operator()(const rec_set& s) - { - return std::hash<decltype(s.data)>{}(s.data) ^ - immer::accumulate( - s.children, std::size_t{}, [](auto ac, auto v) { - return std::hash<decltype(v)>{}(v); - }); - } -}; - -} // namespace std - -TEST_CASE("recursive set") -{ - auto v1 = rec_set{42, {}}; - auto v2 = rec_set{43, v1.children.insert(rec_set{12, {}})}; - auto v3 = rec_set{44, v2.children.insert(rec_set{13, {}})}; - - CHECK(v3.data == 44); - CHECK(v3.children.count(rec_set{12, {}}) == 1); - CHECK(v3.children.count(rec_set{13, {}}) == 1); - CHECK(v3.children.count(rec_set{14, {}}) == 0); -} diff --git a/third_party/immer/test/box/vector-of-boxes-transient.cpp b/third_party/immer/test/box/vector-of-boxes-transient.cpp deleted file mode 100644 index 623c8ba37d32..000000000000 --- a/third_party/immer/test/box/vector-of-boxes-transient.cpp +++ /dev/null @@ -1,36 +0,0 @@ -// -// immer: immutable data structures for C++ -// Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente -// -// This software is distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt -// - -#include <immer/box.hpp> -#include <immer/vector.hpp> -#include <immer/vector_transient.hpp> - -#include <catch.hpp> - -TEST_CASE("issue-33") -{ - using Element = immer::box<std::string>; - auto vect = immer::vector<Element>{}; - - // this one works fine - for (auto i = 0; i < 100; ++i) { - vect = vect.push_back(Element("x")); - } - - // this one doesn't compile - auto t = vect.transient(); - - for (auto i = 0; i < 100; ++i) { - t.push_back(Element("x")); - } - - vect = t.persistent(); - - CHECK(*vect[0] == "x"); - CHECK(*vect[99] == "x"); -} |