diff options
Diffstat (limited to 'tool/mbed/mbed-sdk/libraries/tests/utest')
6 files changed, 286 insertions, 0 deletions
| diff --git a/tool/mbed/mbed-sdk/libraries/tests/utest/basic/basic.cpp b/tool/mbed/mbed-sdk/libraries/tests/utest/basic/basic.cpp new file mode 100644 index 0000000000..92d77cbc07 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/utest/basic/basic.cpp @@ -0,0 +1,13 @@ +#include "TestHarness.h" + +TEST_GROUP(FirstTestGroup) +{ +}; + +TEST(FirstTestGroup, FirstTest) +{ +    /* These checks are here to make sure assertions outside test runs don't crash */ +    CHECK(true); +    LONGS_EQUAL(1, 1); +    STRCMP_EQUAL("mbed SDK!", "mbed SDK!"); +}
\ No newline at end of file diff --git a/tool/mbed/mbed-sdk/libraries/tests/utest/bus/busout_ut.cpp b/tool/mbed/mbed-sdk/libraries/tests/utest/bus/busout_ut.cpp new file mode 100644 index 0000000000..d7f2a408df --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/utest/bus/busout_ut.cpp @@ -0,0 +1,87 @@ +#include "TestHarness.h" +#include <utility> +#include "mbed.h" + +TEST_GROUP(BusOut_mask) +{ +}; + +TEST(BusOut_mask, led_1_2_3) +{ +    BusOut bus_data(LED1, LED2, LED3); +    CHECK_EQUAL(0x07, bus_data.mask()); +} + +TEST(BusOut_mask, led_nc_nc_nc_nc) +{ +    BusOut bus_data(NC, NC, NC, NC); +    CHECK_EQUAL(0x00, bus_data.mask()); +} + +TEST(BusOut_mask, led_1_2_3_nc_nc) +{ +    BusOut bus_data(LED1, LED2, LED3, NC, NC); +    CHECK_EQUAL(0x07, bus_data.mask()); +} + +TEST(BusOut_mask, led_1_nc_2_nc_nc_3) +{ +    BusOut bus_data(LED1, NC, LED2, NC, NC, LED3); +    CHECK_EQUAL(0x25, bus_data.mask()); +} + +/////////////////////////////////////////////////////////////////////////////// + +TEST_GROUP(BusOut_dummy) +{ +}; + +TEST(BusOut_dummy, dummy) +{ +} + +#ifdef MBED_OPERATORS +TEST_GROUP(BusOut_digitalout_write) +{ +}; + +TEST(BusOut_digitalout_write, led_nc) +{ +    BusOut bus_data(NC); +    CHECK_EQUAL(false, bus_data[0].is_connected()) +} + + +TEST(BusOut_digitalout_write, led_1_2_3) +{ +    BusOut bus_data(LED1, LED2, LED3); +    bus_data[0].write(1); +    bus_data[1].write(1); +    bus_data[2].write(1); +    CHECK(bus_data[0].read()); +    CHECK(bus_data[1].read()); +    CHECK(bus_data[2].read()); +} + +TEST(BusOut_digitalout_write, led_1_2_3_nc_nc) +{ +    BusOut bus_data(LED1, LED2, LED3, NC, NC); +    bus_data[0].write(0); +    bus_data[1].write(0); +    bus_data[2].write(0); +    CHECK(bus_data[0].read() == 0); +    CHECK(bus_data[1].read() == 0); +    CHECK(bus_data[2].read() == 0); +} + +TEST(BusOut_digitalout_write, led_1_nc_2_nc_nc_3) +{ +    BusOut bus_data(LED1, NC, LED2, NC, NC, LED3); +    bus_data[0].write(1); +    bus_data[2].write(0); +    bus_data[5].write(0); +    CHECK(bus_data[0].read()); +    CHECK(bus_data[2].read() == 0); +    CHECK(bus_data[5].read() == 0); +} +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/utest/general/general.cpp b/tool/mbed/mbed-sdk/libraries/tests/utest/general/general.cpp new file mode 100644 index 0000000000..ba56a0f181 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/utest/general/general.cpp @@ -0,0 +1,90 @@ +#include "TestHarness.h" +#include <utility> +#include "mbed.h" + +TEST_GROUP(Integer_Constant_Division) +{ +    uint32_t test_64(uint64_t ticks) { +        ticks >>= 3; // divide by 8 +        if (ticks > 0xFFFFFFFF) { +            ticks /= 3; +        } else { +            ticks = (ticks * 0x55555556) >> 32; // divide by 3 +        } +        return (uint32_t)(0xFFFFFFFF & ticks); +    } +}; + +// 0xFFFFFFFF *  8 =  0x7fffffff8 +TEST(Integer_Constant_Division, Divide_By_8) +{ +    std::pair<uint32_t, uint64_t> values = std::make_pair(0x55555555, 0x7FFFFFFF8); +    uint32_t test_ret = test_64(values.second); +    CHECK_EQUAL(values.first, test_ret); +} + +// 0xFFFFFFFF * 24 = 0x17ffffffe8 +TEST(Integer_Constant_Division, Divide_By_24) +{ +    std::pair<uint32_t, uint64_t> values = std::make_pair(0xFFFFFFFF, 0x17FFFFFFE8); +    uint32_t test_ret = test_64(values.second); +    CHECK_EQUAL(values.first, test_ret); +} + +TEST_GROUP(RTC_Test) +{ +    char buffer[32]; +    const int CUSTOM_TIME = 1256729737; +}; + +TEST(RTC_Test, Check_Set_Time) +{ +    set_time(CUSTOM_TIME);  // Set RTC time to Wed, 28 Oct 2009 11:35:37 +    time_t seconds = time(NULL); +    strftime(buffer, 32, "%Y-%m-%d %H:%M:%S %p", localtime(&seconds)); +    STRCMP_EQUAL(buffer, "2009-10-28 11:35:37 AM"); +} + +TEST_GROUP(C_String_Format) +{ +    char buffer[256]; +}; + +#define POSITIVE_INTEGERS 32768,3214,999,100,1,0,1,4231,999,4123,32760,99999 +TEST(C_String_Format, Sprintf_Positive_Integers) +{ +    sprintf(buffer, "%u %d %u %d %u %d %u %d %u %d %u %d", POSITIVE_INTEGERS); +    STRCMP_EQUAL(buffer, "32768 3214 999 100 1 0 1 4231 999 4123 32760 99999"); +} + +#define NEGATIVE_INTEGERS -32768,-3214,-999,-100,-1,0,-1,-4231,-999,-4123,-32760,-99999 +TEST(C_String_Format, Sprintf_Negative_Integers) +{ +    sprintf(buffer, "%i %d %i %d %i %d %i %d %i %d %i %i", NEGATIVE_INTEGERS); +    STRCMP_EQUAL(buffer, "-32768 -3214 -999 -100 -1 0 -1 -4231 -999 -4123 -32760 -99999"); +} + +#ifdef DEVICE_SEMIHOST +#include "semihost_api.h" + +TEST_GROUP(Device_Semihost) +{ +    char uid[48]; +}; + +TEST(Device_Semihost, semihost_connected) +{ +    CHECK(semihost_connected()); +} + +TEST(Device_Semihost, mbed_interface_connected) +{ +    CHECK(mbed_interface_connected()); +} + +TEST(Device_Semihost, mbed_interface_uid) +{ +    CHECK_EQUAL(mbed_interface_uid(uid), 0); +} + +#endif diff --git a/tool/mbed/mbed-sdk/libraries/tests/utest/semihost_fs/semihost_fs.cpp b/tool/mbed/mbed-sdk/libraries/tests/utest/semihost_fs/semihost_fs.cpp new file mode 100644 index 0000000000..adb49025fb --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/utest/semihost_fs/semihost_fs.cpp @@ -0,0 +1,63 @@ +#include "TestHarness.h" +#include "mbed.h" +#include "semihost_api.h" +#include <stdio.h> + +#define FILENAME      "/local/out.txt" +#define TEST_STRING   "Hello World!" + +TEST_GROUP(FirstTestGroup) +{ + +    FILE *test_open(const char *mode) { +        FILE *f = fopen(FILENAME, mode); +        return f; +    } + +    bool test_write(FILE *f, char *str, int str_len) { +        int n = fprintf(f, str); +        return (n == str_len) ? true : false; +    } + +    bool test_read(FILE *f, char *str, int str_len) { +        int n = fread(str, sizeof(unsigned char), str_len, f); +        return (n == str_len) ? true : false; +    } + +    bool test_close(FILE *f) { +        int rc = fclose(f); +        return rc ? true : false; +    } + +}; + +TEST(FirstTestGroup, FirstTest) +{ +    CHECK_TEXT(semihost_connected(), "Semihost not connected") + +    LocalFileSystem local("local"); + +    char *str = TEST_STRING; +    char *buffer = (char *)malloc(sizeof(unsigned char) * strlen(TEST_STRING)); +    int str_len = strlen(TEST_STRING); + +    CHECK_TEXT(buffer != NULL, "Buffer allocation failed"); +    CHECK_TEXT(str_len > 0, "Test string is empty (len <= 0)"); + +    { +        // Perform write / read tests +        FILE *f = NULL; +        // Write +        f = test_open("w"); +        CHECK_TEXT(f != NULL, "Error opening file for writing") +        CHECK_TEXT(test_write(f, str, str_len), "Error writing file"); +        CHECK_TEXT(test_close(f) != EOF, "Error closing file after write"); + +        // Read +        f = test_open("r"); +        CHECK_TEXT(f != NULL, "Error opening file for reading") +        CHECK_TEXT(test_read(f, buffer, str_len), "Error reading file"); +        CHECK_TEXT(test_close(f) != EOF, "Error closing file after read"); +    } +    CHECK(strncmp(buffer, str, str_len) == 0); +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.cpp b/tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.cpp new file mode 100644 index 0000000000..2c1969ce07 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.cpp @@ -0,0 +1,29 @@ +#include "CommandLineTestRunner.h" +#include <stdio.h> +#include "mbed.h" +#include "testrunner.h" +#include "test_env.h" + +/** +Object 'mbed_cpputest_console' is used to show prints on console. +It is declared in \cpputest\src\Platforms\armcc\UtestPlatform.cpp +*/ +Serial mbed_cpputest_console(STDIO_UART_TX, STDIO_UART_RX); + +int main(int ac, char** av) { +    MBED_HOSTTEST_TIMEOUT(20); +    MBED_HOSTTEST_SELECT(default_auto); +    MBED_HOSTTEST_DESCRIPTION(Unit test); +    MBED_HOSTTEST_START("UT"); + +    unsigned failureCount = 0; +    { +        // Some compilers may not pass ac, av so we need to supply them ourselves +        int ac = 2; +        char* av[] = {__FILE__, "-v"}; +        failureCount = CommandLineTestRunner::RunAllTests(ac, av); +    } + +    MBED_HOSTTEST_RESULT(failureCount == 0); +    return failureCount; +} diff --git a/tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.h b/tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.h new file mode 100644 index 0000000000..b36c1bfc9e --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.h @@ -0,0 +1,4 @@ +#ifndef TEST_RUNNER_H_ +#define TEST_RUNNER_H_ + +#endif | 
