use commonware_macros::{stability, stability_scope};
#[stability(EPSILON)]
const fn level_4_fn() -> u8 {
4
}
#[stability(EPSILON)]
struct Level4Struct {
value: u32,
}
#[stability(EPSILON)]
impl Level4Struct {
const fn new() -> Self {
Self { value: 42 }
}
}
#[stability(EPSILON)]
mod level_4_module {
pub const fn inner() -> u32 {
100
}
}
#[test]
fn test_level_4_items_compile() {
assert_eq!(level_4_fn(), 4);
let s = Level4Struct::new();
assert_eq!(s.value, 42);
assert_eq!(level_4_module::inner(), 100);
}
#[stability(BETA)]
mod level_2_tests {
use commonware_macros::stability;
#[stability(BETA)]
const fn level_2_fn() -> u8 {
2
}
#[stability(BETA)]
struct Level2Struct {
value: u32,
}
#[stability(BETA)]
impl Level2Struct {
const fn new() -> Self {
Self { value: 22 }
}
}
#[test]
fn test_level_2_items_compile() {
assert_eq!(level_2_fn(), 2);
let s = Level2Struct::new();
assert_eq!(s.value, 22);
}
}
stability_scope!(EPSILON {
const fn scope_level_4_fn() -> u8 {
44
}
struct ScopeLevel4Struct {
value: u32,
}
impl ScopeLevel4Struct {
const fn new() -> Self {
Self { value: 444 }
}
}
});
#[test]
fn test_stability_scope_level_4() {
assert_eq!(scope_level_4_fn(), 44);
let s = ScopeLevel4Struct::new();
assert_eq!(s.value, 444);
}
#[stability(BETA)]
mod stability_scope_level_2_tests {
use commonware_macros::stability_scope;
stability_scope!(BETA {
pub const fn scope_level_2_fn() -> u8 {
22
}
pub struct ScopeLevel2Struct {
pub value: u32,
}
impl ScopeLevel2Struct {
pub const fn new() -> Self {
Self { value: 222 }
}
}
});
#[test]
fn test_stability_scope_level_2() {
assert_eq!(scope_level_2_fn(), 22);
let s = ScopeLevel2Struct::new();
assert_eq!(s.value, 222);
}
}
stability_scope!(EPSILON, cfg(test) {
const fn cfg_scope_fn() -> u8 {
55
}
struct CfgScopeStruct {
value: u32,
}
impl CfgScopeStruct {
const fn new() -> Self {
Self { value: 555 }
}
}
});
#[test]
fn test_stability_scope_with_cfg() {
assert_eq!(cfg_scope_fn(), 55);
let s = CfgScopeStruct::new();
assert_eq!(s.value, 555);
}
#[stability(BETA)]
mod stability_scope_with_cfg_level_2_tests {
use commonware_macros::stability_scope;
stability_scope!(BETA, cfg(test) {
pub const fn cfg_scope_level_2_fn() -> u8 {
33
}
});
#[test]
fn test_stability_scope_with_cfg_level_2() {
assert_eq!(cfg_scope_level_2_fn(), 33);
}
}