Skip to content

Commit

Permalink
🔀 Merge pull request #243 from leka/benjamin/feature/mock_buffered_se…
Browse files Browse the repository at this point in the history
…rial
  • Loading branch information
ladislas authored May 19, 2021
2 parents d53a8a2 + 99dd7af commit af3f455
Show file tree
Hide file tree
Showing 10 changed files with 210 additions and 5 deletions.
5 changes: 3 additions & 2 deletions drivers/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@
# SPDX-License-Identifier: Apache-2.0

# C++ wrappers & low level drivers
add_subdirectory(${DRIVERS_DIR}/LKCoreLL)
add_subdirectory(${DRIVERS_DIR}/CoreI2C)
add_subdirectory(${DRIVERS_DIR}/LKCoreLL)
add_subdirectory(${DRIVERS_DIR}/LKCoreFatFs)
add_subdirectory(${DRIVERS_DIR}/LKCoreSTM32Hal)
add_subdirectory(${DRIVERS_DIR}/CoreBufferedSerial)

# LCD drivers
add_subdirectory(${DRIVERS_DIR}/LKCoreVideo)
Expand All @@ -18,5 +19,5 @@ add_subdirectory(${DRIVERS_DIR}/LKCoreMicrophone)
add_subdirectory(${DRIVERS_DIR}/LKCoreLightSensor)

# Actuators drivers
add_subdirectory(${DRIVERS_DIR}/LKCoreMotor)
add_subdirectory(${DRIVERS_DIR}/FastLED)
add_subdirectory(${DRIVERS_DIR}/LKCoreMotor)
27 changes: 27 additions & 0 deletions drivers/CoreBufferedSerial/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Leka - LekaOS
# Copyright 2021 APF France handicap
# SPDX-License-Identifier: Apache-2.0

add_library(CoreBufferedSerial STATIC)

target_include_directories(CoreBufferedSerial
PUBLIC
include
)

target_sources(CoreBufferedSerial
PRIVATE
source/CoreBufferedSerial.cpp
)

target_link_libraries(CoreBufferedSerial
mbed-os
)

if (${CMAKE_PROJECT_NAME} STREQUAL "LekaOSUnitTests")

leka_unit_tests_sources(
tests/CoreBufferedSerial_test.cpp
)

endif()
39 changes: 39 additions & 0 deletions drivers/CoreBufferedSerial/include/CoreBufferedSerial.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// Leka - LekaOS
// Copyright 2021 APF France handicap
// SPDX-License-Identifier: Apache-2.0

#ifndef _LEKA_OS_DRIVER_CORE_BUFFERED_SERIAL_H_
#define _LEKA_OS_DRIVER_CORE_BUFFERED_SERIAL_H_

#include "drivers/BufferedSerial.h"

namespace leka::interface {

class BufferedSerial
{
public:
virtual ~BufferedSerial() = default;

virtual auto read(uint8_t *buffer, ssize_t length) -> ssize_t = 0;
virtual auto write(const uint8_t *buffer, ssize_t length) -> ssize_t = 0;
};

} // namespace leka::interface

namespace leka {

class CoreBufferedSerial : public interface::BufferedSerial
{
public:
explicit CoreBufferedSerial(mbed::BufferedSerial &serial) : _serial {serial} {};

auto read(uint8_t *buffer, ssize_t length) -> ssize_t final;
auto write(const uint8_t *buffer, ssize_t length) -> ssize_t final;

private:
mbed::BufferedSerial &_serial;
};

} // namespace leka

#endif //_LEKA_OS_DRIVER_CORE_BUFFERED_SERIAL_H_
21 changes: 21 additions & 0 deletions drivers/CoreBufferedSerial/source/CoreBufferedSerial.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// Leka - LekaOS
// Copyright 2021 APF France handicap
// SPDX-License-Identifier: Apache-2.0

// ? LCOV_EXCL_START - Exclude from coverage report

#include "CoreBufferedSerial.h"

using namespace leka;

auto CoreBufferedSerial::read(uint8_t *buffer, ssize_t length) -> ssize_t
{
return _serial.read(buffer, length);
}

auto CoreBufferedSerial::write(const uint8_t *buffer, ssize_t length) -> ssize_t
{
return _serial.write(buffer, length);
}

// ? LCOV_EXCL_STOP - Exclude from coverage report
17 changes: 17 additions & 0 deletions drivers/CoreBufferedSerial/tests/CoreBufferedSerial_test.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// Leka - LekaOS
// Copyright 2021 APF France handicap
// SPDX-License-Identifier: Apache-2.0

#include "CoreBufferedSerial.h"

#include "gtest/gtest.h"

