summaryrefslogtreecommitdiffhomepage
path: root/test/test_02_linker/linker.test.cc
blob: b105797476ac6c487bb2e0258376dd737ca48cd3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (See accompanying
// file LICENSE or copy at http://www.apache.org/licenses/LICENSE-2.0)
// Official repository: https://github.com/nekernel-org/nectar

/// @brief Linker Unit test, from the C++ unit to the final executable.
/// @author Amlal El Mahrouss

#include <gtest/gtest.h>

/// compile
TEST(LinkerTest, BasicLinkTestCompile) {
  auto expr = std::system("pef-amd64-cxxdrv test_samples/sample.cc");
  EXPECT_TRUE(expr == 0) << "C++ Driver did not compile the easy C++ unit.";
}

/// assemble
TEST(LinkerTest, BasicLinkTestAssemble) {
  auto expr = std::system("asm -asm:x64 test_samples/sample.cc.pp.masm");
  EXPECT_TRUE(expr == 0) << "Assembler did not assemble the easy asm unit.";
}

/// link
TEST(LinkerTest, BasicLinkTestLink) {
  auto expr = std::system(
      "ld64 -amd64 test_samples/sample.cc.pp.obj -start __NECTAR_main -output main.exec");
  EXPECT_TRUE(expr == 0) << "Linker did not link the easy object.";
}