1f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===- ELFBinaryReaderTest.cpp --------------------------------------------===//
2f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//
3f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//                     The MCLinker Project
4f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//
5f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// This file is distributed under the University of Illinois Open Source
6f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// License. See LICENSE.TXT for details.
7f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//
8f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===//
937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/LD/ELFBinaryReader.h"
1037b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Module.h"
1137b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/LinkerScript.h"
1237b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/LinkerConfig.h"
1337b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/IRBuilder.h"
1437b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/GeneralOptions.h"
1537b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/MC/Input.h"
16f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
17f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#include "ELFBinaryReaderTest.h"
18f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
19f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesusing namespace mcld;
20f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesusing namespace mcld::test;
21f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
22f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// Constructor can do set-up work for all test here.
2337b74a387bb3993387029859c2d9d051c41c724eStephen HinesELFBinaryReaderTest::ELFBinaryReaderTest() {
24f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}
25f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
26f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// Destructor can do clean-up work that doesn't throw exceptions here.
2737b74a387bb3993387029859c2d9d051c41c724eStephen HinesELFBinaryReaderTest::~ELFBinaryReaderTest() {
28f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}
29f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
30f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// SetUp() will be called immediately before each test.
3137b74a387bb3993387029859c2d9d051c41c724eStephen Hinesvoid ELFBinaryReaderTest::SetUp() {
32f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}
33f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
34f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// TearDown() will be called immediately after each test.
3537b74a387bb3993387029859c2d9d051c41c724eStephen Hinesvoid ELFBinaryReaderTest::TearDown() {
36f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}
37f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
38f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===//
39f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// Testcases
40f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===//
4137b74a387bb3993387029859c2d9d051c41c724eStephen HinesTEST_F(ELFBinaryReaderTest, is_myformat) {
42f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  LinkerScript script;
43f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  Module module("test", script);
44f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  LinkerConfig config;
45f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  IRBuilder builder(module, config);
4637b74a387bb3993387029859c2d9d051c41c724eStephen Hines  ELFBinaryReader* reader = new ELFBinaryReader(builder, config);
47f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
48f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  Input input("test.bin");
49f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
50f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  bool doContinue = false;
51f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  config.options().setBinaryInput();
52f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  ASSERT_TRUE(reader->isMyFormat(input, doContinue));
53f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
54f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  config.options().setBinaryInput(false);
55f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  ASSERT_FALSE(reader->isMyFormat(input, doContinue));
56f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
57f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  delete reader;
58f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}
59