Example #1
0
TEST(StringHasherTest, StringHasher_addCharacter)
{
    StringHasher hasher;

    // Hashing a single character.
    hasher = StringHasher();
    hasher.addCharacter(0);
    EXPECT_EQ(singleNullCharacterHash, hasher.hash());
    EXPECT_EQ(singleNullCharacterHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());

    // Hashing five characters, checking the intermediate state after each is added.
    hasher = StringHasher();
    hasher.addCharacter(testAUChars[0]);
    EXPECT_EQ(testAHash1, hasher.hash());
    EXPECT_EQ(testAHash1 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacter(testAUChars[1]);
    EXPECT_EQ(testAHash2, hasher.hash());
    EXPECT_EQ(testAHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacter(testAUChars[2]);
    EXPECT_EQ(testAHash3, hasher.hash());
    EXPECT_EQ(testAHash3 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacter(testAUChars[3]);
    EXPECT_EQ(testAHash4, hasher.hash());
    EXPECT_EQ(testAHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacter(testAUChars[4]);
    EXPECT_EQ(testAHash5, hasher.hash());
    EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());

    // Hashing a second set of five characters, including non-Latin-1 characters.
    hasher = StringHasher();
    hasher.addCharacter(testBUChars[0]);
    EXPECT_EQ(testBHash1, hasher.hash());
    EXPECT_EQ(testBHash1 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacter(testBUChars[1]);
    EXPECT_EQ(testBHash2, hasher.hash());
    EXPECT_EQ(testBHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacter(testBUChars[2]);
    EXPECT_EQ(testBHash3, hasher.hash());
    EXPECT_EQ(testBHash3 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacter(testBUChars[3]);
    EXPECT_EQ(testBHash4, hasher.hash());
    EXPECT_EQ(testBHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacter(testBUChars[4]);
    EXPECT_EQ(testBHash5, hasher.hash());
    EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
}
Example #2
0
		Components::Component* BaseCharacter::GetComponent(const std::string& index)// const
		{
			const static int EleHash = StringHasher("ElementEffectivenessComponent");
			const static int StatusHash = StringHasher("StatusEffectivenessComponent");
			auto indexHash = StringHasher(index);
			if (EleHash == indexHash)
			{
				return const_cast<Components::ElementEffectivenessComponent*>(&ElementEffectsComponent);
			}
			else if (StatusHash == indexHash)
			{
				return const_cast<Components::StatusEffectivenessComponent*>(&StatusEffectsComponent);
			}
			else
			{
				return Entity::GetComponent(index);
			}
			return nullptr;
		}
Example #3
0
void triebWerk::CPostEffectDrawable::RemoveMaterial(const char * a_pNameOfMaterial)
{
	for (size_t i = 0; i < m_Materials.size(); i++)
	{
		if (m_Materials[i]->m_ID.GetHash() == StringHasher(a_pNameOfMaterial))
		{
			delete m_Materials[i];
			m_Materials.erase(m_Materials.begin() + i);
		}
	}
}
Example #4
0
triebWerk::CMaterial * triebWerk::CPostEffectDrawable::GetMaterial(const char * a_pNameOfMaterial) const
{
	for (size_t i = 0; i < m_Materials.size(); i++)
	{
		if (m_Materials[i]->m_ID.GetHash() == StringHasher(a_pNameOfMaterial))
		{
			return m_Materials[i];
		}
	}

	DebugLogfile.LogfText(CDebugLogfile::ELogType::Warning, false, "Warning: There is no Material in the posteffect with the name: %s", a_pNameOfMaterial);
	return nullptr;

}
size_t RpcProtocolInfo::hash_value() const {
    size_t values[] = { Int32Hasher(version), StringHasher(protocol), StringHasher(tokenKind) };
    return CombineHasher(values, sizeof(values) / sizeof(values[0]));
}
Example #6
0
size_t Token::hash_value() const {
    size_t values[] = { StringHasher(identifier), StringHasher(password),
                        StringHasher(kind), StringHasher(service)
                      };
    return CombineHasher(values, sizeof(values) / sizeof(values[0]));
}
Example #7
0
TEST(StringHasherTest, StringHasher_addCharactersAssumingAligned)
{
    StringHasher hasher;

    // Hashing zero characters.
    hasher = StringHasher();
    hasher.addCharactersAssumingAligned(static_cast<LChar*>(0), 0);
    EXPECT_EQ(emptyStringHash, hasher.hash());
    EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharactersAssumingAligned(nullLChars, 0);
    EXPECT_EQ(emptyStringHash, hasher.hash());
    EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharactersAssumingAligned(static_cast<UChar*>(0), 0);
    EXPECT_EQ(emptyStringHash, hasher.hash());
    EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharactersAssumingAligned(nullUChars, 0);
    EXPECT_EQ(emptyStringHash, hasher.hash());
    EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());

    // Hashing one character.
    hasher = StringHasher();
    hasher.addCharactersAssumingAligned(nullLChars, 1);
    EXPECT_EQ(singleNullCharacterHash, hasher.hash());
    EXPECT_EQ(singleNullCharacterHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharactersAssumingAligned(nullUChars, 1);
    EXPECT_EQ(singleNullCharacterHash, hasher.hash());
    EXPECT_EQ(singleNullCharacterHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());

    // Hashing five characters, all at once.
    hasher = StringHasher();
    hasher.addCharactersAssumingAligned(testALChars, 5);
    EXPECT_EQ(testAHash5, hasher.hash());
    EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharactersAssumingAligned(testAUChars, 5);
    EXPECT_EQ(testAHash5, hasher.hash());
    EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharactersAssumingAligned(testBUChars, 5);
    EXPECT_EQ(testBHash5, hasher.hash());
    EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());

    // Hashing five characters, in groups of two, then the last one.
    hasher = StringHasher();
    hasher.addCharactersAssumingAligned(testALChars, 2);
    EXPECT_EQ(testAHash2, hasher.hash());
    EXPECT_EQ(testAHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharactersAssumingAligned(testALChars + 2, 2);
    EXPECT_EQ(testAHash4, hasher.hash());
    EXPECT_EQ(testAHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharactersAssumingAligned(testALChars + 4, 1);
    EXPECT_EQ(testAHash5, hasher.hash());
    EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharactersAssumingAligned(testALChars, 2);
    hasher.addCharactersAssumingAligned(testALChars + 2, 2);
    hasher.addCharactersAssumingAligned(testALChars + 4, 1);
    EXPECT_EQ(testAHash5, hasher.hash());
    EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharactersAssumingAligned(testAUChars, 2);
    EXPECT_EQ(testAHash2, hasher.hash());
    EXPECT_EQ(testAHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharactersAssumingAligned(testAUChars + 2, 2);
    EXPECT_EQ(testAHash4, hasher.hash());
    EXPECT_EQ(testAHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharactersAssumingAligned(testAUChars + 4, 1);
    EXPECT_EQ(testAHash5, hasher.hash());
    EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharactersAssumingAligned(testAUChars, 2);
    hasher.addCharactersAssumingAligned(testAUChars + 2, 2);
    hasher.addCharactersAssumingAligned(testAUChars + 4, 1);
    EXPECT_EQ(testAHash5, hasher.hash());
    EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharactersAssumingAligned(testBUChars, 2);
    EXPECT_EQ(testBHash2, hasher.hash());
    EXPECT_EQ(testBHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharactersAssumingAligned(testBUChars + 2, 2);
    EXPECT_EQ(testBHash4, hasher.hash());
    EXPECT_EQ(testBHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharactersAssumingAligned(testBUChars + 4, 1);
    EXPECT_EQ(testBHash5, hasher.hash());
    EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharactersAssumingAligned(testBUChars, 2);
    hasher.addCharactersAssumingAligned(testBUChars + 2, 2);
    hasher.addCharactersAssumingAligned(testBUChars + 4, 1);
    EXPECT_EQ(testBHash5, hasher.hash());
    EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());

    // Hashing five characters, first two characters one at a time,
    // then two more, then the last one.
    hasher = StringHasher();
    hasher.addCharacter(testBUChars[0]);
    EXPECT_EQ(testBHash1, hasher.hash());
    EXPECT_EQ(testBHash1 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacter(testBUChars[1]);
    EXPECT_EQ(testBHash2, hasher.hash());
    EXPECT_EQ(testBHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharactersAssumingAligned(testBUChars[2], testBUChars[3]);
    EXPECT_EQ(testBHash4, hasher.hash());
    EXPECT_EQ(testBHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharactersAssumingAligned(testBUChars + 4, 1);
    EXPECT_EQ(testBHash5, hasher.hash());
    EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
}
Example #8
0
TEST(StringHasherTest, StringHasher_addCharacters)
{
    StringHasher hasher;

    // Hashing zero characters.
    hasher = StringHasher();
    hasher.addCharacters(static_cast<LChar*>(0), 0);
    EXPECT_EQ(emptyStringHash, hasher.hash());
    EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharacters(nullLChars, 0);
    EXPECT_EQ(emptyStringHash, hasher.hash());
    EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharacters(static_cast<UChar*>(0), 0);
    EXPECT_EQ(emptyStringHash, hasher.hash());
    EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharacters(nullUChars, 0);
    EXPECT_EQ(emptyStringHash, hasher.hash());
    EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());

    // Hashing one character.
    hasher = StringHasher();
    hasher.addCharacters(nullLChars, 1);
    EXPECT_EQ(singleNullCharacterHash, hasher.hash());
    EXPECT_EQ(singleNullCharacterHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharacters(nullUChars, 1);
    EXPECT_EQ(singleNullCharacterHash, hasher.hash());
    EXPECT_EQ(singleNullCharacterHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());

    // Hashing five characters, all at once.
    hasher = StringHasher();
    hasher.addCharacters(testALChars, 5);
    EXPECT_EQ(testAHash5, hasher.hash());
    EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharacters(testAUChars, 5);
    EXPECT_EQ(testAHash5, hasher.hash());
    EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharacters(testBUChars, 5);
    EXPECT_EQ(testBHash5, hasher.hash());
    EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());

    // Hashing five characters, in groups of two, then the last one.
    hasher = StringHasher();
    hasher.addCharacters(testALChars, 2);
    EXPECT_EQ(testAHash2, hasher.hash());
    EXPECT_EQ(testAHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacters(testALChars + 2, 2);
    EXPECT_EQ(testAHash4, hasher.hash());
    EXPECT_EQ(testAHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacters(testALChars + 4, 1);
    EXPECT_EQ(testAHash5, hasher.hash());
    EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharacters(testALChars, 2);
    hasher.addCharacters(testALChars + 2, 2);
    hasher.addCharacters(testALChars + 4, 1);
    EXPECT_EQ(testAHash5, hasher.hash());
    EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharacters(testAUChars, 2);
    EXPECT_EQ(testAHash2, hasher.hash());
    EXPECT_EQ(testAHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacters(testAUChars + 2, 2);
    EXPECT_EQ(testAHash4, hasher.hash());
    EXPECT_EQ(testAHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacters(testAUChars + 4, 1);
    EXPECT_EQ(testAHash5, hasher.hash());
    EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharacters(testAUChars, 2);
    hasher.addCharacters(testAUChars + 2, 2);
    hasher.addCharacters(testAUChars + 4, 1);
    EXPECT_EQ(testAHash5, hasher.hash());
    EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharacters(testBUChars, 2);
    EXPECT_EQ(testBHash2, hasher.hash());
    EXPECT_EQ(testBHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacters(testBUChars + 2, 2);
    EXPECT_EQ(testBHash4, hasher.hash());
    EXPECT_EQ(testBHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacters(testBUChars + 4, 1);
    EXPECT_EQ(testBHash5, hasher.hash());
    EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharacters(testBUChars, 2);
    hasher.addCharacters(testBUChars + 2, 2);
    hasher.addCharacters(testBUChars + 4, 1);
    EXPECT_EQ(testBHash5, hasher.hash());
    EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());

    // Hashing five characters, the first three, then the last two.
    hasher = StringHasher();
    hasher.addCharacters(testALChars, 3);
    EXPECT_EQ(testAHash3, hasher.hash());
    EXPECT_EQ(testAHash3 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacters(testALChars + 3, 2);
    EXPECT_EQ(testAHash5, hasher.hash());
    EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharacters(testALChars, 3);
    EXPECT_EQ(testAHash3, hasher.hash());
    EXPECT_EQ(testAHash3 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacters(testALChars + 3, 2);
    EXPECT_EQ(testAHash5, hasher.hash());
    EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharacters(testAUChars, 3);
    EXPECT_EQ(testAHash3, hasher.hash());
    EXPECT_EQ(testAHash3 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacters(testAUChars + 3, 2);
    EXPECT_EQ(testAHash5, hasher.hash());
    EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharacters(testAUChars, 3);
    EXPECT_EQ(testAHash3, hasher.hash());
    EXPECT_EQ(testAHash3 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacters(testAUChars + 3, 2);
    EXPECT_EQ(testAHash5, hasher.hash());
    EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharacters(testBUChars, 3);
    EXPECT_EQ(testBHash3, hasher.hash());
    EXPECT_EQ(testBHash3 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher.addCharacters(testBUChars + 3, 2);
    EXPECT_EQ(testBHash5, hasher.hash());
    EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
    hasher = StringHasher();
    hasher.addCharacters(testBUChars, 3);
    hasher.addCharacters(testBUChars + 3, 2);
    EXPECT_EQ(testBHash5, hasher.hash());
    EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
}