RTBKit
0.9
Open-source framework to create real-time ad bidding systems.
|
00001 /* pending_list_test.cc 00002 Jeremy Barnes, 28 February 2012 00003 Copyright (c) 2012 Datacratic. All rights reserved. 00004 00005 Test for the pending list. 00006 */ 00007 00008 #define BOOST_TEST_MAIN 00009 #define BOOST_TEST_DYN_LINK 00010 00011 #include <boost/test/unit_test.hpp> 00012 #include "jml/arch/format.h" 00013 #include "soa/service/pending_list.h" 00014 #include "soa/types/id.h" 00015 #include "jml/utils/pair_utils.h" 00016 00017 00018 using namespace std; 00019 using namespace ML; 00020 using namespace Datacratic; 00021 00022 BOOST_AUTO_TEST_CASE( test_router_init_persistence ) 00023 { 00024 struct Value { 00025 Value(int i = 0) 00026 : i(i) 00027 { 00028 } 00029 00030 int i; 00031 }; 00032 00033 PendingList<pair<Id, Id>, Value> pending; 00034 00035 IsPrefixPair isPrefix; 00036 00037 pair<Id, Id> none; 00038 00039 00040 auto h = make_pair(Id("0"), Id()); 00041 00042 auto i = make_pair(Id("1"), Id()); 00043 auto i1 = make_pair(Id("1"), Id("1")); 00044 auto i2 = make_pair(Id("1"), Id("2")); 00045 00046 auto j = make_pair(Id("2"), Id()); 00047 00048 auto k = make_pair(Id("3"), Id()); 00049 auto k0 = make_pair(Id("3"), Id("0")); 00050 auto k1 = make_pair(Id("3"), Id("1")); 00051 auto k2 = make_pair(Id("3"), Id("2")); 00052 00053 auto l = make_pair(Id("4"), Id()); 00054 00055 auto m = make_pair(Id("5"), Id()); 00056 auto m1 = make_pair(Id("5"), Id("1")); 00057 auto m2 = make_pair(Id("5"), Id("2")); 00058 00059 auto o = make_pair(Id("6"), Id()); 00060 00061 BOOST_CHECK_LT(i, k); 00062 BOOST_CHECK_LT(k, m); 00063 BOOST_CHECK_LT(i, m); 00064 BOOST_CHECK_LT(i, i1); 00065 BOOST_CHECK_LT(i, i2); 00066 00067 BOOST_CHECK_EQUAL(pending.completePrefix(k, isPrefix), none); 00068 00069 pending.insert(k1, 1, Date()); 00070 BOOST_CHECK_EQUAL(pending.completePrefix(k, isPrefix), k1); 00071 pending.insert(k2, 2, Date()); 00072 BOOST_CHECK_EQUAL(pending.completePrefix(k, isPrefix), k1); 00073 pending.insert(k0, 0, Date()); 00074 BOOST_CHECK_EQUAL(pending.completePrefix(k, isPrefix), k0); 00075 BOOST_CHECK_EQUAL(pending.completePrefix(i, isPrefix), none); 00076 BOOST_CHECK_EQUAL(pending.completePrefix(m, isPrefix), none); 00077 BOOST_CHECK_EQUAL(pending.completePrefix(h, isPrefix), none); 00078 BOOST_CHECK_EQUAL(pending.completePrefix(j, isPrefix), none); 00079 BOOST_CHECK_EQUAL(pending.completePrefix(l, isPrefix), none); 00080 BOOST_CHECK_EQUAL(pending.completePrefix(o, isPrefix), none); 00081 00082 pending.insert(m1, 1, Date()); 00083 BOOST_CHECK_EQUAL(pending.completePrefix(k, isPrefix), k0); 00084 BOOST_CHECK_EQUAL(pending.completePrefix(i, isPrefix), none); 00085 BOOST_CHECK_EQUAL(pending.completePrefix(m, isPrefix), m1); 00086 BOOST_CHECK_EQUAL(pending.completePrefix(h, isPrefix), none); 00087 BOOST_CHECK_EQUAL(pending.completePrefix(j, isPrefix), none); 00088 BOOST_CHECK_EQUAL(pending.completePrefix(l, isPrefix), none); 00089 BOOST_CHECK_EQUAL(pending.completePrefix(o, isPrefix), none); 00090 00091 pending.insert(m2, 2, Date()); 00092 BOOST_CHECK_EQUAL(pending.completePrefix(k, isPrefix), k0); 00093 BOOST_CHECK_EQUAL(pending.completePrefix(i, isPrefix), none); 00094 BOOST_CHECK_EQUAL(pending.completePrefix(m, isPrefix), m1); 00095 BOOST_CHECK_EQUAL(pending.completePrefix(h, isPrefix), none); 00096 BOOST_CHECK_EQUAL(pending.completePrefix(j, isPrefix), none); 00097 BOOST_CHECK_EQUAL(pending.completePrefix(l, isPrefix), none); 00098 BOOST_CHECK_EQUAL(pending.completePrefix(o, isPrefix), none); 00099 00100 pending.insert(i2, 2, Date()); 00101 BOOST_CHECK_EQUAL(pending.completePrefix(k, isPrefix), k0); 00102 BOOST_CHECK_EQUAL(pending.completePrefix(i, isPrefix), i2); 00103 BOOST_CHECK_EQUAL(pending.completePrefix(m, isPrefix), m1); 00104 BOOST_CHECK_EQUAL(pending.completePrefix(h, isPrefix), none); 00105 BOOST_CHECK_EQUAL(pending.completePrefix(j, isPrefix), none); 00106 BOOST_CHECK_EQUAL(pending.completePrefix(l, isPrefix), none); 00107 BOOST_CHECK_EQUAL(pending.completePrefix(o, isPrefix), none); 00108 00109 pending.insert(i1, 1, Date()); 00110 BOOST_CHECK_EQUAL(pending.completePrefix(k, isPrefix), k0); 00111 BOOST_CHECK_EQUAL(pending.completePrefix(i, isPrefix), i1); 00112 BOOST_CHECK_EQUAL(pending.completePrefix(m, isPrefix), m1); 00113 BOOST_CHECK_EQUAL(pending.completePrefix(h, isPrefix), none); 00114 BOOST_CHECK_EQUAL(pending.completePrefix(j, isPrefix), none); 00115 BOOST_CHECK_EQUAL(pending.completePrefix(l, isPrefix), none); 00116 BOOST_CHECK_EQUAL(pending.completePrefix(o, isPrefix), none); 00117 } 00118