diff --git a/src/rsprocess/assert.rs b/src/rsprocess/assert/dsl.rs similarity index 93% rename from src/rsprocess/assert.rs rename to src/rsprocess/assert/dsl.rs index 717c470..9a74573 100644 --- a/src/rsprocess/assert.rs +++ b/src/rsprocess/assert/dsl.rs @@ -1,6 +1,10 @@ -// If changing IntegerType in assert.rs, also change from Num to another -// similar parser with different return type in grammar.lalrpop in -// AssertExpression +use std::collections::HashMap; + +use super::super::{structure, translator, graph}; + +/// If changing IntegerType in assert.rs, also change from Num to another +/// similar parser with different return type in grammar.lalrpop in +/// AssertExpression type IntegerType = i64; #[derive(Debug, Clone)] @@ -24,16 +28,15 @@ pub enum Variable { Special(S) } -trait SpecialVariables: Display + std::fmt::Debug + Sized + Eq + Copy - + std::hash::Hash +/// Trait needed for special variables. +trait SpecialVariables: std::fmt::Display + std::fmt::Debug + Sized + Eq + + Copy + std::hash::Hash { fn type_of(&self) -> AssertionTypes; fn type_qualified(&self, q: &Qualifier) -> Result; fn new_context(input: HashMap) -> HashMap; fn correct_type(&self, other: &AssertReturnValue) -> bool; - // fn correct_type_qualified(&self, q: &Qualifier, other: &AssertReturnValue) - // -> bool; } #[derive(Debug, Clone)] @@ -41,9 +44,9 @@ pub enum Expression { True, False, Integer(IntegerType), - Label(Box), - Set(super::structure::RSset), - Element(super::translator::IdType), + Label(Box), + Set(structure::RSset), + Element(translator::IdType), String(String), Var(Variable), @@ -153,35 +156,16 @@ pub enum AssertReturnValue { Boolean(bool), Integer(IntegerType), String(String), - Label(super::structure::RSlabel), - Set(super::structure::RSset), - Element(super::translator::IdType), + Label(structure::RSlabel), + Set(structure::RSset), + Element(translator::IdType), Node(petgraph::graph::NodeIndex), Edge(petgraph::graph::EdgeIndex), Neighbours(petgraph::graph::NodeIndex), - System(super::structure::RSsystem), - Context(super::structure::RSprocess), + System(structure::RSsystem), + Context(structure::RSprocess), } -impl AssertReturnValue { - pub fn assign_qualified(&mut self, q: Qualifier, val: AssertReturnValue) - -> Result<(), String> { - match (self, q, val) { - (Self::Label(l), - Qualifier::Restricted(q), - AssertReturnValue::Set(set)) => { - *q.referenced_mut(l) = set; - Ok(()) - }, - (s, q, val) => { - Err(format!("Cannot assign {val} to {s} with qualifier {q}")) - } - } - } -} - - - // ----------------------------------------------------------------------------- // Implementations for types // ----------------------------------------------------------------------------- @@ -189,8 +173,8 @@ impl AssertReturnValue { impl QualifierRestricted { pub(super) fn referenced_mut<'a>( &self, - label: &'a mut super::structure::RSlabel, - ) -> &'a mut super::structure::RSset { + label: &'a mut structure::RSlabel, + ) -> &'a mut structure::RSset { match self { Self::Entities => {&mut label.available_entities}, Self::Context => {&mut label.context}, @@ -204,8 +188,8 @@ impl QualifierRestricted { pub(super) fn referenced<'a>( &self, - label: &'a super::structure::RSlabel, - ) -> &'a super::structure::RSset { + label: &'a structure::RSlabel, + ) -> &'a structure::RSset { match self { Self::Entities => {&label.available_entities}, Self::Context => {&label.context}, @@ -219,7 +203,7 @@ impl QualifierRestricted { pub(super) fn get( &self, - label: &super::structure::RSlabel, + label: &structure::RSlabel, ) -> AssertReturnValue { AssertReturnValue::Set(self.referenced(label).clone()) } @@ -228,7 +212,7 @@ impl QualifierRestricted { impl QualifierLabel { pub(super) fn get( &self, - l: &super::structure::RSlabel, + l: &structure::RSlabel, ) -> AssertReturnValue { match self { QualifierLabel::AvailableEntities => { @@ -248,7 +232,7 @@ impl QualifierLabel { impl QualifierSystem { pub(super) fn get( &self, - l: &super::structure::RSsystem, + l: &structure::RSsystem, ) -> AssertReturnValue { match self { Self::Context => { @@ -484,13 +468,28 @@ impl Binary { } } +impl AssertReturnValue { + pub fn assign_qualified(&mut self, q: Qualifier, val: AssertReturnValue) + -> Result<(), String> { + match (self, q, val) { + (Self::Label(l), + Qualifier::Restricted(q), + AssertReturnValue::Set(set)) => { + *q.referenced_mut(l) = set; + Ok(()) + }, + (s, q, val) => { + Err(format!("Cannot assign {val} to {s} with qualifier {q}")) + } + } + } +} + // ----------------------------------------------------------------------------- -use std::collections::HashMap; -use std::fmt::{self, Display}; - -use petgraph::visit::EdgeRef; +// Typechecking and Evaluation +// ----------------------------------------------------------------------------- struct TypeContext { data: HashMap, @@ -728,8 +727,8 @@ impl AssertReturnValue { fn unary( self, u: &Unary, - translator: &mut super::translator::Translator, - graph: &super::graph::RSgraph, + translator: &mut translator::Translator, + graph: &graph::RSgraph, ) -> Result { match (self, u) { (AssertReturnValue::Boolean(b), Unary::Not) => { @@ -804,7 +803,7 @@ impl AssertReturnValue { self, b: &Binary, other: AssertReturnValue, - _translator: &mut super::translator::Translator + _translator: &mut translator::Translator ) -> Result { use AssertReturnValue::*; Ok(match (b, self, other) { @@ -1002,8 +1001,8 @@ where S: SpecialVariables { fn execute( tree: &Tree, c: &mut Context, - translator: &mut super::translator::Translator, - graph: &super::graph::RSgraph, + translator: &mut translator::Translator, + graph: &graph::RSgraph, ) -> Result, String> where S: SpecialVariables { match tree { @@ -1056,10 +1055,12 @@ type RangeIterator = std::vec::IntoIter; fn range_into_iter( range: &Range, c: &mut Context, - translator: &mut super::translator::Translator, - graph: &super::graph::RSgraph, + translator: &mut translator::Translator, + graph: &graph::RSgraph, ) -> Result where S: SpecialVariables { + use petgraph::visit::EdgeRef; + match range { Range::IterateOverSet(exp) => { let val = execute_exp(exp, c, translator, graph)?; @@ -1100,8 +1101,8 @@ where S: SpecialVariables { fn execute_exp( exp: &Expression, c: &Context, - translator: &mut super::translator::Translator, - graph: &super::graph::RSgraph, + translator: &mut translator::Translator, + graph: &graph::RSgraph, ) -> Result where S: SpecialVariables { match exp { @@ -1143,7 +1144,7 @@ pub enum EdgeRelablerInput { #[derive(Debug, Clone)] pub enum EdgeRelablerInputValues { - Label(super::structure::RSlabel), + Label(structure::RSlabel), Edge(petgraph::graph::EdgeIndex), } @@ -1184,20 +1185,10 @@ impl SpecialVariables for EdgeRelablerInput { (_, _) => false } } - - // fn correct_type_qualified(&self, q: &Qualifier, other: &AssertReturnValue) - // -> bool { - // match (self, q, other) { - // (Self::Label, Qualifier::Label(_), AssertReturnValue::Set(_)) | - // (Self::Label, Qualifier::Restricted(_), AssertReturnValue::Set(_)) - // => true, - // (_, _, _) => false - // } - // } } -impl Display for EdgeRelablerInput { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { +impl std::fmt::Display for EdgeRelablerInput { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Self::Label => write!(f, "label"), Self::Edge => write!(f, "edge"), @@ -1206,9 +1197,6 @@ impl Display for EdgeRelablerInput { } - - - impl RSassert { pub fn typecheck(&self) -> Result<(), String> { let mut context = TypeContext::new(); @@ -1236,9 +1224,9 @@ impl RSassert { pub fn execute( &self, - graph: &super::graph::RSgraph, - edge: &::EdgeId, - translator: &mut super::translator::Translator, + graph: &graph::RSgraph, + edge: &::EdgeId, + translator: &mut translator::Translator, ) -> Result { let label = graph.edge_weight(*edge).unwrap(); @@ -1257,6 +1245,4 @@ impl RSassert { } } -include!("assert_fmt.rs"); - -include!("assert_tests.rs"); +include!("fmt.rs"); diff --git a/src/rsprocess/assert_fmt.rs b/src/rsprocess/assert/fmt.rs similarity index 95% rename from src/rsprocess/assert_fmt.rs rename to src/rsprocess/assert/fmt.rs index 06ec837..b07bd62 100644 --- a/src/rsprocess/assert_fmt.rs +++ b/src/rsprocess/assert/fmt.rs @@ -1,14 +1,15 @@ // ----------------------------------------------------------------------------- // Display Implementation for all types // ----------------------------------------------------------------------------- +use std::fmt; -impl fmt::Display for RSassert where S: Display { +impl fmt::Display for RSassert where S: fmt::Display { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "label {{\n{}\n}}", self.tree) } } -impl fmt::Display for Tree where S: Display { +impl fmt::Display for Tree where S: fmt::Display { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Self::Concat(t1, t2) => {write!(f, "{t1};\n{t2}")}, @@ -29,7 +30,7 @@ impl fmt::Display for Tree where S: Display { } } -impl fmt::Display for Variable where S: Display { +impl fmt::Display for Variable where S: fmt::Display { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Self::Special(s) => {write!(f, "{s}")}, @@ -38,7 +39,7 @@ impl fmt::Display for Variable where S: Display { } } -impl fmt::Display for Expression where S: Display { +impl fmt::Display for Expression where S: fmt::Display { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Self::True => {write!(f, "True")}, @@ -73,7 +74,7 @@ impl fmt::Display for Expression where S: Display { } } -impl fmt::Display for Range where S: Display { +impl fmt::Display for Range where S: fmt::Display { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Self::IterateOverSet(exp) => {write!(f, "{{{exp}}}")}, diff --git a/src/rsprocess/assert/mod.rs b/src/rsprocess/assert/mod.rs new file mode 100644 index 0000000..ca87ae8 --- /dev/null +++ b/src/rsprocess/assert/mod.rs @@ -0,0 +1,4 @@ +pub mod dsl; + +#[cfg(test)] +mod tests; diff --git a/src/rsprocess/assert_tests.rs b/src/rsprocess/assert/tests.rs similarity index 81% rename from src/rsprocess/assert_tests.rs rename to src/rsprocess/assert/tests.rs index 4a95e97..1a38d27 100644 --- a/src/rsprocess/assert_tests.rs +++ b/src/rsprocess/assert/tests.rs @@ -2,30 +2,33 @@ // Testing // ----------------------------------------------------------------------------- +use super::dsl::*; +use super::super::{translator, structure}; + #[test] fn assert_tycheck_true() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert {tree: Tree::Return(Box::new(Expression::True))}; assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Boolean(true)))); } #[test] fn assert_tycheck_concat_1() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -39,21 +42,21 @@ fn assert_tycheck_concat_1() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Boolean(true)))); } #[test] fn assert_tycheck_concat_2() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -67,21 +70,21 @@ fn assert_tycheck_concat_2() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Boolean(true)))); } #[test] fn assert_tycheck_return_1() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -92,14 +95,14 @@ fn assert_tycheck_return_1() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Boolean(true)))); } @@ -136,8 +139,8 @@ fn assert_tycheck_return_incompatible_2() { #[test] fn assert_tycheck_return_2() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -157,22 +160,22 @@ fn assert_tycheck_return_2() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Boolean(true)))); } #[test] fn assert_tycheck_return_3() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -192,21 +195,21 @@ fn assert_tycheck_return_3() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Boolean(false)))); } #[test] fn assert_tycheck_if_1() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -228,21 +231,21 @@ fn assert_tycheck_if_1() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Boolean(true)))); } #[test] fn assert_tycheck_if_2() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -263,21 +266,21 @@ fn assert_tycheck_if_2() { }; assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Boolean(false)))); } #[test] fn assert_tycheck_if_3() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -299,14 +302,14 @@ fn assert_tycheck_if_3() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Boolean(true)))); } @@ -334,8 +337,8 @@ fn assert_tycheck_if_4() { #[test] fn assert_tycheck_if_else_1() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -360,21 +363,21 @@ fn assert_tycheck_if_else_1() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Boolean(true)))); } #[test] fn assert_tycheck_if_else_2() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -399,14 +402,14 @@ fn assert_tycheck_if_else_2() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Boolean(false)))); } @@ -474,8 +477,8 @@ fn assert_tycheck_assignment_1() { #[test] fn assert_tycheck_assignment_2() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -498,21 +501,21 @@ fn assert_tycheck_assignment_2() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Boolean(true)))); } #[test] fn assert_tycheck_assignment_3() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -537,14 +540,14 @@ fn assert_tycheck_assignment_3() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Boolean(false)))); } @@ -575,8 +578,8 @@ fn assert_tycheck_assignment_4() { #[test] fn assert_tycheck_assignment_5() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -602,21 +605,21 @@ fn assert_tycheck_assignment_5() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Integer(10)))); } #[test] fn assert_tycheck_assignment_6() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -649,21 +652,21 @@ fn assert_tycheck_assignment_6() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Integer(10)))); } #[test] fn assert_tycheck_assignment_7() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -694,21 +697,21 @@ fn assert_tycheck_assignment_7() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Boolean(true)))); } #[test] fn assert_tycheck_assignment_8() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -743,21 +746,21 @@ fn assert_tycheck_assignment_8() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Integer(10)))); } #[test] fn assert_tycheck_assignment_9() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -790,21 +793,21 @@ fn assert_tycheck_assignment_9() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Integer(10)))); } #[test] fn assert_tycheck_assignment_10() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -839,22 +842,22 @@ fn assert_tycheck_assignment_10() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Integer(10)))); } #[test] fn assert_tycheck_for_1() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel, RSset}; + use translator::Translator; + use structure::{RSsystem, RSlabel, RSset}; let tree = RSassert { tree: Tree::Concat( @@ -888,21 +891,21 @@ fn assert_tycheck_for_1() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(tree.execute(&graph, &edge, &mut translator).is_err()); + assert!(tree.execute(&graph, &edge, &mut tr).is_err()); } #[test] fn assert_tycheck_for_2() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel, RSset}; + use translator::Translator; + use structure::{RSsystem, RSlabel, RSset}; let tree = RSassert { tree: Tree::Concat( @@ -938,23 +941,23 @@ fn assert_tycheck_for_2() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); - translator.encode("one"); - translator.encode("two"); + let mut tr = Translator::new(); + tr.encode("one"); + tr.encode("two"); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Set(_)))); } #[test] fn assert_tycheck_for_3() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel, RSset}; + use translator::Translator; + use structure::{RSsystem, RSlabel, RSset}; let tree = RSassert { tree: Tree::Concat( @@ -1004,23 +1007,23 @@ fn assert_tycheck_for_3() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); - translator.encode("one"); - translator.encode("two"); + let mut tr = Translator::new(); + tr.encode("one"); + tr.encode("two"); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Set(_)))); } #[test] fn assert_tycheck_for_4() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel, RSset}; + use translator::Translator; + use structure::{RSsystem, RSlabel, RSset}; let tree = RSassert { tree: Tree::Concat( @@ -1070,24 +1073,24 @@ fn assert_tycheck_for_4() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); - translator.encode("one"); - translator.encode("two"); - translator.encode("three"); + let mut tr = Translator::new(); + tr.encode("one"); + tr.encode("two"); + tr.encode("three"); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Element(_)))); } #[test] fn assert_tycheck_for_5() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel, RSset}; + use translator::Translator; + use structure::{RSsystem, RSlabel, RSset}; let tree = RSassert { tree: Tree::Concat( @@ -1150,24 +1153,24 @@ fn assert_tycheck_for_5() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); - translator.encode("one"); - translator.encode("two"); - translator.encode("three"); + let mut tr = Translator::new(); + tr.encode("one"); + tr.encode("two"); + tr.encode("three"); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Integer(3)))); } #[test] fn assert_tycheck_for_6() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel, RSset}; + use translator::Translator; + use structure::{RSsystem, RSlabel, RSset}; let tree = RSassert { tree: Tree::Concat( @@ -1240,10 +1243,10 @@ fn assert_tycheck_for_6() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); - translator.encode("one"); - translator.encode("two"); - translator.encode("three"); + let mut tr = Translator::new(); + tr.encode("one"); + tr.encode("two"); + tr.encode("three"); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); @@ -1251,14 +1254,14 @@ fn assert_tycheck_for_6() { let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Integer(2)))); } #[test] fn assert_tycheck_for_7() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -1295,7 +1298,7 @@ fn assert_tycheck_for_7() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); @@ -1303,14 +1306,14 @@ fn assert_tycheck_for_7() { let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Integer(0)))); } #[test] fn assert_tycheck_for_8() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel}; + use translator::Translator; + use structure::{RSsystem, RSlabel}; let tree = RSassert { tree: Tree::Concat( @@ -1361,18 +1364,18 @@ fn assert_tycheck_for_8() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); let node_2 = graph.add_node(RSsystem::new()); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Integer(1)))); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); @@ -1381,14 +1384,14 @@ fn assert_tycheck_for_8() { let node_3 = graph.add_node(RSsystem::new()); graph.add_edge(node_1, node_3, RSlabel::new()); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Integer(2)))); } #[test] fn assert_tycheck_system() { - use super::translator::Translator; - use super::structure::{RSsystem, RSlabel, RSset, RSenvironment, RSprocess}; + use translator::Translator; + use structure::{RSsystem, RSlabel, RSset, RSenvironment, RSprocess}; use std::rc::Rc; let tree = RSassert { @@ -1425,7 +1428,7 @@ fn assert_tycheck_system() { assert!(tree.typecheck().is_ok()); - let mut translator = Translator::new(); + let mut tr = Translator::new(); let mut graph = petgraph::Graph::new(); let node_1 = graph.add_node(RSsystem::new()); @@ -1439,8 +1442,8 @@ fn assert_tycheck_system() { ); let edge = graph.add_edge(node_1, node_2, RSlabel::new()); - println!("{:?}", tree.execute(&graph, &edge, &mut translator)); + println!("{:?}", tree.execute(&graph, &edge, &mut tr)); - assert!(matches!(tree.execute(&graph, &edge, &mut translator), + assert!(matches!(tree.execute(&graph, &edge, &mut tr), Ok(AssertReturnValue::Boolean(true)))); } diff --git a/src/rsprocess/graph.rs b/src/rsprocess/graph.rs index 385fff8..f6b7a77 100644 --- a/src/rsprocess/graph.rs +++ b/src/rsprocess/graph.rs @@ -130,7 +130,7 @@ where &self, edge_map: &super::structure::RSassert, translator: &mut super::translator::Translator - ) -> Result, String>; + ) -> Result, String>; } impl<'a> MapEdges<'a, RSsystem, RSlabel, Directed, u32> @@ -140,7 +140,7 @@ impl<'a> MapEdges<'a, RSsystem, RSlabel, Directed, u32> &self, edge_map: &super::structure::RSassert, translator: &mut super::translator::Translator - )-> Result, String> { + )-> Result, String> { use petgraph::graph::EdgeIndex; let mut g = Graph::with_capacity(self.node_count(), self.edge_count()); diff --git a/src/rsprocess/presets.rs b/src/rsprocess/presets.rs index 155f40e..44284de 100644 --- a/src/rsprocess/presets.rs +++ b/src/rsprocess/presets.rs @@ -503,7 +503,7 @@ pub fn bisimilar( system_b: String ) -> Result { - use super::assert::AssertReturnValue; + use super::structure::assert::AssertReturnValue; let system_b = read_file(system_a.get_translator(), system_b.to_string(), diff --git a/src/rsprocess/structure.rs b/src/rsprocess/structure.rs index e169586..4499a00 100644 --- a/src/rsprocess/structure.rs +++ b/src/rsprocess/structure.rs @@ -620,11 +620,11 @@ impl Hash for RSlabel { // ----------------------------------------------------------------------------- pub type RSassert = - crate::rsprocess::assert::RSassert< - crate::rsprocess::assert::EdgeRelablerInput>; + crate::rsprocess::assert::dsl::RSassert< + crate::rsprocess::assert::dsl::EdgeRelablerInput>; pub mod assert { - pub use crate::rsprocess::assert::*; + pub use crate::rsprocess::assert::dsl::*; }