refactoring to interfaces

This commit is contained in:
Jonas Zeunert
2018-06-14 21:09:45 +02:00
parent 6a6a10517d
commit 13b5cc0b33
18 changed files with 34798 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -lA'
alias cat='cat -n'
alias ncat='cat'
alias mkdir='mkdir -p'
alias pdfmerge='gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOUTPUTFILE='
alias sync_bash_rc='sync_bash .bashrc_ssh'
alias sync_bash_aliases='sync_bash .bash_aliases'
alias sync_bash_functions='sync_bash .bash_functions'

View File

@@ -0,0 +1,79 @@
function up {
[ "${1/[^0-9]/}" == "$1" ] && {
local ups=""
for i in $(seq 1 $1)
do
ups=$ups"../"
done
cd $ups
} || cd ../
}
function ccat {
pygmentize -g $1 | cat -n
}
function sync_bash {
if [ -z "$1" ]
then
exit 1
fi
echo $BASHRC_DIR
echo $1
rsync -avzhe ssh $1 $BASHRC_USER@$BASHRC_SERVER:$BASHRC_DIR/$1
}
function get_bash_file {
if [ -z "$1" ]
then
exit 1
fi
echo $BASHRC_DIR
echo $1
rsync -avzhe ssh $BASHRC_USER@$BASHRC_SERVER:$BASHRC_DIR/$1 $1
}
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
function extract {
if [ -z "$1" ]; then
# display usage if no parameters given
echo "Usage: extract <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>"
echo " extract <path/file_name_1.ext> [path/file_name_2.ext] [path/file_name_3.ext]"
else
for n in "$@"
do
if [ -f "$n" ] ; then
case "${n%,}" in
*.tar.bz2|*.tar.gz|*.tar.xz|*.tbz2|*.tgz|*.txz|*.tar)
tar xvf "$n" ;;
*.lzma) unlzma ./"$n" ;;
*.bz2) bunzip2 ./"$n" ;;
*.rar) unrar x -ad ./"$n" ;;
*.gz) gunzip ./"$n" ;;
*.zip) unzip ./"$n" ;;
*.z) uncompress ./"$n" ;;
*.7z|*.arj|*.cab|*.chm|*.deb|*.dmg|*.iso|*.lzh|*.msi|*.rpm|*.udf|*.wim|*.xar)
7z x ./"$n" ;;
*.xz) unxz ./"$n" ;;
*.exe) cabextract ./"$n" ;;
*.cpio) cpio -id < ./"$n" ;;
*)
echo "extract: '$n' - unknown archive method"
return 1
;;
esac
else
echo "'$n' - file does not exist"
return 1
fi
done
fi
}
IFS=$SAVEIFS
calc() {
echo "scale=3;$@" | bc -l
}

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
<configuration id="cdt.managedbuild.toolchain.gnu.base.1201473626" name="Default">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="709603775115835139" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
</extension>
</configuration>
</project>

View File

@@ -0,0 +1,30 @@
/*
* IDetector.h
*
* Created on: Jun 13, 2018
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert, Rafael Vinci, Dr. Franca Rupprecht
*/
#ifndef SRC_INPUT_IDETECTOR_H_
#define SRC_INPUT_IDETECTOR_H_
#include <thread>
#include <map>
#include "../utilities/InputGPIOInterface.h"
#include "Event.hpp"
#include "EventNotifier.h"
namespace Input
{
class IDetector
{
public:
virtual ~IDetector() = 0;
};
}
#endif /* SRC_INPUT_IDETECTOR_H_ */

View File

@@ -0,0 +1,19 @@
/*
* IEventHandler.h
*
* Created on: Jun 13, 2018
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert, Rafael Vinci, Dr. Franca Rupprecht
*/
#ifndef SRC_INPUT_IEVENTHANDLER_H_
#define SRC_INPUT_IEVENTHANDLER_H_
namespace Input {
class IEventHandler
{
};
}
#endif /* SRC_INPUT_IEVENTHANDLER_H_ */

View File

@@ -0,0 +1,29 @@
/*
* IEventNotifier.h
*
* Created on: Jun 13, 2018
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert, Rafael Vinci, Dr. Franca Rupprecht
*/
#ifndef SRC_INPUT_IEVENTNOTIFIER_H_
#define SRC_INPUT_IEVENTNOTIFIER_H_
#include "IEventHandler.h"
#include "Event.hpp"
namespace Input
{
class IEventNotifier
{
public:
virtual ~IEventNotifier() = 0;
virtual void register_event_handler(IEventHandler* handler) = 0;
virtual void unregister_event_handler(IEventHandler* handler) = 0;
virtual void distribute_event(Event& event) = 0;
};
}
#endif /* SRC_INPUT_IEVENTNOTIFIER_H_ */

View File

View File

@@ -0,0 +1,20 @@
/*
* IInputDriver.h
*
* Created on: Jun 14, 2018
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert, Rafael Vinci, Dr. Franca Rupprecht
*/
#ifndef SRC_INPUT_IINPUTDRIVER_H_
#define SRC_INPUT_IINPUTDRIVER_H_
namespace Input {
class IInputDriver
{
};
}
#endif /* SRC_INPUT_IINPUTDRIVER_H_ */

View File

