completion and fixes
This commit is contained in:
parent
ac8718f1af
commit
d93dd92fda
@ -225,6 +225,16 @@ macro_rules! try_from_impls {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
macro_rules! const_from_fn {
|
||||||
|
($from_fn_name: ident, $TypedIdent: ident, $SevIdent: ident) => {
|
||||||
|
pub const fn $from_fn_name(event: $TypedIdent<$SevIdent>) -> Self {
|
||||||
|
Self {
|
||||||
|
base: event.event.base
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
|
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
|
||||||
pub struct EventU32 {
|
pub struct EventU32 {
|
||||||
base: EventBase<u32, u16, u16>,
|
base: EventBase<u32, u16, u16>,
|
||||||
@ -280,16 +290,10 @@ impl EventU32 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const fn const_from_info(event: EventU32TypedSev<SeverityInfo>) -> Self {
|
const_from_fn!(const_from_info, EventU32TypedSev, SeverityInfo);
|
||||||
Self {
|
const_from_fn!(const_from_low, EventU32TypedSev, SeverityLow);
|
||||||
base: event.event.base
|
const_from_fn!(const_from_medium, EventU32TypedSev, SeverityMedium);
|
||||||
}
|
const_from_fn!(const_from_high, EventU32TypedSev, SeverityHigh);
|
||||||
}
|
|
||||||
pub const fn const_from_medium(event: EventU32TypedSev<SeverityMedium>) -> Self {
|
|
||||||
Self {
|
|
||||||
base: event.event.base
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<SEVERITY: HasSeverity> EventU32TypedSev<SEVERITY> {
|
impl<SEVERITY: HasSeverity> EventU32TypedSev<SEVERITY> {
|
||||||
@ -431,6 +435,10 @@ impl EventU16 {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const_from_fn!(const_from_info, EventU16TypedSev, SeverityInfo);
|
||||||
|
const_from_fn!(const_from_low, EventU16TypedSev, SeverityLow);
|
||||||
|
const_from_fn!(const_from_medium, EventU16TypedSev, SeverityMedium);
|
||||||
|
const_from_fn!(const_from_high, EventU16TypedSev, SeverityHigh);
|
||||||
}
|
}
|
||||||
impl<SEVERITY: HasSeverity> EventU16TypedSev<SEVERITY> {
|
impl<SEVERITY: HasSeverity> EventU16TypedSev<SEVERITY> {
|
||||||
/// Generate a small event. The raw representation of a small event has 16 bits.
|
/// Generate a small event. The raw representation of a small event has 16 bits.
|
||||||
@ -532,6 +540,9 @@ mod tests {
|
|||||||
const HIGH_SEV_EVENT_SMALL: EventU16TypedSev<SeverityHigh> =
|
const HIGH_SEV_EVENT_SMALL: EventU16TypedSev<SeverityHigh> =
|
||||||
EventU16TypedSev::const_new(0x3F, 0xff);
|
EventU16TypedSev::const_new(0x3F, 0xff);
|
||||||
|
|
||||||
|
/// This working is a test in itself.
|
||||||
|
const INFO_REDUCED: EventU32 = EventU32::const_from_info(INFO_EVENT);
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_normal_from_raw_conversion() {
|
fn test_normal_from_raw_conversion() {
|
||||||
let conv_from_raw = EventU32TypedSev::<SeverityInfo>::try_from(INFO_EVENT.raw())
|
let conv_from_raw = EventU32TypedSev::<SeverityInfo>::try_from(INFO_EVENT.raw())
|
||||||
@ -693,4 +704,19 @@ mod tests {
|
|||||||
let invalid = Severity::HIGH as u8 + 1;
|
let invalid = Severity::HIGH as u8 + 1;
|
||||||
assert!(Severity::try_from(invalid).is_err());
|
assert!(Severity::try_from(invalid).is_err());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn reduction() {
|
||||||
|
let event = EventU32TypedSev::<SeverityInfo>::const_new(1, 1);
|
||||||
|
let raw = event.raw();
|
||||||
|
let reduced: EventU32 = event.into();
|
||||||
|
assert_eq!(reduced.group_id(), 1);
|
||||||
|
assert_eq!(reduced.unique_id(), 1);
|
||||||
|
assert_eq!(raw, reduced.raw());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn const_reducation() {
|
||||||
|
assert_eq!(INFO_REDUCED.raw(), INFO_EVENT.raw());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ const SOME_LOW_SEV_EVENT: EventU32TypedSev<SeverityLow> = EventU32TypedSev::cons
|
|||||||
//#[event_group]
|
//#[event_group]
|
||||||
const TEST_GROUP_NAME: u16 = 1;
|
const TEST_GROUP_NAME: u16 = 1;
|
||||||
// Auto-generated?
|
// Auto-generated?
|
||||||
const TEST_GROUP_NAME_NAME: &'static str = "TEST_GROUP_NAME";
|
const TEST_GROUP_NAME_NAME: &str = "TEST_GROUP_NAME";
|
||||||
|
|
||||||
//#[event(desc="Some medium severity event")]
|
//#[event(desc="Some medium severity event")]
|
||||||
const MEDIUM_SEV_EVENT_IN_OTHER_GROUP: EventU32TypedSev<SeverityMedium> =
|
const MEDIUM_SEV_EVENT_IN_OTHER_GROUP: EventU32TypedSev<SeverityMedium> =
|
||||||
@ -60,21 +60,21 @@ const MEDIUM_SEV_EVENT_IN_OTHER_GROUP_INTROSPECTION: EventIntrospection =
|
|||||||
};
|
};
|
||||||
|
|
||||||
const CONST_SLICE: &'static [u8] = &[0, 1, 2, 3];
|
const CONST_SLICE: &'static [u8] = &[0, 1, 2, 3];
|
||||||
const INTROSPECTION_FOR_TEST_GROUP_0: [&'static EventIntrospection; 2] = [
|
const INTROSPECTION_FOR_TEST_GROUP_0: [&EventIntrospection; 2] = [
|
||||||
&INFO_EVENT_0_INTROSPECTION,
|
&INFO_EVENT_0_INTROSPECTION,
|
||||||
&INFO_EVENT_0_INTROSPECTION
|
&INFO_EVENT_0_INTROSPECTION
|
||||||
];
|
];
|
||||||
|
|
||||||
const INTROSPECTION_FOR_TABLE: &'static [&EventIntrospection] = &INTROSPECTION_FOR_TEST_GROUP_0;
|
//const INTROSPECTION_FOR_TABLE: &'static [&EventIntrospection] = &INTROSPECTION_FOR_TEST_GROUP_0;
|
||||||
|
|
||||||
const INTROSPECTION_FOR_TEST_GROUP_NAME: [&'static EventIntrospection; 1] = [
|
const INTROSPECTION_FOR_TEST_GROUP_NAME: [&EventIntrospection; 1] = [
|
||||||
&MEDIUM_SEV_EVENT_IN_OTHER_GROUP_INTROSPECTION
|
&MEDIUM_SEV_EVENT_IN_OTHER_GROUP_INTROSPECTION
|
||||||
];
|
];
|
||||||
const BLAH: &'static [&EventIntrospection] = &INTROSPECTION_FOR_TEST_GROUP_NAME;
|
//const BLAH: &'static [&EventIntrospection] = &INTROSPECTION_FOR_TEST_GROUP_NAME;
|
||||||
|
|
||||||
const ALL_EVENTS: [&'static [&EventIntrospection]; 2] = [
|
const ALL_EVENTS: [&[&EventIntrospection]; 2] = [
|
||||||
INTROSPECTION_FOR_TABLE,
|
&INTROSPECTION_FOR_TEST_GROUP_0,
|
||||||
BLAH
|
&INTROSPECTION_FOR_TEST_GROUP_NAME
|
||||||
];
|
];
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
Loading…
Reference in New Issue
Block a user