]> granicus.if.org Git - libvpx/commitdiff
tests: clear system state after non-API calls
authorJames Zern <jzern@google.com>
Tue, 18 Jun 2013 05:58:40 +0000 (22:58 -0700)
committerJames Zern <jzern@google.com>
Tue, 18 Jun 2013 18:32:27 +0000 (11:32 -0700)
add ClearSystemState() to reset MMX registers avoiding corrupting
subsequent tests.

Change-Id: I668deb09aa7aa467709776e5819f936910698bc0

test/clear_system_state.h [new file with mode: 0644]
test/idct_test.cc
test/intrapred_test.cc
test/pp_filter_test.cc
test/sad_test.cc
test/sixtap_predict_test.cc
test/subtract_test.cc
test/test.mk
test/variance_test.cc

diff --git a/test/clear_system_state.h b/test/clear_system_state.h
new file mode 100644 (file)
index 0000000..e240981
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ *  Copyright (c) 2013 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.
+ */
+#ifndef TEST_CLEAR_SYSTEM_STATE_H_
+#define TEST_CLEAR_SYSTEM_STATE_H_
+
+#include "vpx_config.h"
+extern "C" {
+#if ARCH_X86 || ARCH_X86_64
+# include "vpx_ports/x86.h"
+#endif
+}
+
+namespace libvpx_test {
+
+// Reset system to a known state. This function should be used for all non-API
+// test cases.
+inline void ClearSystemState() {
+#if ARCH_X86 || ARCH_X86_64
+  vpx_reset_mmx_state();
+#endif
+}
+
+}  // namespace libvpx_test
+#endif  // TEST_CLEAR_SYSTEM_STATE_H_
index 51fb65a4315df44c3f2afa9ed6a8122fe160ce90..659cce05fa7bdca0e256e235e8dd0a02848b7fd1 100644 (file)
@@ -13,6 +13,7 @@ extern "C" {
 #include "./vpx_config.h"
 #include "./vp8_rtcd.h"
 }
+#include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "third_party/googletest/src/include/gtest/gtest.h"
 
@@ -32,6 +33,10 @@ class IDCTTest : public ::testing::TestWithParam<idct_fn_t> {
             output[i] = ((i & 0xF) < 4 && (i < 64)) ? 0 : -1;
     }
 
+    virtual void TearDown() {
+      libvpx_test::ClearSystemState();
+    }
+
     idct_fn_t UUT;
     short input[16];
     unsigned char output[256];
index 149399024a554c81e2bcd8ba37324431174db153..39ec89679b7fdcc02a6dc8f694bd668b585ac9b3 100644 (file)
@@ -11,6 +11,7 @@
 
 #include <string.h>
 #include "test/acm_random.h"
+#include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "third_party/googletest/src/include/gtest/gtest.h"
 extern "C" {
@@ -25,6 +26,11 @@ namespace {
 using libvpx_test::ACMRandom;
 
 class IntraPredBase {
+ public:
+  virtual void TearDown() {
+    libvpx_test::ClearSystemState();
+  }
+
  protected:
   void SetupMacroblock(uint8_t *data, int block_size, int stride,
                        int num_planes) {
index 412a57442cc7ad3b2a4caf406c942a8b8352a76a..79896fe61bbadd93236b146b396026ae58005d36 100644 (file)
@@ -7,6 +7,7 @@
  *  in the file PATENTS.  All contributing project authors may
  *  be found in the AUTHORS file in the root of the source tree.
  */
+#include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "third_party/googletest/src/include/gtest/gtest.h"
 extern "C" {
@@ -27,7 +28,12 @@ typedef void (*post_proc_func_t)(unsigned char *src_ptr,
 namespace {
 
 class Vp8PostProcessingFilterTest
-    : public ::testing::TestWithParam<post_proc_func_t> {};
+    : public ::testing::TestWithParam<post_proc_func_t> {
+ public:
+  virtual void TearDown() {
+    libvpx_test::ClearSystemState();
+  }
+};
 
 // Test routine for the VP8 post-processing function
 // vp8_post_proc_down_and_across_mb_row_c.
index 8a90630aedecb98de5a6bb8c2346664217c59236..1f5435f2ab09256b9d54d120522da15ca1195cf3 100644 (file)
@@ -26,6 +26,7 @@ extern "C" {
 }
 
 #include "test/acm_random.h"
+#include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "test/util.h"
 #include "third_party/googletest/src/include/gtest/gtest.h"
@@ -67,6 +68,10 @@ class SADTestBase : public ::testing::Test {
     reference_data_ = NULL;
   }
 
+  virtual void TearDown() {
+    libvpx_test::ClearSystemState();
+  }
+
  protected:
   // Handle blocks up to 4 blocks 64x64 with stride up to 128
   static const int kDataAlignment = 16;
index 9ab7a73479d1e184a8e9dc1208321b7cb122c185..ee4faac374857d0d0d3822e6deacb654a8ff86b6 100644 (file)
@@ -12,6 +12,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include "test/acm_random.h"
+#include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 #include "test/util.h"
 #include "third_party/googletest/src/include/gtest/gtest.h"
@@ -48,6 +49,10 @@ class SixtapPredictTest : public PARAMS(int, int, sixtap_predict_fn_t) {
     dst_c_ = NULL;
   }
 
+  virtual void TearDown() {
+    libvpx_test::ClearSystemState();
+  }
+
  protected:
   // Make test arrays big enough for 16x16 functions. Six-tap filters
   // need 5 extra pixels outside of the macroblock.
index e7d107392cd2e214805ef33760ce8654403222eb..81bfb662cde8ae1b6697b77f8268681da451a0bf 100644 (file)
@@ -10,6 +10,7 @@
 
 #include "third_party/googletest/src/include/gtest/gtest.h"
 #include "test/acm_random.h"
+#include "test/clear_system_state.h"
 #include "test/register_state_check.h"
 extern "C" {
 #include "vpx_config.h"
@@ -23,7 +24,12 @@ typedef void (*subtract_b_fn_t)(BLOCK *be, BLOCKD *bd, int pitch);
 
 namespace {
 
-class SubtractBlockTest : public ::testing::TestWithParam<subtract_b_fn_t> {};
+class SubtractBlockTest : public ::testing::TestWithParam<subtract_b_fn_t> {
+ public:
+  virtual void TearDown() {
+    libvpx_test::ClearSystemState();
+  }
+};
 
 using libvpx_test::ACMRandom;
 
index fe5255d3c92b1bd49d87397c5f752dc35055e2ef..806901d2756cee538650e16879b7bb2d19caf5e1 100644 (file)
@@ -1,3 +1,4 @@
+LIBVPX_TEST_SRCS-yes += clear_system_state.h
 LIBVPX_TEST_SRCS-yes += register_state_check.h
 LIBVPX_TEST_SRCS-yes += test.mk
 LIBVPX_TEST_SRCS-yes += acm_random.h
index 337980cd7384bfdfcccaf3c63912043c4f315cb0..dfa1a07c70b329af0275237651a331d9bb90e028 100644 (file)
@@ -12,6 +12,8 @@
 
 #include "third_party/googletest/src/include/gtest/gtest.h"
 
+#include "test/clear_system_state.h"
+
 #include "vpx/vpx_integer.h"
 #include "vpx_config.h"
 extern "C" {
@@ -51,6 +53,7 @@ class VarianceTest :
   virtual void TearDown() {
     delete[] src_;
     delete[] ref_;
+    libvpx_test::ClearSystemState();
   }
 
  protected: