mirror of
https://github.com/avast/retdec.git
synced 2024-12-02 17:57:18 +00:00
128 lines
3.2 KiB
C++
128 lines
3.2 KiB
C++
/**
|
|
* @file tests/fileformat/format_factory_tests.cpp
|
|
* @brief Tests for the @c fileformat factory module.
|
|
* @copyright (c) 2019 Avast Software, licensed under the MIT license
|
|
*/
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
#include "retdec/fileformat/fileformat.h"
|
|
#include "retdec/fileformat/format_factory.h"
|
|
#include "fileformat/fileformat_tests.h"
|
|
|
|
using namespace ::testing;
|
|
using namespace retdec::utils;
|
|
|
|
namespace retdec {
|
|
namespace fileformat {
|
|
namespace tests {
|
|
|
|
extern const std::vector<uint8_t> coffBytes;
|
|
extern const std::vector<uint8_t> elfBytes;
|
|
extern const std::vector<uint8_t> machoBytes;
|
|
extern const std::vector<uint8_t> peBytes;
|
|
extern const std::string ihexBytes;
|
|
extern const std::string rawBytes;
|
|
|
|
/**
|
|
* Tests for the @c coff_format module - using istream constructor.
|
|
*/
|
|
class FileFormatFactoryTests : public Test
|
|
{
|
|
|
|
};
|
|
|
|
TEST_F(FileFormatFactoryTests, CreateCoff_istream)
|
|
{
|
|
std::stringstream stream;
|
|
stream << std::string(coffBytes.begin(), coffBytes.end());
|
|
EXPECT_TRUE(dynamic_cast<CoffFormat*>(createFileFormat(stream).get()));
|
|
|
|
}
|
|
|
|
TEST_F(FileFormatFactoryTests, CreateCoff_data)
|
|
{
|
|
EXPECT_TRUE(dynamic_cast<CoffFormat*>(
|
|
createFileFormat(coffBytes.data(), coffBytes.size()).get()));
|
|
}
|
|
|
|
TEST_F(FileFormatFactoryTests, CreateElf_istream)
|
|
{
|
|
std::stringstream stream;
|
|
stream << std::string(elfBytes.begin(), elfBytes.end());
|
|
EXPECT_TRUE(dynamic_cast<ElfFormat*>(createFileFormat(stream).get()));
|
|
|
|
}
|
|
|
|
TEST_F(FileFormatFactoryTests, CreateElf_data)
|
|
{
|
|
EXPECT_TRUE(dynamic_cast<ElfFormat*>(
|
|
createFileFormat(elfBytes.data(), elfBytes.size()).get()));
|
|
}
|
|
|
|
TEST_F(FileFormatFactoryTests, CreateMacho_istream)
|
|
{
|
|
std::stringstream stream;
|
|
stream << std::string(machoBytes.begin(), machoBytes.end());
|
|
EXPECT_TRUE(dynamic_cast<MachOFormat*>(createFileFormat(stream).get()));
|
|
|
|
}
|
|
|
|
TEST_F(FileFormatFactoryTests, CreateMacho_data)
|
|
{
|
|
EXPECT_TRUE(dynamic_cast<MachOFormat*>(
|
|
createFileFormat(machoBytes.data(), machoBytes.size()).get()));
|
|
}
|
|
|
|
TEST_F(FileFormatFactoryTests, CreatePe_istream)
|
|
{
|
|
std::stringstream stream;
|
|
stream << std::string(peBytes.begin(), peBytes.end());
|
|
EXPECT_TRUE(dynamic_cast<PeFormat*>(createFileFormat(stream).get()));
|
|
|
|
}
|
|
|
|
TEST_F(FileFormatFactoryTests, CreatePe_data)
|
|
{
|
|
EXPECT_TRUE(dynamic_cast<PeFormat*>(
|
|
createFileFormat(peBytes.data(), peBytes.size()).get()));
|
|
}
|
|
|
|
TEST_F(FileFormatFactoryTests, CreateIhex_istream)
|
|
{
|
|
std::stringstream stream;
|
|
stream << std::string(ihexBytes.begin(), ihexBytes.end());
|
|
EXPECT_TRUE(dynamic_cast<IntelHexFormat*>(createFileFormat(stream).get()));
|
|
|
|
}
|
|
|
|
TEST_F(FileFormatFactoryTests, CreateIhex_data)
|
|
{
|
|
EXPECT_TRUE(dynamic_cast<IntelHexFormat*>(
|
|
createFileFormat(
|
|
reinterpret_cast<const uint8_t*>(ihexBytes.data()),
|
|
ihexBytes.size()).get()));
|
|
}
|
|
|
|
TEST_F(FileFormatFactoryTests, CreateRaw_istream)
|
|
{
|
|
std::stringstream stream;
|
|
stream << std::string(rawBytes.begin(), rawBytes.end());
|
|
EXPECT_TRUE(dynamic_cast<RawDataFormat*>(
|
|
createFileFormat(stream, true).get()));
|
|
|
|
}
|
|
|
|
TEST_F(FileFormatFactoryTests, CreateRaw_data)
|
|
{
|
|
EXPECT_TRUE(dynamic_cast<RawDataFormat*>(
|
|
createFileFormat(
|
|
reinterpret_cast<const uint8_t*>(rawBytes.data()),
|
|
rawBytes.size(),
|
|
true).get()));
|
|
}
|
|
|
|
} // namespace tests
|
|
} // namespace fileformat
|
|
} // namespace retdec
|