first commit

This commit is contained in:
jarjar 2025-03-03 21:03:31 +01:00
commit 9dd2b0dd46
8 changed files with 282 additions and 0 deletions

35
CMakeLists.txt Normal file
View File

@ -0,0 +1,35 @@
cmake_minimum_required(VERSION 3.7 FATAL_ERROR)
# ---------------------------------------------------------------------------
# Test Project
# ---------------------------------------------------------------------------
project(Test
LANGUAGES
CXX
C
)
# specify the C++ standard
set(CMAKE_CXX_STANDARD_REQUIRED True)
# Generates the test runner
add_executable(Test
${CMAKE_SOURCE_DIR}/src/test.cpp
${CMAKE_SOURCE_DIR}/src/features.cpp
${CMAKE_SOURCE_DIR}/src/platform_linux.c
)
target_include_directories(Test PRIVATE
${CMAKE_SOURCE_DIR}/src
${CMAKE_SOURCE_DIR}/include
)
# Generates the getplatform bin
add_executable(GetPlatform
${CMAKE_SOURCE_DIR}/src/main.c
${CMAKE_SOURCE_DIR}/src/platform_linux.c
)
target_include_directories(GetPlatform PRIVATE
${CMAKE_SOURCE_DIR}/src
${CMAKE_SOURCE_DIR}/include
)

29
Jenkinsfile vendored Normal file
View File

@ -0,0 +1,29 @@
pipeline {
agent any
stages {
stage('Config') {
steps {
dir('build') {
sh '''
cmake --version
cmake -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug ..
'''.stripIndent()
}
}
}
stage('Build') {
steps {
sh '''
cmake --build build --config Debug --target Test
'''.stripIndent()
}
}
stage('Run Test') {
steps {
sh '''
./build/Test
'''.stripIndent()
}
}
}
}

20
include/nerd/features.h Executable file
View File

@ -0,0 +1,20 @@
/*------------------------------------------------------------------------*
Project: Support Recruitment Test
Copyright (C) 2022 Nintendo, All rights reserved.
These coded instructions, statements, and computer programs contain proprietary
information of Nintendo and/or its licensed developers and are protected by
national and international copyright laws. They may not be disclosed to third
parties or copied or duplicated in any form, in whole or in part, without the
prior written consent of Nintendo.
The content herein is highly confidential and should be handled accordingly.
*------------------------------------------------------------------------*/
#ifndef NERD_FEATURE_H
#define NERD_FEATURE_H
extern "C" int nerd_add(int a, int b);
extern "C" int nerd_mul(int a, int b);
#endif // NERD_FEATURE_H

19
include/nerd/platform.h Executable file
View File

@ -0,0 +1,19 @@
/*------------------------------------------------------------------------*
Project: Support Recruitment Test
Copyright (C) 2022 Nintendo, All rights reserved.
These coded instructions, statements, and computer programs contain proprietary
information of Nintendo and/or its licensed developers and are protected by
national and international copyright laws. They may not be disclosed to third
parties or copied or duplicated in any form, in whole or in part, without the
prior written consent of Nintendo.
The content herein is highly confidential and should be handled accordingly.
*------------------------------------------------------------------------*/
#ifndef NERD_FEATURE_H
#define NERD_FEATURE_H
const char *get_platform_name();
#endif // NERD_FEATURE_H

24
src/features.cpp Executable file
View File

@ -0,0 +1,24 @@
/*------------------------------------------------------------------------*
Project: Support Recruitment Test
Copyright (C) 2022 Nintendo, All rights reserved.
These coded instructions, statements, and computer programs contain proprietary
information of Nintendo and/or its licensed developers and are protected by
national and international copyright laws. They may not be disclosed to third
parties or copied or duplicated in any form, in whole or in part, without the
prior written consent of Nintendo.
The content herein is highly confidential and should be handled accordingly.
*------------------------------------------------------------------------*/
#include "nerd/features.h"
extern "C" int nerd_add(int a, int b)
{
return a + b;
}
extern "C" int nerd_mul(int a, int b)
{
return a * b;
}

