NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.3: NDN, CCN, CCNx, content centric networks
API Documentation
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
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
(1014) );
43
BOOST_CHECK(
close::status::reserved
(1016) );
44
BOOST_CHECK(
close::status::reserved
(2999) );
45
BOOST_CHECK( !
close::status::reserved
(1000) );
46
}
47
48
BOOST_AUTO_TEST_CASE
( invalid_values ) {
49
BOOST_CHECK(
close::status::invalid
(0) );
50
BOOST_CHECK(
close::status::invalid
(999) );
51
BOOST_CHECK( !
close::status::invalid
(1000) );
52
BOOST_CHECK(
close::status::invalid
(1005) );
53
BOOST_CHECK(
close::status::invalid
(1006) );
54
BOOST_CHECK(
close::status::invalid
(1015) );
55
BOOST_CHECK( !
close::status::invalid
(2999) );
56
BOOST_CHECK( !
close::status::invalid
(3000) );
57
BOOST_CHECK(
close::status::invalid
(5000) );
58
}
59
60
BOOST_AUTO_TEST_CASE
( value_extraction ) {
61
lib::error_code ec;
62
std::string payload =
"oo"
;
63
64
// Value = 1000
65
payload[0] = 0x03;
66
payload[1] = char(0xe8);
67
BOOST_CHECK(
close::extract_code
(payload,ec) ==
close::status::normal
);
68
BOOST_CHECK( !ec );
69
70
// Value = 1004
71
payload[0] = 0x03;
72
payload[1] = char(0xec);
73
BOOST_CHECK(
close::extract_code
(payload,ec) == 1004 );
74
BOOST_CHECK( ec ==
error::reserved_close_code
);
75
76
// Value = 1005
77
payload[0] = 0x03;
78
payload[1] = char(0xed);
79
BOOST_CHECK(
close::extract_code
(payload,ec) ==
close::status::no_status
);
80
BOOST_CHECK( ec ==
error::invalid_close_code
);
81
82
// Value = 3000
83
payload[0] = 0x0b;
84
payload[1] = char(0xb8);
85
BOOST_CHECK(
close::extract_code
(payload,ec) == 3000 );
86
BOOST_CHECK( !ec );
87
}
88
89
BOOST_AUTO_TEST_CASE
( extract_empty ) {
90
lib::error_code ec;
91
std::string payload;
92
93
BOOST_CHECK(
close::extract_code
(payload,ec) ==
close::status::no_status
);
94
BOOST_CHECK( !ec );
95
}
96
97
BOOST_AUTO_TEST_CASE
( extract_short ) {
98
lib::error_code ec;
99
std::string payload =
"0"
;
100
101
BOOST_CHECK(
close::extract_code
(payload,ec) ==
close::status::protocol_error
);
102
BOOST_CHECK( ec ==
error::bad_close_code
);
103
}
104
105
BOOST_AUTO_TEST_CASE
(
extract_reason
) {
106
lib::error_code ec;
107
std::string payload =
"00Foo"
;
108
109
BOOST_CHECK(
close::extract_reason
(payload,ec) ==
"Foo"
);
110
BOOST_CHECK( !ec );
111
112
payload.clear();
113
BOOST_CHECK(
close::extract_reason
(payload,ec).empty() );
114
BOOST_CHECK( !ec );
115
116
payload =
"00"
;
117
BOOST_CHECK(
close::extract_reason
(payload,ec).empty() );
118
BOOST_CHECK( !ec );
119
120
payload =
"000"
;
121
payload[2] = char(0xFF);
122
123
close::extract_reason
(payload,ec);
124
BOOST_CHECK( ec ==
error::invalid_utf8
);
125
}
websocketpp::close::status::reserved
bool reserved(value code)
Test whether a close code is in a reserved range.
Definition:
close.hpp:179
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:283
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:194
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:322
utilities.hpp
ndnSIM
NFD
websocketpp
test
utility
close.cpp
Generated on Thu Nov 2 2017 03:30:29 for ndnSIM by
1.8.11