RTBKit
0.9
Open-source framework to create real-time ad bidding systems.
|
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 }