File: TestUDPListener.cpp

package info (click to toggle)
spring 88.0%2Bdfsg1-1.1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 41,524 kB
  • sloc: cpp: 343,114; ansic: 38,414; python: 12,257; java: 12,203; awk: 5,748; sh: 1,204; xml: 997; perl: 405; objc: 192; makefile: 181; php: 134; sed: 2
file content (55 lines) | stat: -rwxr-xr-x 1,841 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

#include "System/Net/UDPListener.h"

#define BOOST_TEST_MODULE UDPListener
#include <boost/test/unit_test.hpp>

static inline bool TryBindAddr(netcode::SocketPtr& socket, const char* address) {
	return netcode::UDPListener::TryBindSocket(11111, &socket, address);
}

static inline bool TryBindPort(netcode::SocketPtr& socket, int port) {
	return netcode::UDPListener::TryBindSocket(port, &socket, "::");
}

BOOST_AUTO_TEST_CASE(TryBindSocket)
{
	netcode::SocketPtr socket;

	// IP v4 & v6 addresses
	BOOST_CHECK(TryBindAddr(socket, "127.0.0.1"));
	BOOST_CHECK(TryBindAddr(socket, "0.0.0.0"));
	BOOST_CHECK(TryBindAddr(socket, "::"));
	BOOST_CHECK(TryBindAddr(socket, "::1"));

	// badly named invalid IP v6 addresses
	BOOST_CHECK(!TryBindAddr(socket, "::2"));
	BOOST_CHECK(!TryBindAddr(socket, "fe80::224:1dff:fecf:df44/64"));
	BOOST_CHECK(!TryBindAddr(socket, "fe80::224:1dff:fecf:df44"));
	BOOST_CHECK(!TryBindAddr(socket, "::224:1dff:fecf:df44/64"));
	BOOST_CHECK(!TryBindAddr(socket, "fe80::"));
	BOOST_CHECK(!TryBindAddr(socket, "224:1dff:fecf:df44/64"));
	BOOST_CHECK(!TryBindAddr(socket, "fe80"));

	// host-names (only addresses are allowed)
	BOOST_CHECK(!TryBindAddr(socket, "localhost"));
	BOOST_CHECK(!TryBindAddr(socket, "local.lan"));
	BOOST_CHECK(!TryBindAddr(socket, "google.com"));

	// normal ports
	BOOST_CHECK(TryBindPort(socket, 1024));
	BOOST_CHECK(TryBindPort(socket, 11111));
	BOOST_CHECK(TryBindPort(socket, 32000));
	BOOST_CHECK(TryBindPort(socket, 65535));

	// special ports (reserved for core services)
	BOOST_WARN(!TryBindPort(socket, 0));
	BOOST_WARN(!TryBindPort(socket, 1));
	BOOST_WARN(!TryBindPort(socket, 128));
	BOOST_WARN(!TryBindPort(socket, 1023));

	// out-of-range ports
	BOOST_CHECK(!TryBindPort(socket, 65536));
	BOOST_CHECK(!TryBindPort(socket, 65537));
	BOOST_CHECK(!TryBindPort(socket, -1));
}