diff --git a/tests/unittests/tests-flashpage/Makefile b/tests/unittests/tests-flashpage/Makefile new file mode 100644 index 0000000000..48422e909a --- /dev/null +++ b/tests/unittests/tests-flashpage/Makefile @@ -0,0 +1 @@ +include $(RIOTBASE)/Makefile.base diff --git a/tests/unittests/tests-flashpage/Makefile.include b/tests/unittests/tests-flashpage/Makefile.include new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/unittests/tests-flashpage/tests-flashpage.c b/tests/unittests/tests-flashpage/tests-flashpage.c new file mode 100644 index 0000000000..4a37ac386b --- /dev/null +++ b/tests/unittests/tests-flashpage/tests-flashpage.c @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2016 Freie Universität Berlin + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License v2.1. See the file LICENSE in the top level + * directory for more details. + */ + +/** + * @{ + * + * @file + */ + +#include +#include + +#include "cpu.h" +#include "embUnit/embUnit.h" +#include "tests-flashpage.h" + +/* need to define these values before including the header */ +#ifndef FLASHPAGE_SIZE +#define FLASHPAGE_SIZE 512 +#endif +#ifndef FLASHPAGE_NUMOF +#define FLASHPAGE_NUMOF 128 +#endif + +#include "periph/flashpage.h" + +static void test_flashbase_addr(void) +{ + void *addr; + + addr = flashpage_addr(0); + TEST_ASSERT_EQUAL_INT((int)CPU_FLASH_BASE, (int)addr); + addr = flashpage_addr(FLASHPAGE_NUMOF - 1); + TEST_ASSERT_EQUAL_INT((long)CPU_FLASH_BASE + (((unsigned)FLASHPAGE_NUMOF - 1) * FLASHPAGE_SIZE), (int)addr); + addr = flashpage_addr(12); + TEST_ASSERT_EQUAL_INT((int)CPU_FLASH_BASE + (12 * FLASHPAGE_SIZE), (int)addr); +} + +static void test_flashbase_page(void) +{ + int page; + + page = flashpage_page((void *)CPU_FLASH_BASE); + TEST_ASSERT_EQUAL_INT(0, page); + page = flashpage_page((void *)(CPU_FLASH_BASE + 1)); + TEST_ASSERT_EQUAL_INT(0, page); + page = flashpage_page((void *)(CPU_FLASH_BASE + FLASHPAGE_SIZE)); + TEST_ASSERT_EQUAL_INT(1, page); + page = flashpage_page((void *)(CPU_FLASH_BASE + FLASHPAGE_SIZE + 1)); + TEST_ASSERT_EQUAL_INT(1, page); + page = flashpage_page((void *)(CPU_FLASH_BASE + ((unsigned)FLASHPAGE_SIZE * (FLASHPAGE_NUMOF - 1)))); + TEST_ASSERT_EQUAL_INT(FLASHPAGE_NUMOF - 1, page); +} + +Test *tests_flashpage_tests(void) +{ + EMB_UNIT_TESTFIXTURES(fixtures) { + new_TestFixture(test_flashbase_addr), + new_TestFixture(test_flashbase_page) + }; + + EMB_UNIT_TESTCALLER(flashbase_tests, NULL, NULL, fixtures); + + return (Test *)&flashbase_tests; +} + +void tests_flashpage(void) +{ + TESTS_RUN(tests_flashpage_tests()); +} +/** @} */ diff --git a/tests/unittests/tests-flashpage/tests-flashpage.h b/tests/unittests/tests-flashpage/tests-flashpage.h new file mode 100644 index 0000000000..0db64906fa --- /dev/null +++ b/tests/unittests/tests-flashpage/tests-flashpage.h @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2016 Freie Universität Berlin + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License v2.1. See the file LICENSE in the top level + * directory for more details. + */ + +/** + * @addtogroup unittests + * @{ + * + * @file + * @brief Unittests for the ``flashpage`` periph driver + * + * @author Hauke Petersen + */ +#ifndef TESTS_FLASHPAGE_H_ +#define TESTS_FLASHPAGE_H_ + +#include "embUnit.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Entry point of this test suite + */ +void tests_flashpage(void); + +#ifdef __cplusplus +} +#endif + +#endif /* TESTS_FLASHPAGE_H_ */ +/** @} */