Imported Ord method, and added a simple test
This commit is contained in:
parent
2958c2c72b
commit
f776f48e21
@ -1,12 +1,30 @@
|
|||||||
#ifndef GENERALUTILITY_GENERALUTILITY_H
|
#ifndef GENERALUTILITY_GENERALUTILITY_H
|
||||||
#define GENERALUTILITY_GENERALUTILITY_H
|
#define GENERALUTILITY_GENERALUTILITY_H
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
class GeneralUtility {
|
class GeneralUtility {
|
||||||
public:
|
public:
|
||||||
|
template <typename T_Type, class T_Container>
|
||||||
|
static int Ord(const T_Type& item, const T_Container& set);
|
||||||
private:
|
private:
|
||||||
// No instanciation! >:(
|
// No instanciation! >:(
|
||||||
GeneralUtility();
|
GeneralUtility();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<typename T_Type, class T_Container>
|
||||||
|
int GeneralUtility::Ord(const T_Type &item, const T_Container& set) {
|
||||||
|
const auto result =
|
||||||
|
std::find_if(set.begin(), set.end(), [item](const char c) -> bool {
|
||||||
|
return c == item;
|
||||||
|
});
|
||||||
|
|
||||||
|
// No item found
|
||||||
|
if (result == set.end())
|
||||||
|
return -1;
|
||||||
|
else
|
||||||
|
return result - set.begin();
|
||||||
|
}
|
||||||
|
|
||||||
#endif //GENERALUTILITY_GENERALUTILITY_H
|
#endif //GENERALUTILITY_GENERALUTILITY_H
|
||||||
|
17
Test/CMakeLists.txt
Normal file
17
Test/CMakeLists.txt
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
project(Test)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
|
||||||
|
include_directories(../Src)
|
||||||
|
link_directories(../Src/cmake-build-debug)
|
||||||
|
|
||||||
|
add_executable(Test
|
||||||
|
Catch2.h
|
||||||
|
main.cpp
|
||||||
|
|
||||||
|
Ord.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(Test GeneralUtility)
|
||||||
|
|
17965
Test/Catch2.h
Normal file
17965
Test/Catch2.h
Normal file
File diff suppressed because it is too large
Load Diff
26
Test/Ord.cpp
Normal file
26
Test/Ord.cpp
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#include <GeneralUtility.h>
|
||||||
|
#include "Catch2.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
// Tests that the Ord method works with characters in a string
|
||||||
|
TEST_CASE(__FILE__"/WorksWithCharsInString", "[Ord]")
|
||||||
|
{
|
||||||
|
const std::string set = "0123456789abcdef";
|
||||||
|
|
||||||
|
REQUIRE(GeneralUtility::Ord('0', set) == 0);
|
||||||
|
REQUIRE(GeneralUtility::Ord('1', set) == 1);
|
||||||
|
REQUIRE(GeneralUtility::Ord('2', set) == 2);
|
||||||
|
REQUIRE(GeneralUtility::Ord('3', set) == 3);
|
||||||
|
REQUIRE(GeneralUtility::Ord('4', set) == 4);
|
||||||
|
REQUIRE(GeneralUtility::Ord('5', set) == 5);
|
||||||
|
REQUIRE(GeneralUtility::Ord('6', set) == 6);
|
||||||
|
REQUIRE(GeneralUtility::Ord('7', set) == 7);
|
||||||
|
REQUIRE(GeneralUtility::Ord('8', set) == 8);
|
||||||
|
REQUIRE(GeneralUtility::Ord('9', set) == 9);
|
||||||
|
REQUIRE(GeneralUtility::Ord('a', set) == 10);
|
||||||
|
REQUIRE(GeneralUtility::Ord('b', set) == 11);
|
||||||
|
REQUIRE(GeneralUtility::Ord('c', set) == 12);
|
||||||
|
REQUIRE(GeneralUtility::Ord('d', set) == 13);
|
||||||
|
REQUIRE(GeneralUtility::Ord('e', set) == 14);
|
||||||
|
REQUIRE(GeneralUtility::Ord('f', set) == 15);
|
||||||
|
}
|
2
Test/main.cpp
Normal file
2
Test/main.cpp
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#define CATCH_CONFIG_MAIN
|
||||||
|
#include "Catch2.h"
|
Loading…
x
Reference in New Issue
Block a user