@@ -0,0 +1,19 @@
/*
* IInputDriverFactory.h
*
* Created on: Jun 13, 2018
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert, Rafael Vinci, Dr. Franca Rupprecht
*/
#ifndef SRC_INPUT_IINPUTDRIVERFACTORY_H_
#define SRC_INPUT_IINPUTDRIVERFACTORY_H_
namespace Input {
class IInputDriverFactory
{
};
}
#endif /* SRC_INPUT_IINPUTDRIVERFACTORY_H_ */

View File

@@ -0,0 +1,19 @@
cmake_minimum_required(VERSION 3.0)
project(cmake_test)
# Prepare "Catch" library for other executables
set(CATCH_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../src/tests)
add_library(Catch INTERFACE)
target_include_directories(Catch INTERFACE ${CATCH_INCLUDE_DIR}/*)
# Make test executable
set(TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../../src/tests/input)
include_directories(${TEST_SOURCES})
include_directories(${TEST_SOURCES}/mocks)
file(GLOB SOURCES ${TEST_SOURCES}/*.cpp)
file(GLOB SOURCES ${TEST_SOURCES}/*.hpp)
add_executable(tests ${SOURCES})
target_link_libraries(tests Catch)

12012
FlippR-Driver/tests/catch.hpp Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,71 @@
/*
* TestInputDriver.cpp
*
* Created on: May 31, 2018
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert, Rafael Vinci, Dr. Franca Rupprecht
*/
#include "../catch.hpp"
#include "../fakeit.hpp"
#include "../../src/input/InputDriver.hpp"
#include "../../src/input/EventNotifier.h"
#define private public
using namespace fakeit;
SCENARIO("An InputDriver gets created", "[construction}")
{
GIVEN("An EventNotifier")
{
Mock<Input::EventNotifier> event_notifier_mock;
WHEN("The InputDriver gets created")
{
Input::InputDriver input_driver(&event_notifier);
THEN("It saved the EventNotifier")
{
REQUIRE(input_driver.event_notifier == &event_notifier);
}
}
}
}
SCENARIO("An EventHandler [un]registers at the driver", "[[un]register]")
{
GIVEN("An InputDriver, EventHandler and an EventNotifier")
{
Input::EventHandler event_handler = Input::EventHandlerMock();
Input::EventNotifierMock event_notifier;
Input::InputDriver input_driver(&event_notifier);
REQUIRE(event_notifier.registered = false);
WHEN("The EventHandler registers at the driver")
{
input_driver.register_event_handler(&event_handler);
THEN("The register_event_handler at the event_notifier gets called")
{
REQUIRE(event_notifier.registered == true);
}
}
WHEN("The EventHandler unregisters at the driver")
{
REQUIRE(event_notifier.registered = true);
input_driver.unregister_event_handler(&event_handler);
THEN("The unregister_event_handler at the event_notifier gets called")
{
REQUIRE(event_notifier.registered == false);
}
}
}
}

View File

@@ -0,0 +1,9 @@
/*
* tests-main.cpp
*
* Created on: May 6, 2018
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert, Rafael Vinci, Dr. Franca Rupprecht
*/
#define CATCH_CONFIG_MAIN
#include "../catch.hpp"

View File

@@ -0,0 +1,27 @@
/*
* EventHandlerMock.hpp
*
* Created on: May 31, 2018
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert, Rafael Vinci, Dr. Franca Rupprecht
*/
#ifndef SRC_TESTS_INPUT_MOCKS_EVENTHANDLERMOCK_HPP_
#define SRC_TESTS_INPUT_MOCKS_EVENTHANDLERMOCK_HPP_
namespace Input
{
class EventHandler;
class Event;
class EventHandlerMock : EventHandler
{
public:
void handle(Event& event) override
{
}
};
}
#endif /* SRC_TESTS_INPUT_MOCKS_EVENTHANDLERMOCK_HPP_ */

View File

@@ -0,0 +1,39 @@
/*
* EventNotfierMock.hpp
*
* Created on: May 31, 2018
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert, Rafael Vinci, Dr. Franca Rupprecht
*/
#ifndef SRC_TESTS_INPUT_MOCKS_EVENTNOTIFIERMOCK_HPP_
#define SRC_TESTS_INPUT_MOCKS_EVENTNOTIFIERMOCK_HPP_
namespace Input
{
class EventNotifier;
class EventHandler;
class EventNotifierMock : EventNotifier
{
public:
EventNotifierMock() :
registered(false)
{}
void register_event_handler(EventHandler* handler) override
{
registered = true;
}
void unregister_event_handler(EventHandler* handler) override
{
registered = false;
}
public:
bool registered;
};
}
#endif /* SRC_TESTS_INPUT_MOCKS_EVENTNOTIFIERMOCK_HPP_ */

View File

@@ -0,0 +1,34 @@
/*
* InputDriverMock.hpp
*
* Created on: May 31, 2018
* Author: Andreas Schneider, Johannes Wendel, Jonas Zeunert, Rafael Vinci, Dr. Franca Rupprecht
*/
#ifndef SRC_TESTS_INPUT_MOCKS_INPUTDRIVERMOCK_HPP_
#define SRC_TESTS_INPUT_MOCKS_INPUTDRIVERMOCK_HPP_
namespace Input
{
class InputDriver;
class EventHandler;
class InputDriverMock : InputDriver
{
public:
InputDriverMock() :
registered(false)
{}
void register_event_handler(EventHandler* handler)
{
registered = true;
}
public:
bool registered;
};
}
#endif /* SRC_TESTS_INPUT_MOCKS_INPUTDRIVERMOCK_HPP_ */