toolproof 0.19.1

Standalone test suite for CLI tools and applications
use std::collections::{BTreeMap, HashMap};

use tokio::sync::OnceCell;

use crate::{
    definitions::{
        browser::BrowserTester, ToolproofAssertion, ToolproofInstruction, ToolproofRetriever,
    },
    options::ToolproofContext,
    segments::ToolproofSegments,
    ToolproofMacroFile, ToolproofTestFile,
};

pub struct Universe<'u> {
    pub browser: OnceCell<BrowserTester>,
    pub tests: BTreeMap<String, ToolproofTestFile>,
    pub macros: HashMap<ToolproofSegments, ToolproofMacroFile>,
    pub macro_comparisons: Vec<String>,
    pub instructions: HashMap<ToolproofSegments, &'u dyn ToolproofInstruction>,
    pub instruction_comparisons: Vec<String>,
    pub retrievers: HashMap<ToolproofSegments, &'u dyn ToolproofRetriever>,
    pub retriever_comparisons: Vec<String>,
    pub assertions: HashMap<ToolproofSegments, &'u dyn ToolproofAssertion>,
    pub assertion_comparisons: Vec<String>,
    pub ctx: ToolproofContext,
}