GCC Code Coverage Report


Directory: libs/http_proto/
File: src/rfc/upgrade_rule.cpp
Date: 2025-09-21 18:08:15
Exec Total Coverage
Lines: 14 15 93.3%
Functions: 1 1 100.0%
Branches: 7 8 87.5%

Line Branch Exec Source
1 //
2 // Copyright (c) 2021 Vinnie Falco (vinnie.falco@gmail.com)
3 //
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 //
7 // Official repository: https://github.com/cppalliance/http_proto
8 //
9
10 #include <boost/http_proto/rfc/upgrade_rule.hpp>
11 #include <boost/http_proto/rfc/token_rule.hpp>
12 #include <boost/url/grammar/error.hpp>
13 #include <boost/url/grammar/parse.hpp>
14
15 namespace boost {
16 namespace http_proto {
17 namespace implementation_defined {
18
19 auto
20 41 upgrade_protocol_rule_t::
21 parse(
22 char const*& it,
23 char const* end) const noexcept ->
24 system::result<value_type>
25 {
26 41 value_type t;
27 // token
28 {
29 41 auto rv = grammar::parse(
30 it, end, token_rule);
31
2/2
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 38 times.
41 if(! rv)
32 3 return rv.error();
33 38 t.name = *rv;
34 }
35 // [ "/" token ]
36
2/2
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 30 times.
38 if( it == end ||
37
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 7 times.
8 *it != '/')
38 31 return t;
39 7 ++it;
40 7 auto rv = grammar::parse(
41 it, end, token_rule);
42
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
7 if(! rv)
43 return rv.error();
44 7 t.version = *rv;
45 7 return t;
46 }
47
48 } // implementation_defined
49 } // http_proto
50 } // boost
51