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.
12 #include <boost/detail/lightweight_test.hpp>
13 #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
= new quickbook::file(
32 "(fake file)", source
, 105u);
33 q
= quickbook::qbk_value(
35 fake_file
->source().begin(),
36 fake_file
->source().end());
38 BOOST_TEST_EQ(q
.get_quickbook(), quickbook::string_view(source
));
43 quickbook::value_builder b
;
44 b
.insert(quickbook::encoded_value("a", 10));
45 b
.insert(quickbook::encoded_value("b", 2));
46 b
.insert(quickbook::encoded_value("c", 5));
47 b
.insert(quickbook::encoded_value("d", 8));
50 quickbook::value_consumer c
= b
.release();
51 BOOST_TEST(c
.check(2)); BOOST_TEST_EQ(c
.consume(2).get_encoded(), "b");
52 BOOST_TEST(c
.check(5)); c
.consume(5);
53 BOOST_TEST(c
.check(8)); c
.consume(8);
54 BOOST_TEST(c
.check(10)); c
.consume(10);
55 BOOST_TEST(!c
.check());
58 void multiple_list_test()
60 quickbook::value_builder list1
;
61 quickbook::value_builder list2
;
63 list1
.insert(quickbook::encoded_value("b", 10));
66 quickbook::value p1
= quickbook::encoded_value("a", 5);
71 list2
.insert(quickbook::encoded_value("c", 3));
73 quickbook::value_consumer l1
= list1
.release();
74 quickbook::value_consumer l2
= list2
.release();
76 BOOST_TEST(l1
.check(10));
77 BOOST_TEST_EQ(l1
.consume(10).get_encoded(), "b");
78 BOOST_TEST(l1
.check(5));
79 BOOST_TEST_EQ(l1
.consume(5).get_encoded(), "a");
80 BOOST_TEST(!l1
.check());
82 BOOST_TEST(l2
.check(5));
83 BOOST_TEST_EQ(l2
.consume(5).get_encoded(), "a");
84 BOOST_TEST(l2
.check(3));
85 BOOST_TEST_EQ(l2
.consume(3).get_encoded(), "c");
86 BOOST_TEST(!l2
.check());
91 std::vector
<quickbook::value
> distinct_values
;
93 quickbook::value_builder builder
;
97 distinct_values
.push_back(nil
);
100 distinct_values
.push_back(builder
.release());
104 distinct_values
.push_back(builder
.release());
106 for(std::size_t i
= 0; i
< distinct_values
.size(); ++i
) {
107 for(std::size_t j
= 0; j
< distinct_values
.size(); ++j
) {
108 if ((i
== j
) != (distinct_values
[i
] == distinct_values
[j
])) {
109 BOOST_ERROR("Value mismatch.");
110 BOOST_LIGHTWEIGHT_TEST_OSTREAM
111 << "\tat " << i
<< ", " << j
<< std::endl
;
122 multiple_list_test();
125 return boost::report_errors();