From 9ec20f85c44a44bf66d6e491357d6c7aaa63625d Mon Sep 17 00:00:00 2001 From: Jim Bankoski Date: Fri, 25 May 2012 09:07:32 -0700 Subject: [PATCH 1/1] boolcoder_test Changed to google style rather than pseudo webm project style Change-Id: I0e19d57342a1b27b818fe6a5ae9f6bb3710a122a --- test/boolcoder_test.cc | 155 +++++++++++++++++++++---------------------------- 1 file changed, 67 insertions(+), 88 deletions(-) diff --git a/test/boolcoder_test.cc b/test/boolcoder_test.cc index 00c2b75..41c2f7b 100644 --- a/test/boolcoder_test.cc +++ b/test/boolcoder_test.cc @@ -8,116 +8,95 @@ * be found in the AUTHORS file in the root of the source tree. */ -extern "C" -{ +extern "C" { #include "vp8/encoder/boolhuff.h" #include "vp8/decoder/dboolhuff.h" } #include #include -#include #include #include #include #include #include "third_party/googletest/src/include/gtest/gtest.h" +#include "vpx/vpx_integer.h" -typedef unsigned char uint8_t; - -namespace -{ +namespace { const int num_tests = 10; -class ACMRandom -{ -public: - ACMRandom(int seed) { Reset(seed);} +class ACMRandom { + public: + explicit ACMRandom(int seed) { Reset(seed); } - void Reset(int seed) { srand(seed); } + void Reset(int seed) { srand(seed); } - uint8_t Rand8(void) { return (rand() >> 8) & 0xff; } + uint8_t Rand8(void) { return (rand() >> 8) & 0xff; } - int PseudoUniform(int range) { return (rand() >> 8) % range; } + int PseudoUniform(int range) { return (rand() >> 8) % range; } - int operator()(int n) { return PseudoUniform(n); } + int operator()(int n) { return PseudoUniform(n); } - static int DeterministicSeed(void) { return 0xbaba; } + static int DeterministicSeed(void) { return 0xbaba; } }; -} - -TEST(VP8, TestBitIO) -{ - ACMRandom rnd(ACMRandom::DeterministicSeed()); - for (int n = 0; n < num_tests; ++n) - { - for (int method = 0; method <= 7; ++method) - { // we generate various proba - const int bits_to_test = 1000; - - uint8_t probas[bits_to_test]; - - for (int i = 0; i < bits_to_test; ++i) - { - const int parity = i & 1; - probas[i] = - (method == 0) ? 0 : - (method == 1) ? 255 : - (method == 2) ? 128 : - (method == 3) ? rnd.Rand8() : - (method == 4) ? (parity ? 0 : 255) : - // alternate between low and high proba: - (method == 5) ? (parity ? rnd(128) : 255 - rnd(128)) : - (method == 6) ? - (parity ? rnd(64) : 255 - rnd(64)) : - (parity ? rnd(32) : 255 - rnd(32)); - } - for (int bit_method = 0; bit_method <= 3; ++bit_method) - { - const int random_seed = 6432; - const int buffer_size = 10000; - ACMRandom bit_rnd(random_seed); - BOOL_CODER bw; - uint8_t bw_buffer[buffer_size]; - vp8_start_encode(&bw, bw_buffer, bw_buffer + buffer_size); - - int bit = (bit_method == 0) ? 0 : (bit_method == 1) ? 1 : 0; - for (int i = 0; i < bits_to_test; ++i) - { - if (bit_method == 2) - { - bit = (i & 1); - } - else if (bit_method == 3) - { - bit = bit_rnd(2); - } - vp8_encode_bool(&bw, bit, (int) probas[i]); - } - - vp8_stop_encode(&bw); - - BOOL_DECODER br; - vp8dx_start_decode(&br, bw_buffer, buffer_size); - bit_rnd.Reset(random_seed); - for (int i = 0; i < bits_to_test; ++i) - { - if (bit_method == 2) - { - bit = (i & 1); - } - else if (bit_method == 3) - { - bit = bit_rnd(2); - } - GTEST_ASSERT_EQ(vp8dx_decode_bool(&br, probas[i]), bit) - << "pos: " - << i << " / " << bits_to_test << " bit_method: " - << bit_method << " method: " << method; - } +} // namespace + +TEST(VP8, TestBitIO) { + ACMRandom rnd(ACMRandom::DeterministicSeed()); + for (int n = 0; n < num_tests; ++n) { + for (int method = 0; method <= 7; ++method) { // we generate various proba + const int bits_to_test = 1000; + uint8_t probas[bits_to_test]; + + for (int i = 0; i < bits_to_test; ++i) { + const int parity = i & 1; + probas[i] = + (method == 0) ? 0 : (method == 1) ? 255 : + (method == 2) ? 128 : + (method == 3) ? rnd.Rand8() : + (method == 4) ? (parity ? 0 : 255) : + // alternate between low and high proba: + (method == 5) ? (parity ? rnd(128) : 255 - rnd(128)) : + (method == 6) ? + (parity ? rnd(64) : 255 - rnd(64)) : + (parity ? rnd(32) : 255 - rnd(32)); + } + for (int bit_method = 0; bit_method <= 3; ++bit_method) { + const int random_seed = 6432; + const int buffer_size = 10000; + ACMRandom bit_rnd(random_seed); + BOOL_CODER bw; + uint8_t bw_buffer[buffer_size]; + vp8_start_encode(&bw, bw_buffer, bw_buffer + buffer_size); + + int bit = (bit_method == 0) ? 0 : (bit_method == 1) ? 1 : 0; + for (int i = 0; i < bits_to_test; ++i) { + if (bit_method == 2) { + bit = (i & 1); + } else if (bit_method == 3) { + bit = bit_rnd(2); + } + vp8_encode_bool(&bw, bit, static_cast(probas[i])); + } - } + vp8_stop_encode(&bw); + + BOOL_DECODER br; + vp8dx_start_decode(&br, bw_buffer, buffer_size); + bit_rnd.Reset(random_seed); + for (int i = 0; i < bits_to_test; ++i) { + if (bit_method == 2) { + bit = (i & 1); + } else if (bit_method == 3) { + bit = bit_rnd(2); + } + GTEST_ASSERT_EQ(vp8dx_decode_bool(&br, probas[i]), bit) + << "pos: "<< i << " / " << bits_to_test + << " bit_method: " << bit_method + << " method: " << method; } + } } + } } -- 2.7.4