94 lines
2.0 KiB
C++
94 lines
2.0 KiB
C++
#include <gtest/gtest.h>
|
|
|
|
#include <L33.hpp>
|
|
// #include <limits>
|
|
#include <random>
|
|
|
|
TEST(L33_test, debug_small) {
|
|
const unsigned seed = 998244353;
|
|
const uint N = 10, M = 1, MX = 1e9;
|
|
|
|
std::mt19937 gen(seed);
|
|
std::uniform_int_distribution<int> dis(1, MX);
|
|
|
|
GMS::L33<int,int> D(M, MX);
|
|
std::map<int,int> mp;
|
|
|
|
std::vector<int> keys;
|
|
for(int i=1;i<=N;i++) keys.push_back(i);
|
|
|
|
std::shuffle(keys.begin(), keys.end(), gen);
|
|
|
|
for(auto key:keys)
|
|
{
|
|
int val = dis(gen);
|
|
std::cerr<<key<<": "<<val<<std::endl;
|
|
|
|
mp[val] = key;
|
|
|
|
D.Insert(key, val);
|
|
}
|
|
|
|
std::cerr<<"[!] mp: "<<std::endl;
|
|
for(auto [val, key] : mp)
|
|
std::cerr<<key<<": "<<val<<std::endl;
|
|
|
|
D._debug(std::cerr);
|
|
|
|
std::cerr<<"[!] D: "<<std::endl;
|
|
int bef = 0;
|
|
while(!D.empty())
|
|
{
|
|
auto [B, keys] = D.Pull();
|
|
|
|
std::cerr<<"[!] new pull; B : "<<B<<" ("<<keys.size()<<')'<<": ";
|
|
for(auto i:keys) std::cerr<<i<<' ';
|
|
std::cerr<<std::endl;
|
|
|
|
D._debug(std::cerr);
|
|
|
|
EXPECT_LT(bef, B);
|
|
bef = B;
|
|
std::cerr<<std::endl;
|
|
}
|
|
}
|
|
|
|
TEST(L33_test, DISABLED_emptying_test1) {
|
|
const double inf = 100;
|
|
const unsigned seed = 998244353;
|
|
const uint N = 2328, M = 10, MX = 1e9;
|
|
|
|
std::mt19937 gen(seed);
|
|
std::uniform_int_distribution<int> dis(1, MX);
|
|
std::uniform_real_distribution<double> valdis(-inf, inf);
|
|
|
|
GMS::L33<int, double> D(M, inf);
|
|
|
|
std::vector<int> vec;
|
|
for (int i = 1; i <= N; i++) vec.push_back(i);
|
|
|
|
std::shuffle(vec.begin(), vec.end(), gen);
|
|
|
|
for (int i = 0; i < N; i++) {
|
|
D.Insert(vec[i], valdis(gen));
|
|
}
|
|
|
|
int cnt = 0; double bef = -inf;
|
|
|
|
while(!D.empty())
|
|
{
|
|
auto [B, v] = D.Pull();
|
|
// std::cerr<<B<<' '<<v.size()<<std::endl;
|
|
cnt += v.size();
|
|
|
|
EXPECT_TRUE(D.empty() || (v.size() == M));
|
|
EXPECT_LE(bef, B);
|
|
bef = B;
|
|
}
|
|
|
|
EXPECT_EQ(cnt, N);
|
|
|
|
int result = 2 + 2;
|
|
EXPECT_EQ(result, 4);
|
|
}
|