using namespace leka;

TEST(CoreBufferedSerialTest, initialization)
{
auto serial = mbed::BufferedSerial {RFID_UART_TX, RFID_UART_RX, 57600};
auto coreserial = CoreBufferedSerial {serial};

ASSERT_NE(&coreserial, nullptr);
}
2 changes: 1 addition & 1 deletion tests/unit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ leka_register_unit_tests_for_driver(LKCoreMicrophone)
leka_register_unit_tests_for_driver(LKCoreBattery)
leka_register_unit_tests_for_driver(CoreHTS)
leka_register_unit_tests_for_driver(CoreI2C)

leka_register_unit_tests_for_driver(CoreBufferedSerial)

# Register libraries
leka_register_unit_tests_for_library(LKAnimationKit)
Expand Down
7 changes: 5 additions & 2 deletions tests/unit/mbed-os/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -85,20 +85,23 @@ target_sources(mbed-os
${MBED_STUBS_DIR}/stub_gpio_api.cpp
${MBED_STUBS_DIR}/stub_AnalogIn.cpp
${MBED_STUBS_DIR}/stub_PwmOut.cpp
${MBED_STUBS_DIR}/stub_BufferedSerial.cpp
${MBED_STUBS_DIR}/stub_I2C.cpp
${MBED_STUBS_DIR}/stub_Kernel.cpp
${MBED_STUBS_DIR}/stub_mbed_critical.cpp

${MBED_STUBS_DIR}/stub_extension_EventQueue.cpp

${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/equeue_stub.c
${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/EventQueue_stub.cpp
${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/mbed_assert_stub.cpp
${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/mbed_rtos_rtx_stub.c
${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/Mutex_stub.cpp
${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/rtx_mutex_stub.c
${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/ThisThread_stub.cpp
${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/Thread_stub.cpp
${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/mbed_assert_stub.cpp
${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/EventQueue_stub.cpp
${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/SerialBase_stub.cpp
${ROOT_DIR}/extern/mbed-os/UNITTESTS/stubs/FileHandle_stub.cpp
)

target_compile_options(mbed-os
Expand Down
66 changes: 66 additions & 0 deletions tests/unit/mbed-os/stubs/stub_BufferedSerial.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
// Leka - LekaOS
// Copyright 2021 APF France handicap
// SPDX-License-Identifier: Apache-2.0

#include "stub_BufferedSerial.h"

namespace mbed {

BufferedSerial::BufferedSerial(PinName tx, PinName rx, int baud) : SerialBase(tx, rx, baud)
{
return;
}

BufferedSerial::~BufferedSerial()
{
return;
}

auto BufferedSerial::poll(short events) const -> short
{
return 0;
}

auto BufferedSerial::write(const void *buffer, size_t length) -> ssize_t
{
return length;
}

auto BufferedSerial::read(void *buffer, size_t length) -> ssize_t
{
return length;
}

auto BufferedSerial::close() -> int
{
return 0;
}

auto BufferedSerial::isatty() -> int
{
return 0;
}

auto BufferedSerial::seek(off_t offset, int whence) -> off_t
{
return 0;
}

auto BufferedSerial::sync() -> int
{
return 0;
}

auto BufferedSerial::enable_input(bool enabled) -> int
{
return 0;
}

auto BufferedSerial::enable_output(bool enabled) -> int
{
return 0;
}

void BufferedSerial::sigio(Callback<void()> func) {}

} // namespace mbed
9 changes: 9 additions & 0 deletions tests/unit/mbed-os/stubs/stub_BufferedSerial.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// Leka - LekaOS
// Copyright 2021 APF France handicap
// SPDX-License-Identifier: Apache-2.0

#include "drivers/BufferedSerial.h"

namespace leka {

} // namespace leka
22 changes: 22 additions & 0 deletions tests/unit/mocks/mock_CoreBufferedSerial.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// Leka - LekaOS
// Copyright 2021 APF France handicap
// SPDX-License-Identifier: Apache-2.0

#ifndef _LEKA_OS_BUFFERED_SERIAL_MOCK_H_
#define _LEKA_OS_BUFFERED_SERIAL_MOCK_H_

#include "CoreBufferedSerial.h"
#include "gmock/gmock.h"

namespace leka {

class CoreBufferedSerialMock : public interface::BufferedSerial
{
public:
MOCK_METHOD(ssize_t, read, (uint8_t *, ssize_t), (override));
MOCK_METHOD(ssize_t, write, (const uint8_t *, ssize_t), (override));
};

} // namespace leka

#endif // _LEKA_OS_BUFFERED_SERIAL_MOCK_H_

0 comments on commit af3f455

Please sign in to comment.