1use this_me::kernel::{Kernel, Value};
2
3fn run() -> Result<(), Box<dyn std::error::Error>> {
4 let mut me = Kernel::new();
5
6 me.claim_identity("Jabellae")?;
7 assert_eq!(me.active_identity(), Some("jabellae"));
8
9 me.postulate("wallet.income", 100_u64)?;
10 me.postulate("wallet.expenses", 40_u64)?;
11 me.derive("wallet", "total", "income - expenses")?;
12 assert_eq!(me.read("wallet.total"), Some(&Value::from(60_f64)));
13
14 me.pointer("profile.wallet", "wallet")?;
15 assert_eq!(me.read("profile.wallet.total"), Some(&Value::from(60_f64)));
16
17 me.query(
18 "profile.summary",
19 ["profile.wallet.total", "profile.missing"],
20 )?;
21 assert_eq!(
22 me.read("profile.summary"),
23 Some(&Value::Array(vec![Value::from(60_f64), Value::Null]))
24 );
25
26 me.secret("wallet.hidden", "owner-secret")?;
27 me.postulate("wallet.hidden.note", "private")?;
28 assert_eq!(me.read("wallet.hidden.note"), Some(&Value::from("private")));
29 assert_eq!(me.read_public("wallet.hidden.note"), None);
30
31 me.remove("wallet.expenses")?;
32 assert_eq!(me.read("wallet.expenses"), None);
33
34 println!("operator memories = {}", me.memories().len());
35 Ok(())
36}
37
38fn main() -> Result<(), Box<dyn std::error::Error>> {
39 run()
40}
41
42#[test]
43fn example_runs() {
44 run().unwrap();
45}