bool TextureNode::sEqual(const RepoNode &other) const { if (other.getTypeAsEnum() != NodeType::TEXTURE || other.getParentIDs().size() != getParentIDs().size()) { return false; } TextureNode otherText = TextureNode(other); bool equal; if (equal = getFileExtension() == otherText.getFileExtension()) { std::vector<char> *raw, *raw2; raw = getRawData(); raw2 = otherText.getRawData(); if (equal = (raw && raw2 && (raw->size() == raw2->size())) ) { equal = !memcmp(raw->data(), raw2->data(), raw->size() * sizeof(*raw->data())); delete raw; delete raw2; } } return equal; }
TEST(RepoBSONFactoryTest, MakeTextureNodeTest) { std::string ext = "jpg"; std::string name = "textureNode." + ext; std::string data = "The value of this texture is represented by this string as all it takes is a char*"; int width = 100, height = 110; TextureNode tex = RepoBSONFactory::makeTextureNode(name, data.c_str(), data.size(), width, height); ASSERT_FALSE(tex.isEmpty()); EXPECT_EQ(name, tex.getName()); EXPECT_EQ(width, tex.getField(REPO_LABEL_WIDTH).Int()); EXPECT_EQ(height, tex.getField(REPO_LABEL_HEIGHT).Int()); EXPECT_EQ(ext, tex.getFileExtension()); std::vector<char> rawOut = tex.getRawData(); ASSERT_EQ(data.size(), rawOut.size()); EXPECT_EQ(0, memcmp(data.c_str(), rawOut.data(), data.size())); //make sure the code doesn't fail over if for some reason the name does not contain the extension TextureNode tex2 = RepoBSONFactory::makeTextureNode("noExtensionName", data.c_str(), data.size(), width, height); }