blob: 9d966868f6d57743d7f4579348308f890deeab63 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
//! `cargo xtask` automation.
//!
//! Please refer to <https://github.com/matklad/cargo-xtask/> for an explanation of the concept.
use std::process::Command;
pub fn install_targets(targets: &mut dyn Iterator<Item = &str>, toolchain: Option<&str>) {
let mut rustup = Command::new("rustup");
rustup.arg("target").arg("add").args(targets);
if let Some(toolchain) = toolchain {
rustup.arg("--toolchain").arg(toolchain);
}
let status = rustup.status().unwrap();
assert!(status.success(), "rustup command failed: {:?}", rustup);
}
// Check that serde and PartialOrd works with VectActive
pub fn check_host_side() {
use cortex_m::peripheral::{itm::LocalTimestampOptions, scb::VectActive};
// check serde
{
let v = VectActive::from(22).unwrap();
let json = serde_json::to_string(&v).expect("Failed to serialize VectActive");
let deser_v: VectActive =
serde_json::from_str(&json).expect("Failed to deserialize VectActive");
assert_eq!(deser_v, v);
let lts = LocalTimestampOptions::EnabledDiv4;
let json = serde_json::to_string(<s).expect("Failed to serialize LocalTimestampOptions");
let deser_lts: LocalTimestampOptions =
serde_json::from_str(&json).expect("Failed to deserilaize LocalTimestampOptions");
assert_eq!(deser_lts, lts);
}
// check PartialOrd
{
let a = VectActive::from(19).unwrap();
let b = VectActive::from(20).unwrap();
assert!(a < b);
}
// check TryFrom
{
use core::convert::TryInto;
use std::convert::TryFrom;
let lts: LocalTimestampOptions = (16_u8).try_into().unwrap();
assert_eq!(lts, LocalTimestampOptions::EnabledDiv16);
assert!(LocalTimestampOptions::try_from(42).is_err());
}
}
|