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

📄 ccxx_tests.cpp

📁 贡献一份commoncpp2,有兴趣的可以研究一下
💻 CPP
字号:
#include <cppunit/extensions/TestFactoryRegistry.h>#include <cppunit/CompilerOutputter.h>#include <cppunit/ui/text/TestRunner.h>#include <string>#include <iomanip>//#include "SHATumblerTest.h"//CPPUNIT_TEST_SUITE_REGISTRATION(SHATumblerTest);using namespace std;#define ULONG unsigned longULONG crc32_table[256]; // Lookup table array// Reflection is a requirement for the official CRC-32 standard.// You can create CRCs without it, but they won't conform to the standard.ULONG Reflect(ULONG ref, char ch){// Used only by Init_CRC32_Table()	ULONG value(0);	// Swap bit 0 for bit 7	// bit 1 for bit 6, etc.	for(int i = 1; i < (ch + 1); i++)	{		if(ref & 1)			value |= 1 << (ch - i);		ref >>= 1;	}	return value;}// Call this function only once to initialize the CRC table.void Init_CRC32_Table(){// Called by OnInitDialog()	// This is the official polynomial used by CRC-32 	// in PKZip, WinZip and Ethernet. 	ULONG ulPolynomial = 0x04c11db7;	// 256 values representing ASCII character codes.	for(int i = 0; i <= 0xFF; i++)	{		crc32_table[i]=Reflect(i, 8) << 24;		for (int j = 0; j < 8; j++)			crc32_table[i] = (crc32_table[i] << 1) ^ (crc32_table[i] & (1 << 31) ? ulPolynomial : 0);		crc32_table[i] = Reflect(crc32_table[i], 32);    //cout << i << ":" << crc32_table[i] << endl;	}}// Once the lookup table has been filled in by the two functions above,// this function creates all CRCs using only the lookup table.int Get_CRC(string &text){// Called by OnChangeText()	// Be sure to use unsigned variables,	// because negative values introduce high bits	// where zero bits are required.	// Start out with all bits set high.	ULONG  ulCRC(0xffffffff);	int len;	unsigned char* buffer;	// Get the length.	// Note that if the text contains NULL characters	// processing ends at the first NULL and the CRC value is invalid.	// See the 32 Bit File Demonstration source code	// for a method of dealing with NULL characters in files.	len = text.length();	// Save the text in the buffer.	buffer = (unsigned char*)text.c_str();	// Perform the algorithm on each character	// in the string, using the lookup table values.	while(len--)		ulCRC = (ulCRC >> 8) ^ crc32_table[(ulCRC & 0xFF) ^ *buffer++];	// Exclusive OR the result with the beginning value.	return ulCRC ^ 0xffffffff;}int main(int argc, char * argv[]){  // if command line contains "-selftest" then this is the post build check  // => the output must be in the compiler error format.  bool selfTest = (argc > 1)  && (std::string("-selftest") == argv[1]);  // new  CppUnit::TestFactoryRegistry &registry = CppUnit::TestFactoryRegistry::getRegistry();  CppUnit::TextUi::TestRunner runner;  runner.addTest(registry.makeTest());  if(selfTest)  { // Change the default outputter to a compiler error format outputter    // The test runner owns the new outputter.    runner.setOutputter(      CppUnit::CompilerOutputter::defaultOutputter(&runner.result(), std::cerr)    );  }  bool wasSucessful = runner.run("", false);  //Init_CRC32_Table();  //cout << hex << setw(8) << Get_CRC(string("pippo"));  return !wasSucessful; // inverted as 0 is success 1 is failure}

⌨️ 快捷键说明

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