MCPcopy Create free account
hub / github.com/boostorg/json / testUtf8Sequence

Method testUtf8Sequence

test/utf8.cpp:111–164  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

109 }
110
111 void
112 testUtf8Sequence()
113 {
114 char const* str = "\xE0\xA0\x80\00\00";
115 detail::utf8_sequence seq;
116 seq.save(str, std::strlen(str));
117 BOOST_TEST(seq.complete());
118 BOOST_TEST(seq.length() == 3);
119 BOOST_TEST(seq.needed() == 0);
120 BOOST_TEST(string_view(seq.data(), 3) == str);
121 BOOST_TEST(seq.valid());
122
123 seq.save(str, 1);
124 BOOST_TEST(!seq.complete());
125 BOOST_TEST(seq.length() == 3);
126 BOOST_TEST(seq.needed() == 2);
127 BOOST_TEST(string_view(seq.data(), 1) == string_view(str, 1));
128
129 seq.append(str + 1, 1);
130 BOOST_TEST(!seq.complete());
131 BOOST_TEST(seq.length() == 3);
132 BOOST_TEST(seq.needed() == 1);
133 BOOST_TEST(string_view(seq.data(), 2) == string_view(str, 2));
134
135 seq.append(str + 2, 2);
136 BOOST_TEST(seq.complete());
137 BOOST_TEST(seq.length() == 3);
138 BOOST_TEST(seq.needed() == 0);
139 BOOST_TEST(string_view(seq.data(), 3) == str);
140 BOOST_TEST(seq.valid());
141
142 seq.append(str + 3, 1);
143 BOOST_TEST(seq.complete());
144 BOOST_TEST(seq.length() == 3);
145 BOOST_TEST(seq.needed() == 0);
146 BOOST_TEST(string_view(seq.data(), 3) == str);
147 BOOST_TEST(seq.valid());
148
149 str = "\xF0\x90\x80\x80";
150 seq.save(str, std::strlen(str));
151 BOOST_TEST(seq.complete());
152 BOOST_TEST(seq.length() == 4);
153 BOOST_TEST(seq.needed() == 0);
154 BOOST_TEST(string_view(seq.data(), 4) == str);
155 BOOST_TEST(seq.valid());
156
157 str = "\xF0\x90\x80\xC0";
158 seq.save(str, std::strlen(str));
159 BOOST_TEST(seq.complete());
160 BOOST_TEST(seq.length() == 4);
161 BOOST_TEST(seq.needed() == 0);
162 BOOST_TEST(string_view(seq.data(), 4) == str);
163 BOOST_TEST(!seq.valid());
164 }
165
166 void
167 run()

Callers

nothing calls this directly

Calls 8

string_viewClass · 0.85
saveMethod · 0.80
completeMethod · 0.80
lengthMethod · 0.80
neededMethod · 0.80
validMethod · 0.80
dataMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected