RTBKit  0.9
Open-source framework to create real-time ad bidding systems.
testing/bid_request_test2.cc
00001 /* bid_request_test.cc
00002    Sunil Rottoo, 13 November 2012
00003    Copyright (c) 2012 Datacratic.  All rights reserved.
00004 
00005    Acceptance test for the bid request
00006 */
00007 
00008 #define BOOST_TEST_MAIN
00009 #define BOOST_TEST_DYN_LINK
00010 
00011 #include <boost/test/unit_test.hpp>
00012 #include "rtbkit/common/bid_request.h"
00013 
00014 
00015 using namespace std;
00016 using namespace Datacratic;
00017 
00018 BOOST_AUTO_TEST_CASE( test_user_id )
00019 {
00020     UserIds uid;
00021     uid.add(Id("uid1"), "datacratic");
00022     BOOST_CHECK_EQUAL(uid.size(),1);
00023     BOOST_CHECK_EQUAL(uid.count("datacratic"),1);
00024     // make sure we cannot add a duplicate
00025     BOOST_CHECK_THROW(uid.add(Id("uid1"), "datacratic"), ML::Exception);
00026     // make sure we add multiple ids for the same domain
00027     uid.add(Id("uid2"), "datacratic");
00028     BOOST_CHECK_EQUAL(uid.size(), 2);
00029     // make sure that set will erase previous values
00030     uid.set(Id("uid1"), "datacratic");
00031     BOOST_CHECK_EQUAL(uid.size(), 1);
00032     BOOST_CHECK_EQUAL(uid[0].second, Id("uid1"));
00033     BOOST_CHECK_EQUAL(uid[0].first, "datacratic");
00034     uid.add(Id("uid3"), "datacratic");
00035     BOOST_CHECK_EQUAL(uid.size(),2);
00036     uid.add(Id("uid2"), "adx");
00037     BOOST_CHECK_EQUAL(uid.size(), 3);
00038 #if 0
00039     cerr << "The contents of uids " << endl;
00040     for ( auto iddom: uid)
00041     {
00042         cerr << iddom.first << "," << iddom.second << endl;
00043     }
00044 #endif
00045     auto domainMatch = [&](const pair<string,Id> &elt, const std::string &dom)
00046     {
00047         return elt.first == dom ;
00048     };
00049     Id lastUid ;
00050     vector<string> allDoms = {"datacratic"};
00051     auto found = search(uid.begin(), uid.end(), allDoms.begin(), allDoms.end(),
00052                         domainMatch);
00053     while ( found != uid.end())
00054     {
00055         lastUid = found->second;
00056         //cerr << "matching domain " << found->first << " with id " << found->second << endl;
00057         found = search(++found, uid.end(), allDoms.begin(), allDoms.end(),
00058                        domainMatch);
00059     }
00060     BOOST_CHECK_EQUAL(lastUid, Id("uid3"));
00061     // make sure we take the last one
00062     unsigned numErased = uid.eraseDomain("datacratic");
00063     BOOST_CHECK_EQUAL(numErased, 2);
00064     BOOST_CHECK_EQUAL(uid.size(), 1);
00065     // make sure we get zero if not present
00066     numErased = uid.eraseDomain("datacratic");
00067     BOOST_CHECK_EQUAL(numErased, 0);
00068 }
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator