⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skl_tester.h

📁 从FFMPEG转换而来的H264解码程序,VC下编译..
💻 H
字号:
/********************************************************
 * Some code. Copyright (C) 2003 by Pascal Massimino.   *
 * All Rights Reserved.      (http://skal.planet-d.net) *
 * For Educational/Academic use ONLY. See 'LICENSE.TXT'.*
 ********************************************************/
/*
 * skl_tester.h
 *
 *   Useful macros for tests
 *
 ********************************************************/

#include <stdio.h>
#include <stdlib.h>
#include "skl.h"
#include "skl_syst/skl_checker.h"
#include "skl_syst/skl_exception.h"

//////////////////////////////////////////////////////////

#define SHOW_FLT_ERROR_OFF  Skl_Show_Flt_Error=0
#define SHOW_FLT_ERROR_ON  Skl_Show_Flt_Error=1

#define TEST_FUNC(F) void F() {       \
  printf( "// -- " );           \
  printf( SKL_MK_STRING(F) );   \
  printf( " --\n" );

#define END_FUNC   /*printf( "// --\n" );*/ }


#define SKL_T_START \
  int Skl_Check_n=0; if (argc>1) Skl_Check_n=atoi(argv[1]); \
  try {                                                     \
    printf( "/////////// start ///////////\n" )       \

#define SKL_TEST(n,f) if (Skl_Check_n==(n)||(Skl_Check_n==0)) { f(); }

#define SKL_T_END   \
    printf( "//////////// end ////////////\n" );          \
  } catch( const SKL_EXCEPTION &e ) {                           \
    printf( "ERROR: Caught: "); e.Print(); printf( "\n");       \
    Skl_Nb_Error++;                                             \
  }                                                             \
  Skl_Check_Print()

#define SKL_T_RETURN  return (Skl_Nb_Error+Skl_Nb_Flt_Error)

#define SKL_TRY  try {

#define SKL_CATCH                     \
    printf( "ERROR: Line %d: Exception was not raised!!\n", __LINE__ ); \
    Skl_Nb_Error++;                   \
  } catch( const SKL_EXCEPTION &e ) { \
      printf( "Ok. Caught:" );        \
      e.Print();                      \
      printf("\n");                   \
      Skl_Nb_Check++;                 \
  }

//////////////////////////////////////////////////////////
// various checking functions
//////////////////////////////////////////////////////////

// -- check bool true

#define CHECK(EX) do { Skl_Nb_Check++; \
  if (!(EX)) Skl_PError_Bool(__LINE__, SKL_MK_STRING(EX) ); \
} while(0)

// -- check strings

#define CHECKSTR(EX1, EX2) do { Skl_Nb_Check++; \
  SKL_CST_STRING ex1 = (SKL_CST_STRING)(EX1);  SKL_CST_STRING ex2 = (SKL_CST_STRING)(EX2);  \
  if (strcmp(ex1,ex2)!=0) { Skl_PError_Str(__LINE__, ex1, SKL_MK_STRING(EX1), ex2, SKL_MK_STRING(EX2)); } \
} while(0)


// -- check 32/64b pointers

#define CHECKPTR(EX1, EX2) do { Skl_Nb_Check++; \
  SKL_ANY ex1 = (SKL_ANY)(EX1);  SKL_ANY ex2 = (SKL_ANY)(EX2);  \
  if (ex1!=ex2) { Skl_PError_Ptr(__LINE__, ex1, SKL_MK_STRING(EX1), ex2, SKL_MK_STRING(EX2)); } \
} while(0)

// -- check int

#define CHECKI(EX1, EX2) do { Skl_Nb_Check++; \
  int ex1 = (int)(EX1);  int ex2 = (int)(EX2);  \
  if (ex1!=ex2) { Skl_PError_Int(__LINE__, ex1, SKL_MK_STRING(EX1), ex2, SKL_MK_STRING(EX2)); } \
} while(0)

// -- check unsigned int

#define CHECKUI(EX1, EX2) do { Skl_Nb_Check++; \
  SKL_UINT32 ex1 = (SKL_UINT32)(EX1); SKL_UINT32 ex2 = (SKL_UINT32)(EX2);  \
  if (ex1!=ex2) { Skl_PError_UInt(__LINE__, ex1, SKL_MK_STRING(EX1), ex2, SKL_MK_STRING(EX2)); } \
} while(0)


// -- check equality for class with operator==

#define CHECKEQ(EX1, EX2) do { Skl_Nb_Check++; \
  SKL_BOOL Eq = ((EX1)==(EX2)); \
  if (!Eq) { Skl_PError_Eq( __LINE__, SKL_MK_STRING(EX1), SKL_MK_STRING(EX2)); } \
} while(0)


// -- check equality for class with operator!=

#define CHECKNEQ(EX1, EX2) do { Skl_Nb_Check++; \
  SKL_BOOL nEq = ((EX1)!=(EX2)); \
  if (nEq) { Skl_PError_Eq( __LINE__, SKL_MK_STRING(EX1), SKL_MK_STRING(EX2)); } \
} while(0)

// -- check float with default epsilon

#define CHECKF_EPS 1.0e-6f
#define CHECKF(EX1, EX2) do { Skl_Nb_Check++; \
  float ex1 = (float)(EX1);  float ex2 = (float)(EX2);  float d = (float)fabs(ex2-ex1); \
  if (d>CHECKF_EPS) { Skl_PError_Float(__LINE__, SKL_MK_STRING(EX1), ex1, SKL_MK_STRING(EX2), ex2, d, CHECKF_EPS ); } \
} while(0)

// -- check float with epsilon

#define CHECKFEPS(EX1, EX2, EPS) do { Skl_Nb_Check++; \
  float ex1 = (float)(EX1);  float ex2 = (float)(EX2);  float d = (float)fabs(ex2-ex1); \
  if (d>EPS) { Skl_PError_Float(__LINE__, SKL_MK_STRING(EX1), ex1, SKL_MK_STRING(EX2), ex2, d, EPS ); } \
} while(0)

// -- check int with epsilon

#define CHECKIEPS(EX1, EX2, EPS) do { Skl_Nb_Check++; \
  SKL_UINT32 ex1 = (SKL_UINT32)EX1;  SKL_UINT32 ex2 = (SKL_UINT32)EX2;  SKL_UINT32 d = abs(ex2-ex1); \
  if (d>EPS) { Skl_PError_Int_Eps(__LINE__, SKL_MK_STRING(EX1), ex1, SKL_MK_STRING(EX2), ex2, d, EPS ); } \
} while(0)


//////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -