summaryrefslogtreecommitdiffstats
path: root/ml/dlib/dlib/test/conditioning_class.h
diff options
context:
space:
mode:
Diffstat (limited to 'ml/dlib/dlib/test/conditioning_class.h')
-rw-r--r--ml/dlib/dlib/test/conditioning_class.h841
1 files changed, 0 insertions, 841 deletions
diff --git a/ml/dlib/dlib/test/conditioning_class.h b/ml/dlib/dlib/test/conditioning_class.h
deleted file mode 100644
index 3c6c88b8d..000000000
--- a/ml/dlib/dlib/test/conditioning_class.h
+++ /dev/null
@@ -1,841 +0,0 @@
-// Copyright (C) 2003 Davis E. King (davis@dlib.net)
-// License: Boost Software License See LICENSE.txt for the full license.
-#ifndef DLIB_TEST_CONDITIONING_CLASs_H_
-#define DLIB_TEST_CONDITIONING_CLASs_H_
-
-
-#include <sstream>
-#include <string>
-#include <ctime>
-#include <cstdlib>
-
-#include <dlib/conditioning_class.h>
-
-#include "tester.h"
-
-namespace
-{
-
- using namespace test;
- using namespace std;
- using namespace dlib;
-
- logger dlog("test.conditioning_class");
-
- template <
- typename cc,
- typename cc2
- >
- void conditioning_class_kernel_test (
- )
- /*!
- requires
- - cc is an implementation of conditioning_class/conditioning_class_kernel_abstract.h
- the alphabet_size for cc is 256
- - cc2 is an implementation of conditioning_class/conditioning_class_kernel_abstract.h
- the alphabet_size for cc2 is 2
- ensures
- - runs tests on cc for compliance with the specs
- !*/
- {
-
- srand(static_cast<unsigned int>(time(0)));
-
-
-
- typename cc::global_state_type gs;
- typename cc2::global_state_type gs2;
-
-
-
-
- for (int g = 0; g < 2; ++g)
- {
- print_spinner();
- unsigned long amount=g+1;
- cc2 test(gs2);
- cc2 test2(gs2);
-
-
- DLIB_TEST(test.get_memory_usage() != 0);
-
- const unsigned long alphabet_size = 2;
-
-
- DLIB_TEST(test.get_total() == 1);
-
- DLIB_TEST(test.get_count(alphabet_size-1)==1);
- for (unsigned long i = 0; i < alphabet_size-1; ++i)
- {
- unsigned long low_count, high_count, total_count;
- DLIB_TEST_MSG(test.get_range(i,low_count,high_count,total_count) == 0,i);
- DLIB_TEST(test.get_count(i) == 0);
- DLIB_TEST(test.get_total() == 1);
- }
-
-
-
- for (unsigned long i = 0; i < alphabet_size; ++i)
- {
- test.increment_count(i,static_cast<unsigned short>(amount));
- unsigned long low_count = 0, high_count = 0, total_count = 0;
-
- if (i ==alphabet_size-1)
- {
- DLIB_TEST(test.get_range(i,low_count,high_count,total_count) == 1+amount);
-
- DLIB_TEST(high_count == low_count+1+amount);
- DLIB_TEST(total_count == test.get_total());
-
-
- DLIB_TEST(test.get_count(i) == 1+amount);
- }
- else
- {
- DLIB_TEST(test.get_range(i,low_count,high_count,total_count) == amount);
-
- DLIB_TEST(high_count == low_count+amount);
- DLIB_TEST(total_count == test.get_total());
-
-
- DLIB_TEST(test.get_count(i) == amount);
- }
- DLIB_TEST(test.get_total() == (i+1)*amount + 1);
- }
-
-
- for (unsigned long i = 0; i < alphabet_size; ++i)
- {
- unsigned long temp = static_cast<unsigned long>(::rand()%40);
- for (unsigned long j = 0; j < temp; ++j)
- {
- test.increment_count(i,static_cast<unsigned short>(amount));
- if (i == alphabet_size-1)
- {
- DLIB_TEST(test.get_count(i) == (j+1)*amount + 1 + amount);
- }
- else
- {
- DLIB_TEST(test.get_count(i) == (j+1)*amount + amount);
- }
- }
-
- unsigned long target = test.get_total()/2;
- unsigned long symbol = i, low_count = 0, high_count = 0, total_count = 0;
-
- if (i == alphabet_size-1)
- {
- DLIB_TEST(test.get_range(symbol,low_count,high_count,total_count)==temp*amount+1+amount);
- DLIB_TEST(high_count-low_count == temp*amount+1+amount);
- }
- else
- {
- DLIB_TEST(test.get_range(symbol,low_count,high_count,total_count)==temp*amount + amount);
- DLIB_TEST(high_count-low_count == temp*amount + amount);
- }
- DLIB_TEST(total_count == test.get_total());
-
- test.get_symbol(target,symbol,low_count,high_count);
- DLIB_TEST(test.get_count(symbol) == high_count-low_count);
- DLIB_TEST(low_count <= target);
- DLIB_TEST(target < high_count);
- DLIB_TEST(high_count <= test.get_total());
-
- }
-
- test.clear();
-
-
- for (unsigned long i = 0; i < alphabet_size-1; ++i)
- {
- test.increment_count(i);
- unsigned long low_count = 0, high_count = 0, total_count = 0;
- DLIB_TEST(test.get_range(i,low_count,high_count,total_count) == 1);
-
- DLIB_TEST(high_count == low_count+1);
- DLIB_TEST(total_count == test.get_total());
-
- DLIB_TEST(test.get_count(i) == 1);
- DLIB_TEST(test.get_total() == i+2);
- }
-
-
-
-
- unsigned long counts[alphabet_size];
-
-
- print_spinner();
- for (int k = 0; k < 10; ++k)
- {
- unsigned long range = ::rand()%50000 + 2;
-
- test.clear();
-
- for (unsigned long i = 0; i < alphabet_size-1; ++i)
- counts[i] = 0;
- unsigned long total = 1;
- counts[alphabet_size-1] = 1;
-
-
- for (unsigned long i = 0; i < alphabet_size; ++i)
- {
- unsigned long temp = static_cast<unsigned long>(::rand()%range);
- for (unsigned long j = 0; j < temp; ++j)
- {
- test.increment_count(i);
-
-
- if (total >= 65535)
- {
- total = 0;
- for (unsigned long i = 0; i < alphabet_size; ++i)
- {
- counts[i] >>= 1;
- total += counts[i];
- }
- if (counts[alphabet_size-1]==0)
- {
- counts[alphabet_size-1] = 1;
- ++total;
- }
- }
- counts[i] = counts[i] + 1;
- ++total;
-
-
- }
-
-
- unsigned long temp_total = 0;
- for (unsigned long a = 0; a < alphabet_size; ++a)
- {
- temp_total += test.get_count(a);
- }
- DLIB_TEST_MSG(temp_total == test.get_total(),
- "temp_total == " << temp_total << endl <<
- "test.get_total() == " << test.get_total()
- );
-
- DLIB_TEST(test.get_count(alphabet_size-1) == counts[alphabet_size-1]);
- DLIB_TEST_MSG(test.get_total() == total,
- "test.get_total() == " << test.get_total() << endl <<
- "total == " << total
- );
-
- unsigned long target = test.get_total()/2;
- unsigned long symbol = i, low_count = 0, high_count = 0, total_count = 0;
-
-
- DLIB_TEST(test.get_range(symbol,low_count,high_count,total_count)==counts[symbol]);
-
- if (counts[symbol] != 0)
- {
- DLIB_TEST(total_count == total);
-
- DLIB_TEST(high_count <= total);
- DLIB_TEST(low_count < high_count);
- DLIB_TEST(high_count <= test.get_total());
- DLIB_TEST(test.get_count(symbol) == high_count-low_count);
- }
-
-
- if (target < total)
- {
- test.get_symbol(target,symbol,low_count,high_count);
-
-
- DLIB_TEST(high_count <= total);
- DLIB_TEST(low_count < high_count);
- DLIB_TEST(high_count <= test.get_total());
- DLIB_TEST(test.get_count(symbol) == high_count-low_count);
- DLIB_TEST(test.get_count(symbol) == counts[symbol]);
- }
-
-
-
-
- }
-
- }
-
- print_spinner();
-
- for (unsigned long h = 0; h < 10; ++h)
- {
- test.clear();
- DLIB_TEST(test.get_total() == 1);
-
- // fill out test with some numbers
- unsigned long temp = ::rand()%30000 + 50000;
- for (unsigned long j = 0; j < temp; ++j)
- {
- unsigned long symbol = (unsigned long)::rand()%alphabet_size;
- test.increment_count(symbol);
- }
-
- // make sure all symbols have a count of at least one
- for (unsigned long j = 0; j < alphabet_size; ++j)
- {
- if (test.get_count(j) == 0)
- test.increment_count(j);
- }
-
- unsigned long temp_total = 0;
- for (unsigned long j = 0; j < alphabet_size; ++j)
- {
- temp_total += test.get_count(j);
- }
- DLIB_TEST(temp_total == test.get_total());
-
-
- unsigned long low_counts[alphabet_size];
- unsigned long high_counts[alphabet_size];
- // iterate over all the symbols
- for (unsigned long j = 0; j < alphabet_size; ++j)
- {
- unsigned long total;
- unsigned long count = test.get_range(j,low_counts[j],high_counts[j],total);
- DLIB_TEST(count == test.get_count(j));
- DLIB_TEST(count == high_counts[j] - low_counts[j]);
-
- }
-
-
- // make sure get_symbol() matches what get_range() told us
- for (unsigned long j = 0; j < alphabet_size; ++j)
- {
- for (unsigned long k = low_counts[j]; k < high_counts[j]; ++k)
- {
- unsigned long symbol, low_count, high_count;
- test.get_symbol(k,symbol,low_count,high_count);
- DLIB_TEST(high_count - low_count == test.get_count(symbol));
- DLIB_TEST_MSG(j == symbol,
- "j == " << j << endl <<
- "k == " << k << endl <<
- "symbol == " << symbol << endl <<
- "low_counts[j] == " << low_counts[j] << endl <<
- "high_counts[j] == " << high_counts[j] << endl <<
- "low_counts[symbol] == " << low_counts[symbol] << endl <<
- "high_counts[symbol] == " << high_counts[symbol] << endl <<
- "low_count == " << low_count << endl <<
- "high_count == " << high_count << endl <<
- "temp.count(j) == " << test.get_count(j)
- );
- DLIB_TEST_MSG(low_count == low_counts[j],
- "symbol: " << j << "\n" <<
- "target: " << k << "\n" <<
- "low_count: " << low_count << "\n" <<
- "low_counts[j]: " << low_counts[j]);
- DLIB_TEST(high_count == high_counts[j]);
- }
-
- }
-
- }
-
-
-
- print_spinner();
-
- for (int h = 0; h < 10; ++h)
- {
-
-
- test.clear();
-
- for (unsigned long k = 0; k < alphabet_size-1; ++k)
- {
- counts[k] = 0;
- }
- counts[alphabet_size-1] = 1;
- unsigned long total = 1;
- unsigned long i = ::rand()%alphabet_size;
-
- unsigned long temp = 65536;
- for (unsigned long j = 0; j < temp; ++j)
- {
- test.increment_count(i);
-
-
- if (total >= 65535)
- {
- total = 0;
- for (unsigned long i = 0; i < alphabet_size; ++i)
- {
- counts[i] >>= 1;
- total += counts[i];
- }
- if (counts[alphabet_size-1] == 0)
- {
- ++total;
- counts[alphabet_size-1] = 1;
- }
- }
- counts[i] = counts[i] + 1;
- ++total;
-
- }
-
-
- DLIB_TEST(test.get_total() == total);
-
- unsigned long target = test.get_total()/2;
- unsigned long symbol = i, low_count = 0, high_count = 0, total_count = 0;
-
-
- DLIB_TEST(test.get_range(symbol,low_count,high_count,total_count)==counts[symbol]);
-
- if (counts[symbol] != 0)
- {
- DLIB_TEST(total_count == total);
-
- DLIB_TEST(high_count <= total);
- DLIB_TEST(low_count < high_count);
- DLIB_TEST(high_count <= test.get_total());
- DLIB_TEST(test.get_count(symbol) == high_count-low_count);
- }
-
-
-
- test.get_symbol(target,symbol,low_count,high_count);
-
-
- DLIB_TEST(high_count <= total);
- DLIB_TEST(low_count < high_count);
- DLIB_TEST(high_count <= test.get_total());
- DLIB_TEST(test.get_count(symbol) == high_count-low_count);
- DLIB_TEST(test.get_count(symbol) == counts[symbol]);
-
-
-
-
-
-
-
- }
-
- } // for (int g = 0; g < 2; ++g)
-
-
-
-
-
-
-
-
-
-
-
-
-
- for (int g = 0; g < 2; ++g)
- {
- print_spinner();
- unsigned long amount=g+1;
- cc test(gs);
- cc test2(gs);
-
- DLIB_TEST(test.get_memory_usage() != 0);
-
- const unsigned long alphabet_size = 256;
-
-
- DLIB_TEST(test.get_total() == 1);
-
- DLIB_TEST(test.get_count(alphabet_size-1)==1);
- for (unsigned long i = 0; i < alphabet_size-1; ++i)
- {
- unsigned long low_count, high_count, total_count;
- DLIB_TEST(test.get_range(i,low_count,high_count,total_count) == 0);
- DLIB_TEST(test.get_count(i) == 0);
- DLIB_TEST(test.get_total() == 1);
- }
-
-
- bool oom = false;
- for (unsigned long i = 0; i < alphabet_size; ++i)
- {
- bool status = test.increment_count(i,static_cast<unsigned short>(amount));
- unsigned long low_count = 0, high_count = 0, total_count = 0;
- if (!status)
- oom = true;
-
- if (status)
- {
- if (i ==alphabet_size-1)
- {
- DLIB_TEST(test.get_range(i,low_count,high_count,total_count) == 1+amount);
-
- DLIB_TEST(high_count == low_count+1+amount);
- DLIB_TEST(total_count == test.get_total());
-
-
- DLIB_TEST(test.get_count(i) == 1+amount);
- }
- else
- {
- DLIB_TEST(test.get_range(i,low_count,high_count,total_count) == amount);
-
- DLIB_TEST(high_count == low_count+amount);
- DLIB_TEST(total_count == test.get_total());
-
-
- DLIB_TEST(test.get_count(i) == amount);
- }
- if (!oom)
- DLIB_TEST(test.get_total() == (i+1)*amount + 1);
- }
- }
-
-
- oom = false;
- for (unsigned long i = 0; i < alphabet_size; ++i)
- {
- unsigned long temp = static_cast<unsigned long>(::rand()%40);
- for (unsigned long j = 0; j < temp; ++j)
- {
- bool status = test.increment_count(i,static_cast<unsigned short>(amount));
- if (!status)
- oom = true;
- if (status)
- {
- if (i == alphabet_size-1)
- {
- DLIB_TEST(test.get_count(i) == (j+1)*amount + 1 + amount);
- }
- else
- {
- DLIB_TEST(test.get_count(i) == (j+1)*amount + amount);
- }
- }
- }
-
- unsigned long target = test.get_total()/2;
- unsigned long symbol = i, low_count = 0, high_count = 0, total_count = 0;
-
- if (!oom)
- {
- if (i == alphabet_size-1)
- {
- DLIB_TEST(test.get_range(symbol,low_count,high_count,total_count)==temp*amount+1+amount);
- DLIB_TEST(high_count-low_count == temp*amount+1+amount);
- }
- else
- {
- DLIB_TEST(test.get_range(symbol,low_count,high_count,total_count)==temp*amount + amount);
- DLIB_TEST(high_count-low_count == temp*amount + amount);
- }
- DLIB_TEST(total_count == test.get_total());
-
-
- test.get_symbol(target,symbol,low_count,high_count);
- DLIB_TEST(test.get_count(symbol) == high_count-low_count);
- DLIB_TEST(low_count <= target);
- DLIB_TEST(target < high_count);
- DLIB_TEST(high_count <= test.get_total());
- }
-
- }
-
- test.clear();
-
-
- oom = false;
- for (unsigned long i = 0; i < alphabet_size-1; ++i)
- {
- if(!test.increment_count(i))
- oom = true;
- unsigned long low_count = 0, high_count = 0, total_count = 0;
-
- if (!oom)
- {
- DLIB_TEST(test.get_range(i,low_count,high_count,total_count) == 1);
-
- DLIB_TEST(high_count == low_count+1);
- DLIB_TEST(total_count == test.get_total());
-
- DLIB_TEST(test.get_count(i) == 1);
- DLIB_TEST(test.get_total() == i+2);
- }
- }
-
-
-
- unsigned long counts[alphabet_size];
-
-
- for (int k = 0; k < 10; ++k)
- {
- unsigned long range = ::rand()%50000 + 2;
-
- test.clear();
-
- for (unsigned long i = 0; i < alphabet_size-1; ++i)
- counts[i] = 0;
- unsigned long total = 1;
- counts[alphabet_size-1] = 1;
-
-
- oom = false;
- for (unsigned long i = 0; i < alphabet_size; ++i)
- {
- unsigned long temp = static_cast<unsigned long>(::rand()%range);
- for (unsigned long j = 0; j < temp; ++j)
- {
- if (!test.increment_count(i))
- oom = true;
-
-
- if (total >= 65535)
- {
-
- total = 0;
- for (unsigned long i = 0; i < alphabet_size; ++i)
- {
- counts[i] >>= 1;
- total += counts[i];
- }
- if (counts[alphabet_size-1]==0)
- {
- counts[alphabet_size-1] = 1;
- ++total;
- }
- }
- counts[i] = counts[i] + 1;
- ++total;
-
-
- }
-
-
- unsigned long temp_total = 0;
- for (unsigned long a = 0; a < alphabet_size; ++a)
- {
- temp_total += test.get_count(a);
- }
-
- if (!oom)
- {
- DLIB_TEST_MSG(temp_total == test.get_total(),
- "temp_total == " << temp_total << endl <<
- "test.get_total() == " << test.get_total()
- );
-
- DLIB_TEST(test.get_count(alphabet_size-1) == counts[alphabet_size-1]);
- DLIB_TEST_MSG(test.get_total() == total,
- "test.get_total() == " << test.get_total() << endl <<
- "total == " << total
- );
- }
-
- unsigned long target = test.get_total()/2;
- unsigned long symbol = i, low_count = 0, high_count = 0, total_count = 0;
-
- if (!oom)
- {
-
- DLIB_TEST(test.get_range(symbol,low_count,high_count,total_count)==counts[symbol]);
-
- if (counts[symbol] != 0)
- {
- DLIB_TEST(total_count == total);
-
- DLIB_TEST(high_count <= total);
- DLIB_TEST(low_count < high_count);
- DLIB_TEST(high_count <= test.get_total());
- DLIB_TEST(test.get_count(symbol) == high_count-low_count);
- }
-
-
- if (target < total)
- {
- test.get_symbol(target,symbol,low_count,high_count);
-
-
- DLIB_TEST(high_count <= total);
- DLIB_TEST(low_count < high_count);
- DLIB_TEST(high_count <= test.get_total());
- DLIB_TEST(test.get_count(symbol) == high_count-low_count);
- DLIB_TEST(test.get_count(symbol) == counts[symbol]);
- }
- }
-
-
-
- }
-
- }
-
- oom = false;
- for (unsigned long h = 0; h < 10; ++h)
- {
- test.clear();
- DLIB_TEST(test.get_total() == 1);
-
- // fill out test with some numbers
- unsigned long temp = ::rand()%30000 + 50000;
- for (unsigned long j = 0; j < temp; ++j)
- {
- unsigned long symbol = (unsigned long)::rand()%alphabet_size;
- if (!test.increment_count(symbol))
- oom = true;
- }
-
- // make sure all symbols have a count of at least one
- for (unsigned long j = 0; j < alphabet_size; ++j)
- {
- if (test.get_count(j) == 0)
- test.increment_count(j);
- }
-
- unsigned long temp_total = 0;
- for (unsigned long j = 0; j < alphabet_size; ++j)
- {
- temp_total += test.get_count(j);
- }
- if (!oom)
- DLIB_TEST(temp_total == test.get_total());
-
-
- unsigned long low_counts[alphabet_size];
- unsigned long high_counts[alphabet_size];
-
- if (!oom)
- {
-
- // iterate over all the symbols
- for (unsigned long j = 0; j < alphabet_size; ++j)
- {
- unsigned long total;
- unsigned long count = test.get_range(j,low_counts[j],high_counts[j],total);
- DLIB_TEST(count == test.get_count(j));
- DLIB_TEST(count == high_counts[j] - low_counts[j]);
-
- }
-
-
-
-
- // make sure get_symbol() matches what get_range() told us
- for (unsigned long j = 0; j < alphabet_size; ++j)
- {
- for (unsigned long k = low_counts[j]; k < high_counts[j]; ++k)
- {
- unsigned long symbol, low_count, high_count;
- test.get_symbol(k,symbol,low_count,high_count);
- DLIB_TEST(high_count - low_count == test.get_count(symbol));
- DLIB_TEST_MSG(j == symbol,
- "j == " << j << endl <<
- "k == " << k << endl <<
- "symbol == " << symbol << endl <<
- "low_counts[j] == " << low_counts[j] << endl <<
- "high_counts[j] == " << high_counts[j] << endl <<
- "low_counts[symbol] == " << low_counts[symbol] << endl <<
- "high_counts[symbol] == " << high_counts[symbol] << endl <<
- "low_count == " << low_count << endl <<
- "high_count == " << high_count << endl <<
- "temp.count(j) == " << test.get_count(j)
- );
- DLIB_TEST_MSG(low_count == low_counts[j],
- "symbol: " << j << "\n" <<
- "target: " << k << "\n" <<
- "low_count: " << low_count << "\n" <<
- "low_counts[j]: " << low_counts[j]);
- DLIB_TEST(high_count == high_counts[j]);
- }
-
- }
- }
-
- }
-
-
-
-
- for (int h = 0; h < 10; ++h)
- {
-
-
- test.clear();
-
- for (unsigned long k = 0; k < alphabet_size-1; ++k)
- {
- counts[k] = 0;
- }
- counts[alphabet_size-1] = 1;
- unsigned long total = 1;
- unsigned long i = ::rand()%alphabet_size;
-
- unsigned long temp = 65536;
- for (unsigned long j = 0; j < temp; ++j)
- {
- test.increment_count(i);
-
-
- if (total >= 65535)
- {
- total = 0;
- for (unsigned long i = 0; i < alphabet_size; ++i)
- {
- counts[i] >>= 1;
- total += counts[i];
- }
- if (counts[alphabet_size-1] == 0)
- {
- ++total;
- counts[alphabet_size-1] = 1;
- }
- }
- counts[i] = counts[i] + 1;
- ++total;
-
- }
-
-
- DLIB_TEST(test.get_total() == total);
-
- unsigned long target = test.get_total()/2;
- unsigned long symbol = i, low_count = 0, high_count = 0, total_count = 0;
-
-
- DLIB_TEST(test.get_range(symbol,low_count,high_count,total_count)==counts[symbol]);
-
- if (counts[symbol] != 0)
- {
- DLIB_TEST(total_count == total);
-
- DLIB_TEST(high_count <= total);
- DLIB_TEST(low_count < high_count);
- DLIB_TEST(high_count <= test.get_total());
- DLIB_TEST(test.get_count(symbol) == high_count-low_count);
- }
-
-
-
- test.get_symbol(target,symbol,low_count,high_count);
-
-
- DLIB_TEST(high_count <= total);
- DLIB_TEST(low_count < high_count);
- DLIB_TEST(high_count <= test.get_total());
- DLIB_TEST(test.get_count(symbol) == high_count-low_count);
- DLIB_TEST(test.get_count(symbol) == counts[symbol]);
-
-
-
-
-
-
-
- }
-
- } // for (int g = 0; g < 2; ++g)
-
-
- }
-
-}
-
-#endif // DLIB_TEST_CONDITIONING_CLASs_H_
-