Compare commits

..

No commits in common. 'ac358396a20c77cf664076c5844e656acb5978f2' and '990cb648f35a644b02dd09c45c791fe26617fb66' have entirely different histories.

@ -4,7 +4,6 @@ else()
set(CRC_LIBRARY 1)
endif()
cmake_minimum_required(VERSION 3.1)
project(crc)
if(TARGET ${PROJECT_NAME})
@ -12,6 +11,8 @@ if(TARGET ${PROJECT_NAME})
return()
endif()
cmake_minimum_required(VERSION 3.1)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@ -29,6 +30,7 @@ target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_LIST_DIR})
if (CRC_TESTS)
file(GLOB SOURCE_CPP_TEST
"unit-test/*.h"
"unit-test/*.cpp"
@ -41,7 +43,5 @@ if (CRC_TESTS)
add_executable(${PROJECT_NAME}_test ${SOURCE_CPP_TEST})
target_link_libraries(${PROJECT_NAME}_test PUBLIC ${PROJECT_NAME})
enable_testing()
add_test(NAME crc
COMMAND ${PROJECT_NAME}_test)
endif()

@ -51,7 +51,7 @@ static const uint16_t crc16tab[256]= {
0x6e17,0x7e36,0x4e55,0x5e74,0x2e93,0x3eb2,0x0ed1,0x1ef0
};
uint16_t crc16(const unsigned char *buf, size_t len) {
uint16_t crc16(const char *buf, int len) {
int counter;
uint16_t crc = 0;
for (counter = 0; counter < len; counter++)

@ -1,14 +1,12 @@
#ifndef _CRC_CRC16_H
#define _CRC_CRC16_H
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include <stddef.h>
#include <stdint.h>
uint16_t crc16(const unsigned char *buf, size_t len);
uint16_t crc16(const char *buf, int len);
#ifdef __cplusplus
}

@ -69,7 +69,7 @@ static uint32_t crc32_tab[] =
};
/* crc32 hash */
uint32_t crc32(const unsigned char *s, size_t len)
uint32_t crc32(const char* s, int len)
{
int i;
uint32_t crc32val = 0;

@ -1,14 +1,12 @@
#ifndef _CRC_CRC32_H
#define _CRC_CRC32_H
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include <stddef.h>
#include <stdint.h>
uint32_t crc32(const unsigned char *s, size_t len);
uint32_t crc32(const char* s, int len);
#ifdef __cplusplus
}

@ -170,7 +170,7 @@ static const uint64_t crc64_tab[256] = {
0x536fa08fdfd90e51ULL, 0x29b7d047efec8728ULL,
};
uint64_t crc64(const unsigned char *s, size_t l) {
uint64_t crc64(const char *s, int l) {
int j = 0;
uint64_t crc = 0;

@ -1,14 +1,12 @@
#ifndef _CRC_CRC64_H
#define _CRC_CRC64_H
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include <stddef.h>
#include <stdint.h>
uint64_t crc64(const unsigned char *s, size_t l);
uint64_t crc64(const char *s, int l);
#ifdef __cplusplus
}

@ -87,7 +87,7 @@ static const uint8_t crc8tab_msb[256] = {
};
// LSB-first
uint8_t crc8_lsb(const unsigned char *buf, size_t len) {
uint8_t crc8_lsb(const char *buf, int len) {
int counter;
uint8_t crc = 0;
for (counter = 0; counter < len; counter++)
@ -96,7 +96,7 @@ uint8_t crc8_lsb(const unsigned char *buf, size_t len) {
}
// MSB-first
uint8_t crc8_msb(const unsigned char *buf, size_t len) {
uint8_t crc8_msb(const char *buf, int len) {
int counter;
uint8_t crc = 0;
for (counter = 0; counter < len; counter++)

@ -1,18 +1,17 @@
#ifndef _CRC_CRC8_H
#define _CRC_CRC8_H
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include <stddef.h>
#include <stdint.h>
// LSB-first
uint8_t crc8_lsb(const unsigned char *buf, size_t len);
uint8_t crc8_lsb(const char *buf, int len);
// MSB-first
uint8_t crc8_msb(const unsigned char *buf, size_t len);
uint8_t crc8_msb(const char *buf, int len);
#ifdef __cplusplus
}

@ -1,12 +1,12 @@
#ifndef _CRC_CRC_POLY_H
#define _CRC_CRC_POLY_H
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include <stdint.h>
// LSB-first
uint8_t crc8_poly_lsb(uint8_t poly, uint8_t value);

@ -12,27 +12,27 @@
namespace common {
uint16_t Hash16(const std::string& key)
{
return crc16(reinterpret_cast<const unsigned char *>(key.c_str()), key.size());
return crc16(key.c_str(), key.size());
}
uint16_t Hash16(const unsigned char *cpKey, const size_t iKeyLen)
uint16_t Hash16(const char* cpKey, const int iKeyLen)
{
return crc16(cpKey, iKeyLen);
}
uint32_t Hash32(const std::string& key)
{
return crc32(reinterpret_cast<const unsigned char *>(key.c_str()), key.size());
return crc32(key.c_str(), key.size());
}
uint32_t Hash32(const unsigned char *cpKey, const size_t iKeyLen)
uint32_t Hash32(const char* cpKey, const int iKeyLen)
{
return crc32(cpKey, iKeyLen);
}
uint64_t Hash64(const std::string& key)
{
return crc64(reinterpret_cast<const unsigned char *>(key.c_str()), key.size());
return crc64(key.c_str(), key.size());
}
uint64_t Hash64(const unsigned char *cpKey, size_t iKeyLen)
uint64_t Hash64(const char* cpKey, const int iKeyLen)
{
return crc64(cpKey, iKeyLen);
}

@ -8,19 +8,18 @@
#ifndef _COMMON_CRC_CRCHASH_H_
#define _COMMON_CRC_CRCHASH_H_
#include <string>
#include <cstdint>
#include <stdint.h>
namespace common {
// string => 0x0000-0xffff
uint16_t Hash16(const std::string& key);
uint16_t Hash16(const unsigned char *cpKey, size_t iKeyLen);
uint16_t Hash16(const char* cpKey, const int iKeyLen);
// string => 0x00000000-0xffffffff
uint32_t Hash32(const std::string& key);
uint32_t Hash32(const unsigned char *cpKey, size_t iKeyLen);
uint32_t Hash32(const char* cpKey, const int iKeyLen);
// string => 0x0000000000000000-0xffffffffffffffff
uint64_t Hash64(const std::string& key);
uint64_t Hash64(const unsigned char *cpKey, size_t iKeyLen);
uint64_t Hash64(const char* cpKey, const int iKeyLen);
} // namespace common
#endif // _COMMON_CRC_CRCHASH_H_

@ -1,6 +1,5 @@
PROJECT = unittest
CXX=gcc -g -std=c++11
CC=gcc -g
SHARED_FLAG = -fPIC -shared
@ -43,7 +42,7 @@ install :
cp unittest ../test
%.o : %.cpp
$(CXX) $(INC) -c $< -o $@
$(CC) $(INC) -c $< -o $@
%.o : %.c
$(CC) $(INC) -c $< -o $@
%.o : %.cc

@ -6,30 +6,26 @@
*/
#include "ut/test_harness.h"
#include "crc/crc8.h"
#include "crc/crc16.h"
#include "crc/crc32.h"
#include "crc/crc64.h"
#include "crc/crc_poly.h"
#include <cstring>
#include "../crc/crc8.h"
#include "../crc/crc16.h"
#include "../crc/crc32.h"
#include "../crc/crc64.h"
#include "../crc/crc_poly.h"
#include <iostream>
#include <string.h>
TEST(CRC8Test, BasicTest)
{
const char* inData = "123456789";
uint8_t expect = 0xa2;
EXPECT_EQ(crc8_msb(reinterpret_cast<const unsigned char *>(inData), 9), expect);
EXPECT_EQ(crc8_msb(inData, 9), expect);
const char* data = "Hello World!!!";
expect = 0x68;
EXPECT_EQ(crc8_msb(reinterpret_cast<const unsigned char *>(data), strlen(data)), expect);
EXPECT_EQ(crc8_msb(data, strlen(data)), expect);
expect = 0x2c;
EXPECT_EQ(crc8_lsb(reinterpret_cast<const unsigned char *>(data), strlen(data)), expect);
const uint8_t buffer[] = {0xb0, 0, 0, 0, 0, 0, 0};
expect = 0x1a;
EXPECT_EQ(crc8_lsb(buffer, sizeof(buffer)), expect);
EXPECT_EQ(crc8_lsb(data, strlen(data)), expect);
}
TEST(CRC16Test, BasicTest)
@ -37,7 +33,7 @@ TEST(CRC16Test, BasicTest)
const char* inData = "123456789";
uint16_t expect = 0x31C3;
EXPECT_EQ(crc16(reinterpret_cast<const unsigned char *>(inData), 9), expect);
EXPECT_EQ(crc16(inData, 9), expect);
}
TEST(CRC32Test, BasicTest)
@ -45,7 +41,7 @@ TEST(CRC32Test, BasicTest)
const char* inData = "123456789";
uint32_t expect = 0xCBF43926;
EXPECT_EQ(crc32(reinterpret_cast<const unsigned char *>(inData), 9), expect);
EXPECT_EQ(crc32(inData, 9), expect);
}
TEST(CRC64Test, BasicTest)
@ -53,7 +49,7 @@ TEST(CRC64Test, BasicTest)
const char* inData = "123456789";
uint64_t expect = 0xe9c6d914c4b8d9caL;
EXPECT_EQ(crc64(reinterpret_cast<const unsigned char *>(inData), 9), expect);
EXPECT_EQ(crc64(inData, 9), expect);
}
TEST(CRC8PolyTest, BasicTest)

@ -1,9 +1,12 @@
#include "test_harness.h"
#include <vector>
#include <string>
#include <cstring>
#include <ctime>
#include <string.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/time.h>
#include <vector>
namespace common {
namespace test {
@ -77,15 +80,9 @@ namespace common {
startMs_, endMs, endMs - startMs_);
}
long TestPerfomence::NowMs() {
timespec timeNow{};
if (timespec_get(&timeNow, TIME_UTC) != TIME_UTC)
{
fputs("timespec_get failed!", stderr);
return 0;
}
return static_cast<long>(timeNow.tv_sec * 1000 + timeNow.tv_nsec / 1000);
struct timeval timeNow;
gettimeofday(&timeNow, NULL);
return (timeNow.tv_sec) * 1000 + timeNow.tv_usec / 1000;
}
}

@ -48,7 +48,7 @@ class Tester {
fname_, line_, ss_.str().c_str());
fprintf(stderr, "\033[0m");
errCount++;
exit(1);
//exit(1);
}
}
@ -64,7 +64,7 @@ class Tester {
template <class X, class Y> \
Tester& name(const X& x, const Y& y) { \
if (! (x op y)) { \
ss_ << " failed: Expect:" << std::hex << uint64_t {x} << (" " #op " ") << "Actual:" << std::hex << uint64_t {y}; \
ss_ << " failed: Expect:" << x << (" " #op " ") << "Actual:" << y; \
ok_ = false; \
} \
return *this; \

Loading…
Cancel
Save