22
src/main.c Executable file
View File

@ -0,0 +1,22 @@
/*------------------------------------------------------------------------*
Project: Support Recruitment Test
Copyright (C) 2022 Nintendo, All rights reserved.
These coded instructions, statements, and computer programs contain proprietary
information of Nintendo and/or its licensed developers and are protected by
national and international copyright laws. They may not be disclosed to third
parties or copied or duplicated in any form, in whole or in part, without the
prior written consent of Nintendo.
The content herein is highly confidential and should be handled accordingly.
*------------------------------------------------------------------------*/
#include <stdio.h>
#include "nerd/platform.h"
int main(int argc, char **argv)
{
printf("Hello Support from %s\n", get_platform_name());
return 0;
}

23
src/platform_linux.c Executable file
View File

@ -0,0 +1,23 @@
/*------------------------------------------------------------------------*
Project: Support Recruitment Test
Copyright (C) 2022 Nintendo, All rights reserved.
These coded instructions, statements, and computer programs contain proprietary
information of Nintendo and/or its licensed developers and are protected by
national and international copyright laws. They may not be disclosed to third
parties or copied or duplicated in any form, in whole or in part, without the
prior written consent of Nintendo.
The content herein is highly confidential and should be handled accordingly.
*------------------------------------------------------------------------*/
#include "nerd/platform.h"
#ifndef __linux__
#error the linux platform file is compiled with an incompatible compiler
#endif
const char *get_platform_name()
{
return "Linux";
}

110
src/test.cpp Executable file
View File

@ -0,0 +1,110 @@
/*------------------------------------------------------------------------*
Project: Support Recruitment Test
Copyright (C) 2022 Nintendo, All rights reserved.
These coded instructions, statements, and computer programs contain proprietary
information of Nintendo and/or its licensed developers and are protected by
national and international copyright laws. They may not be disclosed to third
parties or copied or duplicated in any form, in whole or in part, without the
prior written consent of Nintendo.
The content herein is highly confidential and should be handled accordingly.
*------------------------------------------------------------------------*/
#include "nerd/features.h"
#include <cstddef>
#if __cplusplus != 201103L
#error The source is not compiled in c++11 mode
#endif
#include <iostream>
#define ASSERT_EQUAL(a, b) \
do \
{ \
if ((a) != (b)) \
{ \
std::cerr << "FAILURE: expected " #a "=" << (a) << " got " #b "=" << (b) << "\n"; \
return false; \
} \
} while (0)
namespace
{
bool test_add()
{
for (int i = 0; i < 512; ++i)
{
for (int j = 0; j < 512; ++j)
{
int expected = i + j;
int result = nerd_add(i, j);
ASSERT_EQUAL(expected, result);
}
}
return true;
}
bool test_mul()
{
for (int i = 0; i < 512; ++i)
{
for (int j = 0; j < 512; ++j)
{
int expected = i * j;
int result = nerd_mul(i, j);
ASSERT_EQUAL(expected, result);
}
}
return true;
}
bool test_fail()
{
return false;
}
} // namespace anonymous
extern "C" int main(int argc, char **argv)
{
std::cout << "Test program\n";
struct
{
const char *name;
bool (*func)();
} test_list[] = {
{"Addition", test_add},
{"Multiplication", test_mul},
{"WontWork", test_fail}};
static constexpr auto test_list_len = sizeof(test_list) / sizeof(test_list[0]);
bool success = true;
size_t failures = 0;
size_t successes = 0;
size_t i;
for (i = 0; i < test_list_len; ++i)
{
bool result = test_list[i].func();
if (result)
{
std::cout << "[ SUCCESS ] TestSuite." << test_list[i].name << "\n";
successes++;
}
else
{
std::cout << "[ FAILURE ] TestSuite." << test_list[i].name << "\n";
failures++;
}
success = success && result;
}
std::cout << "[ RESULTS ] " << successes << "/" << i << "\n";
return success ? EXIT_SUCCESS : EXIT_FAILURE;
}