mirror of https://gitee.com/bigwinds/arangodb
702 lines
37 KiB
C++
702 lines
37 KiB
C++
////////////////////////////////////////////////////////////////////////////////
|
||
/// @brief test suite for hashes.c
|
||
///
|
||
/// @file
|
||
///
|
||
/// DISCLAIMER
|
||
///
|
||
/// Copyright 2012 triagens GmbH, Cologne, Germany
|
||
///
|
||
/// Licensed under the Apache License, Version 2.0 (the "License");
|
||
/// you may not use this file except in compliance with the License.
|
||
/// You may obtain a copy of the License at
|
||
///
|
||
/// http://www.apache.org/licenses/LICENSE-2.0
|
||
///
|
||
/// Unless required by applicable law or agreed to in writing, software
|
||
/// distributed under the License is distributed on an "AS IS" BASIS,
|
||
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
/// See the License for the specific language governing permissions and
|
||
/// limitations under the License.
|
||
///
|
||
/// Copyright holder is triAGENS GmbH, Cologne, Germany
|
||
///
|
||
/// @author Jan Steemann
|
||
/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
|
||
#include "Basics/Common.h"
|
||
|
||
#include "gtest/gtest.h"
|
||
|
||
#include "Basics/Utf8Helper.h"
|
||
#include "Basics/directories.h"
|
||
#include "Basics/fasthash.h"
|
||
#include "Basics/files.h"
|
||
#include "Basics/hashes.h"
|
||
|
||
#include "icu-helper.h"
|
||
|
||
// -----------------------------------------------------------------------------
|
||
// --SECTION-- test suite
|
||
// -----------------------------------------------------------------------------
|
||
|
||
class CHashesTest : public ::testing::Test {
|
||
protected:
|
||
CHashesTest() {
|
||
IcuInitializer::setup("./3rdParty/V8/v8/third_party/icu/common/icudtl.dat");
|
||
}
|
||
};
|
||
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
/// @brief test fasthash64
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
|
||
TEST_F(CHashesTest, tst_fasthash64_uint64) {
|
||
uint64_t value;
|
||
|
||
value = 0;
|
||
EXPECT_TRUE((uint64_t)606939172421154273ULL == fasthash64(&value, sizeof(value), 0x12345678));
|
||
EXPECT_TRUE((uint64_t)606939172421154273ULL == fasthash64_uint64(value, 0x12345678));
|
||
|
||
value = 1;
|
||
EXPECT_TRUE((uint64_t)2986466439906256014ULL ==
|
||
fasthash64(&value, sizeof(value), 0x12345678));
|
||
EXPECT_TRUE((uint64_t)2986466439906256014ULL == fasthash64_uint64(value, 0x12345678));
|
||
|
||
value = 123456;
|
||
EXPECT_TRUE((uint64_t)10846706210321519612ULL ==
|
||
fasthash64(&value, sizeof(value), 0x12345678));
|
||
EXPECT_TRUE((uint64_t)10846706210321519612ULL == fasthash64_uint64(value, 0x12345678));
|
||
|
||
value = 123456789012345ULL;
|
||
EXPECT_TRUE((uint64_t)11872028338155052138ULL ==
|
||
fasthash64(&value, sizeof(value), 0x12345678));
|
||
EXPECT_TRUE((uint64_t)11872028338155052138ULL == fasthash64_uint64(value, 0x12345678));
|
||
|
||
value = 0xffffff000000ULL;
|
||
EXPECT_TRUE((uint64_t)5064027312035038651ULL ==
|
||
fasthash64(&value, sizeof(value), 0x12345678));
|
||
EXPECT_TRUE((uint64_t)5064027312035038651ULL == fasthash64_uint64(value, 0x12345678));
|
||
|
||
value = 0xffffffffffffULL;
|
||
EXPECT_TRUE((uint64_t)12472603196990564371ULL ==
|
||
fasthash64(&value, sizeof(value), 0x12345678));
|
||
EXPECT_TRUE((uint64_t)12472603196990564371ULL == fasthash64_uint64(value, 0x12345678));
|
||
}
|
||
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
/// @brief test fasthash64
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
|
||
TEST_F(CHashesTest, tst_fasthash64) {
|
||
std::string buffer;
|
||
|
||
buffer = "";
|
||
EXPECT_TRUE((uint64_t)5555116246627715051ULL ==
|
||
fasthash64(buffer.c_str(), buffer.size(), 0x12345678));
|
||
|
||
buffer = " ";
|
||
EXPECT_TRUE((uint64_t)4304446254109062897ULL ==
|
||
fasthash64(buffer.c_str(), buffer.size(), 0x12345678));
|
||
|
||
buffer = "abc";
|
||
EXPECT_TRUE((uint64_t)14147965635343636579ULL ==
|
||
fasthash64(buffer.c_str(), buffer.size(), 0x12345678));
|
||
|
||
buffer = "ABC";
|
||
EXPECT_TRUE((uint64_t)3265783561331679725ULL ==
|
||
fasthash64(buffer.c_str(), buffer.size(), 0x12345678));
|
||
|
||
buffer = "der kuckuck und der Esel, die hatten einen Streit";
|
||
EXPECT_TRUE((uint64_t)13782917465498480784ULL ==
|
||
fasthash64(buffer.c_str(), buffer.size(), 0x12345678));
|
||
|
||
buffer = "Fox you have stolen the goose, give she back again";
|
||
EXPECT_TRUE((uint64_t)5079926258749101985ULL ==
|
||
fasthash64(buffer.c_str(), buffer.size(), 0x12345678));
|
||
}
|
||
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
/// @brief test fasthash64 unaligned reads
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
|
||
TEST_F(CHashesTest, tst_fasthash64_unaligned) {
|
||
std::string buffer;
|
||
|
||
buffer = " der kuckuck und der Esel, die hatten einen Streit";
|
||
EXPECT_TRUE((uint64_t)13782917465498480784ULL ==
|
||
fasthash64(buffer.c_str() + 1, buffer.size() - 1, 0x12345678));
|
||
|
||
buffer = " der kuckuck und der Esel, die hatten einen Streit";
|
||
EXPECT_TRUE((uint64_t)13782917465498480784ULL ==
|
||
fasthash64(buffer.c_str() + 2, buffer.size() - 2, 0x12345678));
|
||
|
||
buffer = " der kuckuck und der Esel, die hatten einen Streit";
|
||
EXPECT_TRUE((uint64_t)13782917465498480784ULL ==
|
||
fasthash64(buffer.c_str() + 3, buffer.size() - 3, 0x12345678));
|
||
|
||
buffer = " der kuckuck und der Esel, die hatten einen Streit";
|
||
EXPECT_TRUE((uint64_t)13782917465498480784ULL ==
|
||
fasthash64(buffer.c_str() + 4, buffer.size() - 4, 0x12345678));
|
||
|
||
buffer = " der kuckuck und der Esel, die hatten einen Streit";
|
||
EXPECT_TRUE((uint64_t)13782917465498480784ULL ==
|
||
fasthash64(buffer.c_str() + 5, buffer.size() - 5, 0x12345678));
|
||
|
||
buffer = " der kuckuck und der Esel, die hatten einen Streit";
|
||
EXPECT_TRUE((uint64_t)13782917465498480784ULL ==
|
||
fasthash64(buffer.c_str() + 6, buffer.size() - 6, 0x12345678));
|
||
|
||
buffer = " der kuckuck und der Esel, die hatten einen Streit";
|
||
EXPECT_TRUE((uint64_t)13782917465498480784ULL ==
|
||
fasthash64(buffer.c_str() + 7, buffer.size() - 7, 0x12345678));
|
||
}
|
||
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
/// @brief test fnv64 for simple strings
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
|
||
TEST_F(CHashesTest, tst_fnv64_simple) {
|
||
std::string buffer;
|
||
|
||
buffer = "";
|
||
EXPECT_TRUE((uint64_t)14695981039346656037ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)14695981039346656037ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)14695981039346656037ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = " ";
|
||
EXPECT_TRUE((uint64_t)12638117931323064703ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)12638117931323064703ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)12638117931323064703ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = " ";
|
||
EXPECT_TRUE((uint64_t)560038479724991597ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)560038479724991597ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)560038479724991597ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = "a";
|
||
EXPECT_TRUE((uint64_t)12638187200555641996ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)12638187200555641996ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)12638187200555641996ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = "A";
|
||
EXPECT_TRUE((uint64_t)12638222384927744748ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)12638222384927744748ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)12638222384927744748ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = " a";
|
||
EXPECT_TRUE((uint64_t)559967011469157882ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)559967011469157882ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)559967011469157882ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = " a ";
|
||
EXPECT_TRUE((uint64_t)14038824050427892078ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)14038824050427892078ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)14038824050427892078ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = "a ";
|
||
EXPECT_TRUE((uint64_t)620373080799520836ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)620373080799520836ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)620373080799520836ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = "A ";
|
||
EXPECT_TRUE((uint64_t)650913115778654372ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)650913115778654372ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)650913115778654372ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = " A";
|
||
EXPECT_TRUE((uint64_t)560002195841260634ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)560002195841260634ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)560002195841260634ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = " A ";
|
||
EXPECT_TRUE((uint64_t)14069504822895436622ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)14069504822895436622ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)14069504822895436622ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = "0";
|
||
EXPECT_TRUE((uint64_t)12638135523509116079ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)12638135523509116079ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)12638135523509116079ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = "1";
|
||
EXPECT_TRUE((uint64_t)12638134423997487868ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)12638134423997487868ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)12638134423997487868ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = "11";
|
||
EXPECT_TRUE((uint64_t)574370613795883607ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)574370613795883607ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)574370613795883607ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = "111";
|
||
EXPECT_TRUE((uint64_t)5002439360283388754ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)5002439360283388754ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)5002439360283388754ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = "2";
|
||
EXPECT_TRUE((uint64_t)12638137722532372501ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)12638137722532372501ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)12638137722532372501ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = "3";
|
||
EXPECT_TRUE((uint64_t)12638136623020744290ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)12638136623020744290ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)12638136623020744290ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = "the quick brown fox jumped over the lazy dog";
|
||
EXPECT_TRUE((uint64_t)5742411339260295416ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)5742411339260295416ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)5742411339260295416ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = "The Quick Brown Fox Jumped Over The Lazy Dog";
|
||
EXPECT_TRUE((uint64_t)11643291398347681368ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)11643291398347681368ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)11643291398347681368ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
}
|
||
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
/// @brief test fnv64 for UTF-8 strings
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
|
||
TEST_F(CHashesTest, tst_fnv64_utf8) {
|
||
std::string buffer;
|
||
|
||
buffer =
|
||
"ジャパン は、イギリスのニュー・ウェーヴバンド。デヴィッド・ ... "
|
||
"を構築していった。 "
|
||
"日本では初来日でいきなり武道館での公演を行うなど、爆発的な人気を誇ったが"
|
||
"、英国ではなかなか人気が出ず、初期は典型的な「ビッグ・イン・ジャパン」状"
|
||
"態であった。日本最大級のポータルサイト。検索、オークション、ニュース、メ"
|
||
"ール、コミュニティ、ショッピング、など80以上のサービスを展開。あなたの生"
|
||
"活をより豊かにする「ライフ・エンジン」を目指していきます。デヴィッド・シ"
|
||
"ルヴィアンとその弟スティーヴ・ジャンセン、デヴィッドの親友であったミック"
|
||
"・カーンを中心に結成。ミック・カーンの兄の結婚式にバンドとして最初のお披"
|
||
"露目をした。当初はミック・カーンをリードボーカルとして練習していたが、本"
|
||
"番直前になって怖じ気づいたミックがデヴィッド・シルヴィアンに無理矢理頼み"
|
||
"込んでボーカルを代わってもらい、以降デヴィッドがリードボーカルとなった。"
|
||
"その後高校の同級であったリチャード・バルビエリを誘い、更にオーディション"
|
||
"でロブ・ディーンを迎え入れ、デビュー当初のバンドの形態となった。デビュー"
|
||
"当初はアイドルとして宣伝されたグループだったが、英国の音楽シーンではほと"
|
||
"んど人気が無かった。初期のサウンドは主に黒人音楽やグラムロックをポスト・"
|
||
"パンク的に再解釈したものであったが、作品を重ねるごとに耽美的な作風、退廃"
|
||
"的な歌詞やシンセサイザーの利用など独自のスタイルを構築していった。日本で"
|
||
"は初来日でいきなり武道館での公演を行うなど、爆発的な人気を誇ったが、英国"
|
||
"ではなかなか人気が出ず、初期は典型的な「ビッグ・イン・ジャパン」状態であ"
|
||
"った。";
|
||
EXPECT_TRUE((uint64_t)211184911024797733ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)211184911024797733ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)211184911024797733ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer =
|
||
"코리아닷컴 메일알리미 서비스 중단안내 [안내] 개인정보취급방침 변경 안내 "
|
||
"회사소개 | 광고안내 | 제휴안내 | 개인정보취급방침 | 청소년보호정책 | "
|
||
"스팸방지정책 | 사이버고객센터 | 약관안내 | 이메일 무단수집거부 | 서비스 "
|
||
"전체보기";
|
||
EXPECT_TRUE((uint64_t)270676307504294177ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)270676307504294177ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)270676307504294177ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer =
|
||
"中华网以中国的市场为核心,致力为当地用户提供流动增值服务、网上娱乐及互联"
|
||
"网服务。本公司亦推出网上游戏,及透过其门户网站提供包罗万有的网上产品及服"
|
||
"务。";
|
||
EXPECT_TRUE((uint64_t)14670566365397374664ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)14670566365397374664ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)14670566365397374664ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer =
|
||
"כפי שסופיה קופולה היטיבה לבטא בסרטה אבודים בטוקיו, בתי מלון יוקרתיים "
|
||
"בערים גדולות אמנם מציעים אינספור פינוקים, אבל הם גם עלולים לגרום לנו "
|
||
"להרגיש בודדים ואומללים מאי פעם. לעומת זאת, B&B, בתים פרטיים שבהם אפשר "
|
||
"לישון ולאכול ארוחת בוקר, הם דרך נהדרת להכיר עיר אירופאית כמו מקומיים "
|
||
"ולפגוש אנשים מרתקים מרחבי העולם. לטובת מי שנוסע לממלכה בחודשים הקרובים, "
|
||
"הגרדיאן הבריטי קיבץ את עשרת ה-B&B המומלצים ביותר בלונדון. כל שנותר הוא "
|
||
"לבחור, ולהזמין מראש";
|
||
EXPECT_TRUE((uint64_t)16145169633099782595ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)16145169633099782595ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)16145169633099782595ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer =
|
||
"بان يأسف لمقتل لاجئين سوريين بتركيا المرزوقي يندد بعنف الأمن التونسي "
|
||
"تنديد بقتل الجيش السوري مصورا تلفزيونيا 14 قتيلا وعشرات الجرحى بانفجار "
|
||
"بالصومال";
|
||
EXPECT_TRUE((uint64_t)7398242043026945788ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)7398242043026945788ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)7398242043026945788ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer =
|
||
"Голкипер мадридского «Реала» Икер Касильяс призвал своих партнеров "
|
||
"сосредоточить все мысли на предстоящем дерби с «Атлетико»";
|
||
EXPECT_TRUE((uint64_t)10412552537249637418ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)10412552537249637418ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)10412552537249637418ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = " ";
|
||
EXPECT_TRUE((uint64_t)4095843978425089933ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)4095843978425089933ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)4095843978425089933ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer =
|
||
"अ आ इ ई उ ऊ ऋ ॠ ऌ ॡ ए ऐ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ "
|
||
"ब भ म य र ल व श ष स ह";
|
||
EXPECT_TRUE((uint64_t)2927729442665428350ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)2927729442665428350ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)2927729442665428350ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer =
|
||
"tɜt kɐː mɔj ŋɨɜj siŋ za ɗew ɗɨɜk tɨɰ zɔ vɐː ɓiŋ ɗɐŋ vej ɲɜn fɜm vɐː "
|
||
"kɨɜn. mɔj kɔn ŋɨɜj ɗeu ɗɨɜk tɐːw huɜ ɓɐːn cɔ li ci vɐː lɨɜŋ tɜm vɐː kɜn "
|
||
"fɐːj ɗoj sɨ vɜj ɲɐw cɔŋ tiŋ ɓɐŋ hɨw.";
|
||
EXPECT_TRUE((uint64_t)15359789603011345030ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)15359789603011345030ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)15359789603011345030ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
|
||
buffer = "äöüßÄÖÜ€µ";
|
||
EXPECT_TRUE((uint64_t)2954195900047086928ULL == TRI_FnvHashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)2954195900047086928ULL ==
|
||
TRI_FnvHashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)2954195900047086928ULL ==
|
||
TRI_FnvHashBlock(TRI_FnvHashBlockInitial(), buffer.c_str(),
|
||
strlen(buffer.c_str())));
|
||
}
|
||
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
/// @brief test crc32 for simple strings
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
|
||
TEST_F(CHashesTest, tst_crc32_simple) {
|
||
std::string buffer;
|
||
|
||
buffer = "";
|
||
EXPECT_TRUE((uint64_t)0ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)0ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)0ULL ==
|
||
TRI_FinalCrc32(TRI_BlockCrc32(TRI_InitialCrc32(), buffer.c_str(),
|
||
strlen(buffer.c_str()))));
|
||
|
||
buffer = " ";
|
||
EXPECT_TRUE((uint64_t)1925242255ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)1925242255ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)1925242255ULL ==
|
||
TRI_FinalCrc32(TRI_BlockCrc32(TRI_InitialCrc32(), buffer.c_str(),
|
||
strlen(buffer.c_str()))));
|
||
|
||
buffer = " ";
|
||
EXPECT_TRUE((uint64_t)2924943886ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)2924943886ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)2924943886ULL ==
|
||
TRI_FinalCrc32(TRI_BlockCrc32(TRI_InitialCrc32(), buffer.c_str(),
|
||
strlen(buffer.c_str()))));
|
||
|
||
buffer = "a";
|
||
EXPECT_TRUE((uint64_t)3251651376ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)3251651376ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)3251651376ULL ==
|
||
TRI_FinalCrc32(TRI_BlockCrc32(TRI_InitialCrc32(), buffer.c_str(),
|
||
strlen(buffer.c_str()))));
|
||
|
||
buffer = "A";
|
||
EXPECT_TRUE((uint64_t)3782069742ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)3782069742ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
|
||
buffer = " a";
|
||
EXPECT_TRUE((uint64_t)491226289ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)491226289ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
|
||
buffer = " a ";
|
||
EXPECT_TRUE((uint64_t)849570753ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)849570753ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
|
||
buffer = "a ";
|
||
EXPECT_TRUE((uint64_t)1122124925ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)1122124925ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
|
||
buffer = "A ";
|
||
EXPECT_TRUE((uint64_t)1030334335ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)1030334335ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
|
||
buffer = " A";
|
||
EXPECT_TRUE((uint64_t)1039796847ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)1039796847ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
|
||
buffer = " A ";
|
||
EXPECT_TRUE((uint64_t)1294502083ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)1294502083ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
|
||
buffer = "0";
|
||
EXPECT_TRUE((uint64_t)1654528736ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)1654528736ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
|
||
buffer = "1";
|
||
EXPECT_TRUE((uint64_t)2432014819ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)2432014819ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
|
||
buffer = "11";
|
||
EXPECT_TRUE((uint64_t)1610954644ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)1610954644ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
|
||
buffer = "111";
|
||
EXPECT_TRUE((uint64_t)3316119516ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)3316119516ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
|
||
buffer = "2";
|
||
EXPECT_TRUE((uint64_t)2208655895ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)2208655895ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
|
||
buffer = "3";
|
||
EXPECT_TRUE((uint64_t)1909385492ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)1909385492ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
|
||
buffer = "the quick brown fox jumped over the lazy dog";
|
||
EXPECT_TRUE((uint64_t)3928504206ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)3928504206ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)3928504206ULL ==
|
||
TRI_FinalCrc32(TRI_BlockCrc32(TRI_InitialCrc32(), buffer.c_str(),
|
||
strlen(buffer.c_str()))));
|
||
|
||
buffer = "The Quick Brown Fox Jumped Over The Lazy Dog";
|
||
EXPECT_TRUE((uint64_t)4053635637ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)4053635637ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)4053635637ULL ==
|
||
TRI_FinalCrc32(TRI_BlockCrc32(TRI_InitialCrc32(), buffer.c_str(),
|
||
strlen(buffer.c_str()))));
|
||
}
|
||
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
/// @brief test crc32 for UTF-8 strings
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
|
||
TEST_F(CHashesTest, tst_crc32_utf8) {
|
||
std::string buffer;
|
||
|
||
buffer =
|
||
"ジャパン は、イギリスのニュー・ウェーヴバンド。デヴィッド・ ... "
|
||
"を構築していった。 "
|
||
"日本では初来日でいきなり武道館での公演を行うなど、爆発的な人気を誇ったが"
|
||
"、英国ではなかなか人気が出ず、初期は典型的な「ビッグ・イン・ジャパン」状"
|
||
"態であった。日本最大級のポータルサイト。検索、オークション、ニュース、メ"
|
||
"ール、コミュニティ、ショッピング、など80以上のサービスを展開。あなたの生"
|
||
"活をより豊かにする「ライフ・エンジン」を目指していきます。デヴィッド・シ"
|
||
"ルヴィアンとその弟スティーヴ・ジャンセン、デヴィッドの親友であったミック"
|
||
"・カーンを中心に結成。ミック・カーンの兄の結婚式にバンドとして最初のお披"
|
||
"露目をした。当初はミック・カーンをリードボーカルとして練習していたが、本"
|
||
"番直前になって怖じ気づいたミックがデヴィッド・シルヴィアンに無理矢理頼み"
|
||
"込んでボーカルを代わってもらい、以降デヴィッドがリードボーカルとなった。"
|
||
"その後高校の同級であったリチャード・バルビエリを誘い、更にオーディション"
|
||
"でロブ・ディーンを迎え入れ、デビュー当初のバンドの形態となった。デビュー"
|
||
"当初はアイドルとして宣伝されたグループだったが、英国の音楽シーンではほと"
|
||
"んど人気が無かった。初期のサウンドは主に黒人音楽やグラムロックをポスト・"
|
||
"パンク的に再解釈したものであったが、作品を重ねるごとに耽美的な作風、退廃"
|
||
"的な歌詞やシンセサイザーの利用など独自のスタイルを構築していった。日本で"
|
||
"は初来日でいきなり武道館での公演を行うなど、爆発的な人気を誇ったが、英国"
|
||
"ではなかなか人気が出ず、初期は典型的な「ビッグ・イン・ジャパン」状態であ"
|
||
"った。";
|
||
EXPECT_TRUE((uint64_t)4191893375ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)4191893375ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)4191893375ULL ==
|
||
TRI_FinalCrc32(TRI_BlockCrc32(TRI_InitialCrc32(), buffer.c_str(),
|
||
strlen(buffer.c_str()))));
|
||
|
||
buffer =
|
||
"코리아닷컴 메일알리미 서비스 중단안내 [안내] 개인정보취급방침 변경 안내 "
|
||
"회사소개 | 광고안내 | 제휴안내 | 개인정보취급방침 | 청소년보호정책 | "
|
||
"스팸방지정책 | 사이버고객센터 | 약관안내 | 이메일 무단수집거부 | 서비스 "
|
||
"전체보기";
|
||
EXPECT_TRUE((uint64_t)4065546148ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)4065546148ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)4065546148ULL ==
|
||
TRI_FinalCrc32(TRI_BlockCrc32(TRI_InitialCrc32(), buffer.c_str(),
|
||
strlen(buffer.c_str()))));
|
||
|
||
buffer =
|
||
"中华网以中国的市场为核心,致力为当地用户提供流动增值服务、网上娱乐及互联"
|
||
"网服务。本公司亦推出网上游戏,及透过其门户网站提供包罗万有的网上产品及服"
|
||
"务。";
|
||
EXPECT_TRUE((uint64_t)1577296531ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)1577296531ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)1577296531ULL ==
|
||
TRI_FinalCrc32(TRI_BlockCrc32(TRI_InitialCrc32(), buffer.c_str(),
|
||
strlen(buffer.c_str()))));
|
||
|
||
buffer =
|
||
"כפי שסופיה קופולה היטיבה לבטא בסרטה אבודים בטוקיו, בתי מלון יוקרתיים "
|
||
"בערים גדולות אמנם מציעים אינספור פינוקים, אבל הם גם עלולים לגרום לנו "
|
||
"להרגיש בודדים ואומללים מאי פעם. לעומת זאת, B&B, בתים פרטיים שבהם אפשר "
|
||
"לישון ולאכול ארוחת בוקר, הם דרך נהדרת להכיר עיר אירופאית כמו מקומיים "
|
||
"ולפגוש אנשים מרתקים מרחבי העולם. לטובת מי שנוסע לממלכה בחודשים הקרובים, "
|
||
"הגרדיאן הבריטי קיבץ את עשרת ה-B&B המומלצים ביותר בלונדון. כל שנותר הוא "
|
||
"לבחור, ולהזמין מראש";
|
||
EXPECT_TRUE((uint64_t)3810256208ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)3810256208ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)3810256208ULL ==
|
||
TRI_FinalCrc32(TRI_BlockCrc32(TRI_InitialCrc32(), buffer.c_str(),
|
||
strlen(buffer.c_str()))));
|
||
|
||
buffer =
|
||
"بان يأسف لمقتل لاجئين سوريين بتركيا المرزوقي يندد بعنف الأمن التونسي "
|
||
"تنديد بقتل الجيش السوري مصورا تلفزيونيا 14 قتيلا وعشرات الجرحى بانفجار "
|
||
"بالصومال";
|
||
EXPECT_TRUE((uint64_t)2844487215ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)2844487215ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)2844487215ULL ==
|
||
TRI_FinalCrc32(TRI_BlockCrc32(TRI_InitialCrc32(), buffer.c_str(),
|
||
strlen(buffer.c_str()))));
|
||
|
||
buffer =
|
||
"Голкипер мадридского «Реала» Икер Касильяс призвал своих партнеров "
|
||
"сосредоточить все мысли на предстоящем дерби с «Атлетико»";
|
||
EXPECT_TRUE((uint64_t)1905918845ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)1905918845ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)1905918845ULL ==
|
||
TRI_FinalCrc32(TRI_BlockCrc32(TRI_InitialCrc32(), buffer.c_str(),
|
||
strlen(buffer.c_str()))));
|
||
|
||
buffer = " ";
|
||
EXPECT_TRUE((uint64_t)1824561399ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)1824561399ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)1824561399ULL ==
|
||
TRI_FinalCrc32(TRI_BlockCrc32(TRI_InitialCrc32(), buffer.c_str(),
|
||
strlen(buffer.c_str()))));
|
||
|
||
buffer =
|
||
"अ आ इ ई उ ऊ ऋ ॠ ऌ ॡ ए ऐ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ "
|
||
"ब भ म य र ल व श ष स ह";
|
||
EXPECT_TRUE((uint64_t)3232493769ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)3232493769ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)3232493769ULL ==
|
||
TRI_FinalCrc32(TRI_BlockCrc32(TRI_InitialCrc32(), buffer.c_str(),
|
||
strlen(buffer.c_str()))));
|
||
|
||
buffer =
|
||
"tɜt kɐː mɔj ŋɨɜj siŋ za ɗew ɗɨɜk tɨɰ zɔ vɐː ɓiŋ ɗɐŋ vej ɲɜn fɜm vɐː "
|
||
"kɨɜn. mɔj kɔn ŋɨɜj ɗeu ɗɨɜk tɐːw huɜ ɓɐːn cɔ li ci vɐː lɨɜŋ tɜm vɐː kɜn "
|
||
"fɐːj ɗoj sɨ vɜj ɲɐw cɔŋ tiŋ ɓɐŋ hɨw.";
|
||
EXPECT_TRUE((uint64_t)193365419ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)193365419ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)193365419ULL ==
|
||
TRI_FinalCrc32(TRI_BlockCrc32(TRI_InitialCrc32(), buffer.c_str(),
|
||
strlen(buffer.c_str()))));
|
||
|
||
buffer = "äöüßÄÖÜ€µ";
|
||
EXPECT_TRUE((uint64_t)1426740181ULL == TRI_Crc32HashString(buffer.c_str()));
|
||
EXPECT_TRUE((uint64_t)1426740181ULL ==
|
||
TRI_Crc32HashPointer(buffer.c_str(), strlen(buffer.c_str())));
|
||
EXPECT_TRUE((uint64_t)1426740181ULL ==
|
||
TRI_FinalCrc32(TRI_BlockCrc32(TRI_InitialCrc32(), buffer.c_str(),
|
||
strlen(buffer.c_str()))));
|
||
}
|