sim_lib_intent/
cookbook.rs1use sim_kernel::{Expr, Symbol};
4
5use crate::{Origin, intent, validate_intent};
6
7pub fn select_intent_demo() -> Expr {
9 let intent = intent(
10 "select",
11 Origin::human(1),
12 vec![(
13 "targets",
14 Expr::List(vec![Expr::Symbol(Symbol::qualified("pane", "main"))]),
15 )],
16 );
17 debug_assert!(validate_intent(&intent).is_ok());
18 intent
19}
20
21#[cfg(test)]
22mod tests {
23 use super::*;
24 use crate::{intent_kind_of, referenced_targets};
25
26 #[test]
27 fn select_intent_demo_is_valid_and_names_a_target() {
28 let demo = select_intent_demo();
29 validate_intent(&demo).expect("demo Intent validates");
30 assert_eq!(
31 intent_kind_of(&demo).map(|kind| kind.name.to_string()),
32 Some("select".to_owned())
33 );
34 assert_eq!(
35 referenced_targets(&demo),
36 vec![(
37 "targets[0]".to_owned(),
38 Expr::Symbol(Symbol::qualified("pane", "main")),
39 )]
40 );
41 }
42}