annotate tests/libcommon/weak_array/main.cpp @ 146:91e57baa2ede

Client: add prototype for map state, #712
author David Demelier <markand@malikania.fr>
date Sat, 30 Sep 2017 13:35:45 +0200
parents 119bcc5a727e
children 4b292c20124c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
104
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * main.cpp -- test weak_array
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
110
119bcc5a727e Misc: replace copyrights, closes #655
David Demelier <markand@malikania.fr>
parents: 104
diff changeset
4 * Copyright (c) 2013-2017 David Demelier <markand@malikania.fr>
104
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #define BOOST_TEST_MODULE "weak_array"
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <boost/test/unit_test.hpp>
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <malikania/weak_array.hpp>
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 namespace mlk {
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
25
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 class weak_array_fixture {
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 protected:
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 weak_array<int> array_;
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 };
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
30
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 BOOST_FIXTURE_TEST_SUITE(weak_array_suite, weak_array_fixture)
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
32
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 BOOST_AUTO_TEST_CASE(reuse)
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 {
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 auto value = std::make_shared<int>(123);
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
36
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 array_.push_back(value);
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 array_.push_back(std::make_shared<int>(256));
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
39
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 auto it1 = array_.find_if([] (auto ptr) {
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 return *ptr = 123;
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 });
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 auto it2 = array_.find_if([] (auto ptr) {
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 return *ptr = 123;
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 });
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
46
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 BOOST_TEST(it1 == value);
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 BOOST_TEST(it2 == value);
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 BOOST_TEST(it1 == it2);
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 BOOST_TEST(*it1 == 123);
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 BOOST_TEST(*it2 == 123);
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 }
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
53
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 BOOST_AUTO_TEST_CASE(not_found)
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 {
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 array_.push_back(std::make_shared<int>(123));
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
57
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 auto v = array_.find_if([] (auto ptr) {
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 return *ptr = 123;
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 });
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
61
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 BOOST_TEST(!v);
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 }
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
64
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 BOOST_AUTO_TEST_SUITE_END()
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
66
385ba70b93e3 Common: add weak_array class
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 } // !mlk