NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
close.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2014, Peter Thorson. All rights reserved.
3
*
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions are met:
6
* * Redistributions of source code must retain the above copyright
7
* notice, this list of conditions and the following disclaimer.
8
* * Redistributions in binary form must reproduce the above copyright
9
* notice, this list of conditions and the following disclaimer in the
10
* documentation and/or other materials provided with the distribution.
11
* * Neither the name of the WebSocket++ Project nor the
12
* names of its contributors may be used to endorse or promote products
13
* derived from this software without specific prior written permission.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
* ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY
19
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
*
26
*/
27
//#define BOOST_TEST_DYN_LINK
28
#define BOOST_TEST_MODULE close
29
#include <boost/test/unit_test.hpp>
30
31
#include <iostream>
32
#include <string>
33
34
#include <
websocketpp/close.hpp
>
35
#include <
websocketpp/utilities.hpp
>
36
37
using namespace
websocketpp
;
38
39
BOOST_AUTO_TEST_CASE
( reserved_values ) {
40
BOOST_CHECK( !
close::status::reserved
(999) );
41
BOOST_CHECK(
close::status::reserved
(1004) );
42
BOOST_CHECK(
close::status::reserved
(1016) );
43
BOOST_CHECK(
close::status::reserved
(2999) );
44
BOOST_CHECK( !
close::status::reserved
(1000) );
45
}
46
47
BOOST_AUTO_TEST_CASE
( invalid_values ) {
48
BOOST_CHECK(
close::status::invalid
(0) );
49
BOOST_CHECK(
close::status::invalid
(999) );
50
BOOST_CHECK( !
close::status::invalid
(1000) );
51
BOOST_CHECK(
close::status::invalid
(1005) );
52
BOOST_CHECK(
close::status::invalid
(1006) );
53
BOOST_CHECK(
close::status::invalid
(1015) );
54
BOOST_CHECK( !
close::status::invalid
(2999) );
55
BOOST_CHECK( !
close::status::invalid
(3000) );
56
BOOST_CHECK(
close::status::invalid
(5000) );
57
}
58
59
BOOST_AUTO_TEST_CASE
( value_extraction ) {
60
lib::error_code ec;
61
std::string payload =
"oo"
;
62
63
// Value = 1000
64
payload[0] = 0x03;
65
payload[1] = char(0xe8);
66
BOOST_CHECK(
close::extract_code
(payload,ec) ==
close::status::normal
);
67
BOOST_CHECK( !ec );
68
69
// Value = 1004
70
payload[0] = 0x03;
71
payload[1] = char(0xec);
72
BOOST_CHECK(
close::extract_code
(payload,ec) == 1004 );
73
BOOST_CHECK( ec ==
error::reserved_close_code
);
74
75
// Value = 1005
76
payload[0] = 0x03;
77
payload[1] = char(0xed);
78
BOOST_CHECK(
close::extract_code
(payload,ec) ==
close::status::no_status
);
79
BOOST_CHECK( ec ==
error::invalid_close_code
);
80
81
// Value = 3000
82
payload[0] = 0x0b;
83
payload[1] = char(0xb8);
84
BOOST_CHECK(
close::extract_code
(payload,ec) == 3000 );
85
BOOST_CHECK( !ec );
86
}
87
88
BOOST_AUTO_TEST_CASE
( extract_empty ) {
89
lib::error_code ec;
90
std::string payload;
91
92
BOOST_CHECK(
close::extract_code
(payload,ec) ==
close::status::no_status
);
93
BOOST_CHECK( !ec );
94
}
95
96
BOOST_AUTO_TEST_CASE
( extract_short ) {
97
lib::error_code ec;
98
std::string payload =
"0"
;
99
100
BOOST_CHECK(
close::extract_code
(payload,ec) ==
close::status::protocol_error
);
101
BOOST_CHECK( ec ==
error::bad_close_code
);
102
}
103
104
BOOST_AUTO_TEST_CASE
(
extract_reason
) {
105
lib::error_code ec;
106
std::string payload =
"00Foo"
;
107
108
BOOST_CHECK(
close::extract_reason
(payload,ec) ==
"Foo"
);
109
BOOST_CHECK( !ec );
110
111
payload.clear();
112
BOOST_CHECK(
close::extract_reason
(payload,ec).empty() );
113
BOOST_CHECK( !ec );
114
115
payload =
"00"
;
116
BOOST_CHECK(
close::extract_reason
(payload,ec).empty() );
117
BOOST_CHECK( !ec );
118
119
payload =
"000"
;
120
payload[2] = char(0xFF);
121
122
close::extract_reason
(payload,ec);
123
BOOST_CHECK( ec ==
error::invalid_utf8
);
124
}
websocketpp::close::status::reserved
bool reserved(value code)
Test whether a close code is in a reserved range.
Definition:
close.hpp:184
websocketpp::close::status::protocol_error
static value const protocol_error
A protocol error occurred.
Definition:
close.hpp:83
websocketpp::close::status::normal
static value const normal
Normal closure, meaning that the purpose for which the connection was established has been fulfilled...
Definition:
close.hpp:76
websocketpp::error::invalid_close_code
Close code is invalid.
Definition:
error.hpp:83
websocketpp::close::extract_code
status::value extract_code(std::string const &payload, lib::error_code &ec)
Extract a close code value from a close payload.
Definition:
close.hpp:294
websocketpp::error::invalid_utf8
Invalid UTF-8.
Definition:
error.hpp:86
websocketpp::close::status::invalid
bool invalid(value code)
Test whether a close code is invalid on the wire.
Definition:
close.hpp:199
websocketpp::error::bad_close_code
Unable to parse close code.
Definition:
error.hpp:77
close.hpp
A package of types and methods for manipulating WebSocket close codes.
websocketpp::error::reserved_close_code
Close code is in a reserved range.
Definition:
error.hpp:80
websocketpp
Namespace for the WebSocket++ project.
Definition:
base64.hpp:41
websocketpp::close::status::no_status
static value const no_status
A dummy value to indicate that no status code was received.
Definition:
close.hpp:97
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(reserved_values)
Definition:
close.cpp:39
websocketpp::close::extract_reason
std::string extract_reason(std::string const &payload, lib::error_code &ec)
Extract the reason string from a close payload.
Definition:
close.hpp:333
utilities.hpp
ndnSIM
NFD
websocketpp
test
utility
close.cpp
Generated on Fri May 6 2022 12:34:14 for ndnSIM by
1.8.13