diff options
Diffstat (limited to 'ml/dlib/dlib/test/conditioning_class.h')
-rw-r--r-- | ml/dlib/dlib/test/conditioning_class.h | 841 |
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_ - |