Added unit test for iosockstream.

This commit is contained in:
Davis King 2012-11-17 15:59:05 -05:00
parent 60d725a152
commit 992c254e8a
3 changed files with 111 additions and 1 deletions

View File

@ -55,6 +55,7 @@ set (tests
hash_table.cpp
hog_image.cpp
image.cpp
iosockstream.cpp
is_same_object.cpp
kcentroid.cpp
kernel_matrix.cpp

108
dlib/test/iosockstream.cpp Normal file
View File

@ -0,0 +1,108 @@
// Copyright (C) 2012 Davis E. King (davis@dlib.net)
// License: Boost Software License See LICENSE.txt for the full license.
#include <sstream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <dlib/iosockstream.h>
#include <dlib/server.h>
#include <vector>
#include "tester.h"
namespace
{
using namespace test;
using namespace dlib;
using namespace std;
logger dlog("test.iosockstream");
// ----------------------------------------------------------------------------------------
class serv : public server_iostream
{
virtual void on_connect (
std::istream& in,
std::ostream& out,
const std::string& ,
const std::string& ,
unsigned short ,
unsigned short ,
uint64
)
{
try
{
dlog << LINFO << "serving connection";
std::string temp;
in >> temp;
DLIB_TEST(temp == "word");
in >> temp;
DLIB_TEST(temp == "another");
out << "yay words ";
in >> temp;
DLIB_TEST(temp == "yep");
}
catch (error& e)
{
error_string = e.what();
}
}
public:
std::string error_string;
};
// ----------------------------------------------------------------------------------------
class test_iosockstream : public tester
{
public:
test_iosockstream (
) :
tester ("test_iosockstream",
"Runs tests on the iosockstream component.")
{}
void perform_test (
)
{
serv theserv;
theserv.set_listening_port(12345);
theserv.start_async();
for (int i = 0; i < 1001; ++i)
{
print_spinner();
iosockstream stream("localhost:12345");
stream << "word another ";
std::string temp;
stream >> temp;
DLIB_TEST(temp == "yay");
stream >> temp;
DLIB_TEST(temp == "words");
stream << "yep ";
}
// Just to make sure the server finishes processing the last connection before
// we kill it and accidentally trigger a DLIB_TEST().
dlib::sleep(500);
if (theserv.error_string.size() != 0)
throw error(theserv.error_string);
}
} a;
}

View File

@ -70,6 +70,7 @@ SRC += hash_set.cpp
SRC += hash_table.cpp
SRC += hog_image.cpp
SRC += image.cpp
SRC += iosockstream.cpp
SRC += is_same_object.cpp
SRC += kcentroid.cpp
SRC += kernel_matrix.cpp
@ -95,11 +96,11 @@ SRC += multithreaded_object.cpp
SRC += object_detector.cpp
SRC += oca.cpp
SRC += one_vs_all_trainer.cpp
SRC += parse.cpp
SRC += one_vs_one_trainer.cpp
SRC += optimization.cpp
SRC += optimization_test_functions.cpp
SRC += opt_qp_solver.cpp
SRC += parse.cpp
SRC += pipe.cpp
SRC += pixel.cpp
SRC += probabilistic.cpp