mirror of
https://gitcode.com/gh_mirrors/ope/OpenFace.git
synced 2026-05-15 03:37:49 +00:00
Master commit of OpenFace.
This commit is contained in:
206
lib/3rdParty/dlib/include/dlib/test/static_set.cpp
vendored
Normal file
206
lib/3rdParty/dlib/include/dlib/test/static_set.cpp
vendored
Normal file
@@ -0,0 +1,206 @@
|
||||
// Copyright (C) 2005 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/queue.h>
|
||||
#include <dlib/static_set.h>
|
||||
#include <dlib/set.h>
|
||||
#include "tester.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
using namespace test;
|
||||
using namespace std;
|
||||
using namespace dlib;
|
||||
|
||||
logger dlog("test.static_set");
|
||||
|
||||
template <
|
||||
typename set
|
||||
>
|
||||
void static_set_kernel_test (
|
||||
)
|
||||
/*!
|
||||
requires
|
||||
- set is an implementation of static_set/static_set_kernel_abstract.h and
|
||||
is instantiated to hold ints
|
||||
ensures
|
||||
- runs tests on set for compliance with the specs
|
||||
!*/
|
||||
{
|
||||
|
||||
print_spinner();
|
||||
|
||||
srand(static_cast<unsigned int>(time(0)));
|
||||
|
||||
typedef queue<int>::kernel_2a_c queue_of_int;
|
||||
typedef dlib::set<int>::kernel_1a_c set_of_int;
|
||||
|
||||
queue_of_int q, qb, qc;
|
||||
set_of_int ds;
|
||||
|
||||
set S;
|
||||
S.load(ds);
|
||||
|
||||
for (int k = 1; k < 1000; ++k)
|
||||
{
|
||||
q.clear();
|
||||
qb.clear();
|
||||
qc.clear();
|
||||
unsigned long num = k;
|
||||
for (unsigned long i = 0; i < num; ++i)
|
||||
{
|
||||
int a = ::rand()&0xFF;
|
||||
int b = a;
|
||||
int c = a;
|
||||
q.enqueue(a);
|
||||
qb.enqueue(b);
|
||||
qc.enqueue(c);
|
||||
}
|
||||
|
||||
|
||||
|
||||
set s;
|
||||
|
||||
DLIB_TEST(s.size() == 0);
|
||||
DLIB_TEST(s.at_start());
|
||||
DLIB_TEST(s.current_element_valid() == false);
|
||||
DLIB_TEST(s.move_next() == false);
|
||||
DLIB_TEST(s.current_element_valid() == false);
|
||||
DLIB_TEST(s.at_start() == false);
|
||||
|
||||
s.load(q);
|
||||
DLIB_TEST(s.at_start());
|
||||
set se;
|
||||
se.load(q);
|
||||
|
||||
DLIB_TEST(se.size() == 0);
|
||||
DLIB_TEST(se.at_start() == true);
|
||||
DLIB_TEST(se.current_element_valid() == false);
|
||||
DLIB_TEST(se.move_next() == false);
|
||||
DLIB_TEST(se.at_start() == false);
|
||||
DLIB_TEST(se.current_element_valid() == false);
|
||||
|
||||
|
||||
DLIB_TEST(s.size() == qb.size());
|
||||
DLIB_TEST(s.at_start() == true);
|
||||
DLIB_TEST(s.current_element_valid() == false);
|
||||
DLIB_TEST(s.move_next() == true);
|
||||
DLIB_TEST(s.at_start() == false);
|
||||
DLIB_TEST(s.current_element_valid() == true);
|
||||
s.reset();
|
||||
se.reset();
|
||||
|
||||
swap(se,s);
|
||||
|
||||
DLIB_TEST(s.size() == 0);
|
||||
DLIB_TEST(s.at_start() == true);
|
||||
DLIB_TEST(s.current_element_valid() == false);
|
||||
DLIB_TEST(s.move_next() == false);
|
||||
DLIB_TEST(s.at_start() == false);
|
||||
DLIB_TEST(s.current_element_valid() == false);
|
||||
|
||||
DLIB_TEST(se.size() == qb.size());
|
||||
DLIB_TEST(se.at_start() == true);
|
||||
DLIB_TEST(se.current_element_valid() == false);
|
||||
DLIB_TEST(se.move_next() == true);
|
||||
DLIB_TEST(se.at_start() == false);
|
||||
DLIB_TEST(se.current_element_valid() == true);
|
||||
s.reset();
|
||||
se.reset();
|
||||
|
||||
swap(se,s);
|
||||
|
||||
|
||||
|
||||
int last = 0;
|
||||
while (s.move_next())
|
||||
{
|
||||
DLIB_TEST(last <= s.element());
|
||||
last = s.element();
|
||||
}
|
||||
|
||||
|
||||
|
||||
while (qb.move_next())
|
||||
{
|
||||
int a;
|
||||
qb.dequeue(a);
|
||||
DLIB_TEST(s.is_member(a));
|
||||
DLIB_TEST(!se.is_member(a));
|
||||
|
||||
// make sure is_member() doesn't hang
|
||||
for (int l = 0; l < 100; ++l)
|
||||
{
|
||||
int a = ::rand();
|
||||
s.is_member(a);
|
||||
}
|
||||
}
|
||||
|
||||
swap(s,se);
|
||||
|
||||
// serialize the state of se, then clear se, then
|
||||
// load the state back into se.
|
||||
ostringstream sout;
|
||||
serialize(se,sout);
|
||||
DLIB_TEST(se.at_start() == true);
|
||||
istringstream sin(sout.str());
|
||||
se.clear();
|
||||
deserialize(se,sin);
|
||||
DLIB_TEST(se.at_start() == true);
|
||||
|
||||
|
||||
last = 0;
|
||||
while (se.move_next())
|
||||
{
|
||||
DLIB_TEST(last <= se.element());
|
||||
last = se.element();
|
||||
}
|
||||
|
||||
|
||||
DLIB_TEST(s.size() == 0);
|
||||
DLIB_TEST(se.size() == qc.size());
|
||||
|
||||
while (qc.move_next())
|
||||
{
|
||||
int a;
|
||||
qc.dequeue(a);
|
||||
DLIB_TEST(se.is_member(a));
|
||||
DLIB_TEST(!s.is_member(a));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class static_set_tester : public tester
|
||||
{
|
||||
public:
|
||||
static_set_tester (
|
||||
) :
|
||||
tester ("test_static_set",
|
||||
"Runs tests on the static_set component.")
|
||||
{}
|
||||
|
||||
void perform_test (
|
||||
)
|
||||
{
|
||||
dlog << LINFO << "testing kernel_1a";
|
||||
static_set_kernel_test<static_set<int>::kernel_1a> ();
|
||||
dlog << LINFO << "testing kernel_1a_c";
|
||||
static_set_kernel_test<static_set<int>::kernel_1a_c>();
|
||||
}
|
||||
} a;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user