1 /*=============================================================================
2 Copyright (c) 2010-2011 Daniel James
4 Use, modification and distribution is subject to the Boost Software
5 License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6 http://www.boost.org/LICENSE_1_0.txt)
7 =============================================================================*/
9 // Some very light testing for quickbook::value and friends.
10 // Just for a few issues that came up during development.
13 #include <boost/detail/lightweight_test.hpp>
14 #include <boost/range/algorithm/equal.hpp>
21 BOOST_TEST(q
.empty());
22 BOOST_TEST(!q
.is_list());
23 BOOST_TEST(!q
.is_encoded());
28 std::string source
= "Source";
31 quickbook::file_ptr fake_file
=
32 new quickbook::file("(fake file)", source
, 105u);
33 q
= quickbook::qbk_value(
34 fake_file
, fake_file
->source().begin(), fake_file
->source().end());
36 BOOST_TEST_EQ(q
.get_quickbook(), quickbook::string_view(source
));
41 quickbook::value_builder b
;
42 b
.insert(quickbook::encoded_value("a", 10));
43 b
.insert(quickbook::encoded_value("b", 2));
44 b
.insert(quickbook::encoded_value("c", 5));
45 b
.insert(quickbook::encoded_value("d", 8));
48 quickbook::value_consumer c
= b
.release();
49 BOOST_TEST(c
.check(2));
50 BOOST_TEST_EQ(c
.consume(2).get_encoded(), "b");
51 BOOST_TEST(c
.check(5));
53 BOOST_TEST(c
.check(8));
55 BOOST_TEST(c
.check(10));
57 BOOST_TEST(!c
.check());
60 void multiple_list_test()
62 quickbook::value_builder list1
;
63 quickbook::value_builder list2
;
65 list1
.insert(quickbook::encoded_value("b", 10));
68 quickbook::value p1
= quickbook::encoded_value("a", 5);
73 list2
.insert(quickbook::encoded_value("c", 3));
75 quickbook::value_consumer l1
= list1
.release();
76 quickbook::value_consumer l2
= list2
.release();
78 BOOST_TEST(l1
.check(10));
79 BOOST_TEST_EQ(l1
.consume(10).get_encoded(), "b");
80 BOOST_TEST(l1
.check(5));
81 BOOST_TEST_EQ(l1
.consume(5).get_encoded(), "a");
82 BOOST_TEST(!l1
.check());
84 BOOST_TEST(l2
.check(5));
85 BOOST_TEST_EQ(l2
.consume(5).get_encoded(), "a");
86 BOOST_TEST(l2
.check(3));
87 BOOST_TEST_EQ(l2
.consume(3).get_encoded(), "c");
88 BOOST_TEST(!l2
.check());
93 std::vector
<quickbook::value
> distinct_values
;
95 quickbook::value_builder builder
;
99 distinct_values
.push_back(nil
);
102 distinct_values
.push_back(builder
.release());
106 distinct_values
.push_back(builder
.release());
108 for (std::size_t i
= 0; i
< distinct_values
.size(); ++i
) {
109 for (std::size_t j
= 0; j
< distinct_values
.size(); ++j
) {
110 if ((i
== j
) != (distinct_values
[i
] == distinct_values
[j
])) {
111 BOOST_ERROR("Value mismatch.");
112 BOOST_LIGHTWEIGHT_TEST_OSTREAM
<< "\tat " << i
<< ", " << j
124 multiple_list_test();
127 return boost::report_errors();