pub fn heading(heading: HashMap<String, String>) -> TestStrat {
        let mut outcome = None;
        let mut action = None;
        let mut expect = None;

        for (strat, result) in heading.iter() {
            match strat {
                o if o == "outcome" => outcome = Some(Outcome::parse(result)),
                a if a == "action" => action = Some(Action::parse(result)),
                e if e == "expect" => {
                    // TODO: implement expectations.
                    // println!("Warning, expectations are not implemented");
                    // expect =
                    // {
                    //     let (ast, _symbols) =
                    //         compiler::parse(Source::source(result))
                    //             .expect("Could not parse result field");

                    //     use construct::tree::{
                    //         Base,
                    //         AST,
                    //     };

                    //     if let AST::Base(Base::Block(ref b)) = ast.item {
                    //         if let AST::Base(Base::Lit(ref l)) =
                    //             b.get(0).expect("Expected an
                    // expression").item         {
                    //             assert_eq!(l, )
                    //         }
                    //     }

                    //     dbg!(ast);
                    // }
                    // todo!();
                }
                invalid => {
                    println!("invalid: '{}'", invalid);
                    panic!("invalid strat in strat heading");
                }
            }
        }

        TestStrat {
            outcome: outcome.expect("no outcome provided"),
            action: action.expect("no action provided"),
            expect,
        }
    }
Uses a heading to construct a test strat
passerine/tests/fledgling.rs