// Copyright (C) 2010 Davis E. King (davis@dlib.net)
// License: Boost Software License See LICENSE.txt for the full license.
#include "tester.h"
#include <dlib/svm.h>
#include <vector>
#include <sstream>
namespace
{
using namespace test;
using namespace dlib;
using namespace std;
dlib::logger dlog("test.is_same_object");
class is_same_object_tester : public tester
{
/*!
WHAT THIS OBJECT REPRESENTS
This object represents a unit test. When it is constructed
it adds itself into the testing framework.
!*/
public:
is_same_object_tester (
) :
tester (
"test_is_same_object", // the command line argument name for this test
"Run tests on the is_same_object function.", // the command line argument description
0 // the number of command line arguments for this test
)
{
}
struct base {};
struct derived : public base {};
template <bool truth>
void go(const base& a, const base& b)
{
DLIB_TEST( is_same_object(a,b) == truth) ;
DLIB_TEST( is_same_object(b,a) == truth) ;
}
template <bool truth>
void go2(const base& a, const derived& b)
{
DLIB_TEST( is_same_object(a,b) == truth) ;
DLIB_TEST( is_same_object(b,a) == truth) ;
}
void perform_test (
)
{
print_spinner();
int a, b;
double d;
DLIB_TEST( is_same_object(a,a) == true) ;
DLIB_TEST( is_same_object(a,b) == false) ;
DLIB_TEST( is_same_object(d,b) == false) ;
DLIB_TEST( is_same_object(d,d) == true) ;
base sb;
derived sd, sd2;
DLIB_TEST( is_same_object(sb,sd) == false) ;
DLIB_TEST( is_same_object(sd,sb) == false) ;
go<true>(sd, sd);
go<false>(sd, sd2);
go<true>(sb, sb);
go<false>(sd, sb);
go2<true>(sd, sd);
go2<false>(sd2, sd);
go2<false>(sd, sd2);
go2<false>(sb, sd);
}
};
// Create an instance of this object. Doing this causes this test
// to be automatically inserted into the testing framework whenever this cpp file
// is linked into the project. Note that since we are inside an unnamed-namespace
// we won't get any linker errors about the symbol a being defined multiple times.
is_same_object_tester a;
}