shithub: libvpx

Download patch

ref: 2d225689d36128e7c7fa1351e5c725ba4830f6b2
parent: 2bf62c1dbb191861fe50d3c71e6a51372d46327e
author: John Koleszar <jkoleszar@google.com>
date: Tue May 22 07:56:31 EDT 2012

Move all tests to test/ directory

Consolodate the unit tests under vp8/ to the test/ directory

Change-Id: I6d6a0fb60f5e3874a4d6710e9e121dd3e81a93db

--- /dev/null
+++ b/test/boolcoder_test.cc
@@ -1,0 +1,123 @@
+/*
+ *  Copyright (c) 2012 The WebM project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+extern "C"
+{
+#include "vp8/encoder/boolhuff.h"
+#include "vp8/decoder/dboolhuff.h"
+}
+
+#include <math.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+
+#include "third_party/googletest/src/include/gtest/gtest.h"
+
+typedef unsigned char uint8_t;
+
+namespace
+{
+const int num_tests = 10;
+
+class ACMRandom
+{
+public:
+    ACMRandom(int seed) { Reset(seed);}
+
+    void Reset(int seed) { srand(seed); }
+
+    uint8_t Rand8(void) { return (rand() >> 8) & 0xff; }
+
+    int PseudoUniform(int range) { return (rand() >> 8) % range; }
+
+    int operator()(int n) { return PseudoUniform(n); }
+
+    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;
+                }
+
+            }
+        }
+    }
+}
--- /dev/null
+++ b/test/idctllm_test.cc
@@ -1,0 +1,125 @@
+/*
+ *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+
+extern "C" {
+#include "vpx_config.h"
+#include "vpx_rtcd.h"
+}
+#include "third_party/googletest/src/include/gtest/gtest.h"
+
+typedef void (*idct_fn_t)(short *input, unsigned char *pred_ptr,
+                          int pred_stride, unsigned char *dst_ptr,
+                          int dst_stride);
+namespace {
+class IDCTTest : public ::testing::TestWithParam<idct_fn_t>
+{
+  protected:
+    virtual void SetUp()
+    {
+        int i;
+
+        UUT = GetParam();
+        memset(input, 0, sizeof(input));
+        /* Set up guard blocks */
+        for(i=0; i<256; i++)
+            output[i] = ((i&0xF)<4&&(i<64))?0:-1;
+    }
+
+    idct_fn_t UUT;
+    short input[16];
+    unsigned char output[256];
+    unsigned char predict[256];
+};
+
+TEST_P(IDCTTest, TestGuardBlocks)
+{
+    int i;
+
+    for(i=0; i<256; i++)
+        if((i&0xF) < 4 && i<64)
+            EXPECT_EQ(0, output[i]) << i;
+        else
+            EXPECT_EQ(255, output[i]);
+}
+
+TEST_P(IDCTTest, TestAllZeros)
+{
+    int i;
+
+    UUT(input, output, 16, output, 16);
+
+    for(i=0; i<256; i++)
+        if((i&0xF) < 4 && i<64)
+            EXPECT_EQ(0, output[i]) << "i==" << i;
+        else
+            EXPECT_EQ(255, output[i]) << "i==" << i;
+}
+
+TEST_P(IDCTTest, TestAllOnes)
+{
+    int i;
+
+    input[0] = 4;
+    UUT(input, output, 16, output, 16);
+
+    for(i=0; i<256; i++)
+        if((i&0xF) < 4 && i<64)
+            EXPECT_EQ(1, output[i]) << "i==" << i;
+        else
+            EXPECT_EQ(255, output[i]) << "i==" << i;
+}
+
+TEST_P(IDCTTest, TestAddOne)
+{
+    int i;
+
+    for(i=0; i<256; i++)
+        predict[i] = i;
+
+    input[0] = 4;
+    UUT(input, predict, 16, output, 16);
+
+    for(i=0; i<256; i++)
+        if((i&0xF) < 4 && i<64)
+            EXPECT_EQ(i+1, output[i]) << "i==" << i;
+        else
+            EXPECT_EQ(255, output[i]) << "i==" << i;
+}
+
+TEST_P(IDCTTest, TestWithData)
+{
+    int i;
+
+    for(i=0; i<16; i++)
+        input[i] = i;
+
+    UUT(input, output, 16, output, 16);
+
+    for(i=0; i<256; i++)
+        if((i&0xF) > 3 || i>63)
+            EXPECT_EQ(255, output[i]) << "i==" << i;
+        else if(i == 0)
+            EXPECT_EQ(11, output[i]) << "i==" << i;
+        else if(i == 34)
+            EXPECT_EQ(1, output[i]) << "i==" << i;
+        else if(i == 2 || i == 17 || i == 32)
+            EXPECT_EQ(3, output[i]) << "i==" << i;
+        else
+            EXPECT_EQ(0, output[i]) << "i==" << i;
+}
+
+INSTANTIATE_TEST_CASE_P(C, IDCTTest,
+                        ::testing::Values(vp8_short_idct4x4llm_c));
+#if HAVE_MMX
+INSTANTIATE_TEST_CASE_P(MMX, IDCTTest,
+                        ::testing::Values(vp8_short_idct4x4llm_mmx));
+#endif
+}
--- a/test/test.mk
+++ b/test/test.mk
@@ -1,2 +1,4 @@
 LIBVPX_TEST_SRCS-yes += test.mk
