aboutsummaryrefslogtreecommitdiff
path: root/testsuite/src
diff options
context:
space:
mode:
authorGravatar Alex Martens <alex@thinglab.org> 2022-03-27 10:21:28 -0700
committerGravatar Alex Martens <alex@thinglab.org> 2022-03-27 10:21:28 -0700
commitb4181a8a313ef7686da3f64e3947ce96b9788037 (patch)
treee144a319fcd4762ad83586035e968985d44ce42c /testsuite/src
parentc2e77c5aee4a2c587f4bb3dc4a91a6bd02b322a6 (diff)
downloadcortex-m-b4181a8a313ef7686da3f64e3947ce96b9788037.tar.gz
cortex-m-b4181a8a313ef7686da3f64e3947ce96b9788037.tar.zst
cortex-m-b4181a8a313ef7686da3f64e3947ce96b9788037.zip
Add on-target tests
Diffstat (limited to 'testsuite/src')
-rw-r--r--testsuite/src/main.rs54
1 files changed, 54 insertions, 0 deletions
diff --git a/testsuite/src/main.rs b/testsuite/src/main.rs
new file mode 100644
index 0000000..46ab629
--- /dev/null
+++ b/testsuite/src/main.rs
@@ -0,0 +1,54 @@
+#![no_main]
+#![no_std]
+
+extern crate cortex_m_rt;
+
+#[cfg(target_env = "")] // appease clippy
+#[panic_handler]
+fn panic(info: &core::panic::PanicInfo) -> ! {
+ cortex_m::interrupt::disable();
+ minitest::log!("{}", info);
+ minitest::fail()
+}
+
+#[minitest::tests]
+mod tests {
+ use minitest::log;
+
+ #[init]
+ fn init() -> cortex_m::Peripherals {
+ log!("Hello world!");
+ cortex_m::Peripherals::take().unwrap()
+ }
+
+ #[test]
+ fn double_take() {
+ assert!(cortex_m::Peripherals::take().is_none());
+ }
+
+ #[test]
+ #[cfg(not(feature = "semihosting"))] // QEMU does not model the cycle counter
+ fn cycle_count(p: &mut cortex_m::Peripherals) {
+ #[cfg(not(armv6m))]
+ {
+ use cortex_m::peripheral::DWT;
+
+ assert!(p.DWT.has_cycle_counter());
+
+ p.DCB.enable_trace();
+ p.DWT.disable_cycle_counter();
+
+ const TEST_COUNT: u32 = 0x5555_AAAA;
+ p.DWT.set_cycle_count(TEST_COUNT);
+ assert_eq!(DWT::cycle_count(), TEST_COUNT);
+
+ p.DWT.enable_cycle_counter();
+ assert!(DWT::cycle_count() > TEST_COUNT);
+ }
+
+ #[cfg(armv6m)]
+ {
+ assert!(!p.DWT.has_cycle_counter());
+ }
+ }
+}