+LIBVPX_TEST_SRCS-yes += boolcoder_test.cc
+LIBVPX_TEST_SRCS-yes += idctllm_test.cc
 LIBVPX_TEST_SRCS-yes += test_libvpx.cc
--- a/vp8/common/idctllm_test.cc
+++ /dev/null
@@ -1,125 +1,0 @@
-/*
- *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-
-extern "C" {
-#include "vpx_config.h"
-#include "vpx_rtcd.h"
-}
-#include "third_party/googletest/src/include/gtest/gtest.h"
-
-typedef void (*idct_fn_t)(short *input, unsigned char *pred_ptr,
-                          int pred_stride, unsigned char *dst_ptr,
-                          int dst_stride);
-namespace {
-class IDCTTest : public ::testing::TestWithParam<idct_fn_t>
-{
-  protected:
-    virtual void SetUp()
-    {
-        int i;
-
-        UUT = GetParam();
-        memset(input, 0, sizeof(input));
-        /* Set up guard blocks */
-        for(i=0; i<256; i++)
-            output[i] = ((i&0xF)<4&&(i<64))?0:-1;
-    }
-
-    idct_fn_t UUT;
-    short input[16];
-    unsigned char output[256];
-    unsigned char predict[256];
-};
-
-TEST_P(IDCTTest, TestGuardBlocks)
-{
-    int i;
-
-    for(i=0; i<256; i++)
-        if((i&0xF) < 4 && i<64)
-            EXPECT_EQ(0, output[i]) << i;
-        else
-            EXPECT_EQ(255, output[i]);
-}
-
-TEST_P(IDCTTest, TestAllZeros)
-{
-    int i;
-
-    UUT(input, output, 16, output, 16);
-
-    for(i=0; i<256; i++)
-        if((i&0xF) < 4 && i<64)
-            EXPECT_EQ(0, output[i]) << "i==" << i;
-        else
-            EXPECT_EQ(255, output[i]) << "i==" << i;
-}
-
-TEST_P(IDCTTest, TestAllOnes)
-{
-    int i;
-
-    input[0] = 4;
-    UUT(input, output, 16, output, 16);
-
-    for(i=0; i<256; i++)
-        if((i&0xF) < 4 && i<64)
-            EXPECT_EQ(1, output[i]) << "i==" << i;
-        else
-            EXPECT_EQ(255, output[i]) << "i==" << i;
-}
-
-TEST_P(IDCTTest, TestAddOne)
-{
-    int i;
-
-    for(i=0; i<256; i++)
-        predict[i] = i;
-
-    input[0] = 4;
-    UUT(input, predict, 16, output, 16);
-
-    for(i=0; i<256; i++)
-        if((i&0xF) < 4 && i<64)
-            EXPECT_EQ(i+1, output[i]) << "i==" << i;
-        else
-            EXPECT_EQ(255, output[i]) << "i==" << i;
-}
-
-TEST_P(IDCTTest, TestWithData)
-{
-    int i;
-
-    for(i=0; i<16; i++)
-        input[i] = i;
-
-    UUT(input, output, 16, output, 16);
-
-    for(i=0; i<256; i++)
-        if((i&0xF) > 3 || i>63)
-            EXPECT_EQ(255, output[i]) << "i==" << i;
-        else if(i == 0)
-            EXPECT_EQ(11, output[i]) << "i==" << i;
-        else if(i == 34)
-            EXPECT_EQ(1, output[i]) << "i==" << i;
-        else if(i == 2 || i == 17 || i == 32)
-            EXPECT_EQ(3, output[i]) << "i==" << i;
-        else
-            EXPECT_EQ(0, output[i]) << "i==" << i;
-}
-
-INSTANTIATE_TEST_CASE_P(C, IDCTTest,
-                        ::testing::Values(vp8_short_idct4x4llm_c));
-#if HAVE_MMX
-INSTANTIATE_TEST_CASE_P(MMX, IDCTTest,
-                        ::testing::Values(vp8_short_idct4x4llm_mmx));
-#endif
-}
--- a/vp8/encoder/boolcoder_test.cc
+++ /dev/null
@@ -1,123 +1,0 @@
-/*
- *  Copyright (c) 2012 The WebM project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-extern "C"
-{
-#include "vp8/encoder/boolhuff.h"
-#include "vp8/decoder/dboolhuff.h"
-}
-
-#include <math.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-
-#include "third_party/googletest/src/include/gtest/gtest.h"
-
-typedef unsigned char uint8_t;
-
-namespace
-{
-const int num_tests = 10;
-
-class ACMRandom
-{
-public:
-    ACMRandom(int seed) { Reset(seed);}
-
-    void Reset(int seed) { srand(seed); }
-
-    uint8_t Rand8(void) { return (rand() >> 8) & 0xff; }
-
-    int PseudoUniform(int range) { return (rand() >> 8) % range; }
-
-    int operator()(int n) { return PseudoUniform(n); }
-
-    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;
-                }
-
-            }
-        }
-    }
-}
--- a/vp8/vp8_common.mk
+++ b/vp8/vp8_common.mk
@@ -30,7 +30,6 @@
 VP8_COMMON_SRCS-yes += common/generic/systemdependent.c
 VP8_COMMON_SRCS-yes += common/idct_blk.c
 VP8_COMMON_SRCS-yes += common/idctllm.c
-LIBVPX_TEST_SRCS-yes += ../vp8/common/idctllm_test.cc
 VP8_COMMON_SRCS-yes += common/alloccommon.h
 VP8_COMMON_SRCS-yes += common/blockd.h
 VP8_COMMON_SRCS-yes += common/common.h
--- a/vp8/vp8cx.mk
+++ b/vp8/vp8cx.mk
@@ -88,8 +88,6 @@
 VP8_CX_SRCS-$(CONFIG_MULTI_RES_ENCODING) += encoder/mr_dissim.c
 VP8_CX_SRCS-$(CONFIG_MULTI_RES_ENCODING) += encoder/mr_dissim.h
 
-LIBVPX_TEST_SRCS-yes += ../vp8/encoder/boolcoder_test.cc
-
 ifeq ($(CONFIG_REALTIME_ONLY),yes)
 VP8_CX_SRCS_REMOVE-yes += encoder/firstpass.c
 VP8_CX_SRCS_REMOVE-yes += encoder/temporal_filter.c
--