diff --git a/src/steiner_tree.rs b/src/steiner_tree.rs
index c8984dd..6e2443d 100644
--- a/src/steiner_tree.rs
+++ b/src/steiner_tree.rs
@@ -17,7 +17,7 @@ use {
pub struct SteinerTree {
weight: u64,
goals: Vec< TypeTerm >,
- edges: Vec< MorphismType >,
+ pub edges: Vec< MorphismType >,
}
impl SteinerTree {
diff --git a/src/test/curry.rs b/src/test/curry.rs
index c728a37..a814ab2 100644
--- a/src/test/curry.rs
+++ b/src/test/curry.rs
@@ -1,12 +1,12 @@
use {
- crate::{dict::*}
+ crate::{dict::*, parser::*}
};
//<<<<>>>><<>><><<>><<<*>>><<>><><<>><<<<>>>>\\
#[test]
fn test_curry() {
- let mut dict = TypeDict::new();
+ let mut dict = BimapTypeDict::new();
assert_eq!(
dict.parse("").unwrap().curry(),
@@ -33,7 +33,7 @@ fn test_curry() {
#[test]
fn test_decurry() {
- let mut dict = TypeDict::new();
+ let mut dict = BimapTypeDict::new();
assert_eq!(
dict.parse("< C>").unwrap().decurry(),
@@ -47,7 +47,7 @@ fn test_decurry() {
dict.parse("<<<<<<<<< C> D> E> F> G> H> I> J> K>").unwrap().decurry(),
dict.parse("").unwrap()
);
-
+
assert_eq!(
dict.parse("< C>").unwrap().decurry(),
dict.parse("").unwrap()
diff --git a/src/test/lnf.rs b/src/test/lnf.rs
index 1c81a55..4b2a7c2 100644
--- a/src/test/lnf.rs
+++ b/src/test/lnf.rs
@@ -1,8 +1,8 @@
-use crate::dict::TypeDict;
+use crate::{dict::{BimapTypeDict}, parser::*};
#[test]
fn test_flat() {
- let mut dict = TypeDict::new();
+ let mut dict = BimapTypeDict::new();
assert!( dict.parse("A").expect("parse error").is_flat() );
assert!( dict.parse("10").expect("parse error").is_flat() );
@@ -17,7 +17,7 @@ fn test_flat() {
#[test]
fn test_normalize() {
- let mut dict = TypeDict::new();
+ let mut dict = BimapTypeDict::new();
assert_eq!(
dict.parse("A~B~C").expect("parse error").normalize(),
@@ -54,4 +54,3 @@ fn test_normalize() {
);
}
-
diff --git a/src/test/morphism.rs b/src/test/morphism.rs
index b908101..309d881 100644
--- a/src/test/morphism.rs
+++ b/src/test/morphism.rs
@@ -1,5 +1,5 @@
use {
- crate::{dict::*, morphism::*, steiner_tree::*, TypeTerm}
+ crate::{dict::*, parser::*, unparser::*, morphism::*, steiner_tree::*, TypeTerm}
};
//<<<<>>>><<>><><<>><<<*>>><<>><><<>><<<<>>>>\\
@@ -27,8 +27,8 @@ impl Morphism for DummyMorphism {
}
}
-fn morphism_test_setup() -> ( TypeDict, MorphismBase ) {
- let mut dict = TypeDict::new();
+fn morphism_test_setup() -> ( BimapTypeDict, MorphismBase ) {
+ let mut dict = BimapTypeDict::new();
let mut base = MorphismBase::::new( dict.add_typename("Seq".into()) );
dict.add_varname("Radix".into());
@@ -118,7 +118,7 @@ fn test_morphism_path() {
Some((
DummyMorphism(MorphismType{
src_type: dict.parse(" ~ Char>").unwrap(),
- dst_type: dict.parse(" ~ ℤ_2^64 ~ machine.UInt64>").unwrap()
+ dst_type: dict.parse(" ~ ℤ_2^64 ~ machine.UInt64>").unwrap()
}),
dict.parse("Symbol ~ ℕ ~ ~ >").unwrap(),
@@ -145,12 +145,12 @@ fn test_steiner_tree() {
// destination reprs
vec![
dict.parse("ℕ ~ ~ ~ Char>").unwrap(),
- dict.parse("ℕ ~ ~ ~ Char>").unwrap(),
+ dict.parse("ℕ ~ ~ ~ Char>").unwrap(),
dict.parse("ℕ ~ ~ ~ Char>").unwrap()
]
);
- if let Some(solution) = steiner_tree_problem.solve_bfs( &dict, &base ) {
+ if let Some(solution) = steiner_tree_problem.solve_bfs( &base ) {
for e in solution.edges.iter() {
eprintln!(" :: {}\n--> {}", dict.unparse(&e.src_type), dict.unparse(&e.dst_type));
}
@@ -158,4 +158,3 @@ fn test_steiner_tree() {
eprintln!("no solution");
}
}
-
diff --git a/src/test/parser.rs b/src/test/parser.rs
index 1166229..f650ae3 100644
--- a/src/test/parser.rs
+++ b/src/test/parser.rs
@@ -7,7 +7,7 @@ use {
#[test]
fn test_parser_id() {
- let mut dict = TypeDict::new();
+ let mut dict = BimapTypeDict::new();
dict.add_varname("T".into());
@@ -26,7 +26,7 @@ fn test_parser_id() {
fn test_parser_num() {
assert_eq!(
Ok(TypeTerm::Num(1234)),
- TypeDict::new().parse("1234")
+ BimapTypeDict::new().parse("1234")
);
}
@@ -34,21 +34,21 @@ fn test_parser_num() {
fn test_parser_char() {
assert_eq!(
Ok(TypeTerm::Char('x')),
- TypeDict::new().parse("'x'")
+ BimapTypeDict::new().parse("'x'")
);
}
#[test]
fn test_parser_app() {
assert_eq!(
- TypeDict::new().parse(""),
+ BimapTypeDict::new().parse(""),
Ok(TypeTerm::App(vec![
TypeTerm::TypeID(TypeID::Fun(0)),
TypeTerm::TypeID(TypeID::Fun(1)),
]))
);
assert_eq!(
- TypeDict::new().parse(""),
+ BimapTypeDict::new().parse(""),
Ok(TypeTerm::App(vec![
TypeTerm::TypeID(TypeID::Fun(0)),
TypeTerm::TypeID(TypeID::Fun(1)),
@@ -60,7 +60,7 @@ fn test_parser_app() {
#[test]
fn test_parser_unexpected_close() {
assert_eq!(
- TypeDict::new().parse(">"),
+ BimapTypeDict::new().parse(">"),
Err(ParseError::UnexpectedClose)
);
}
@@ -68,7 +68,7 @@ fn test_parser_unexpected_close() {
#[test]
fn test_parser_unexpected_token() {
assert_eq!(
- TypeDict::new().parse("A B"),
+ BimapTypeDict::new().parse("A B"),
Err(ParseError::UnexpectedToken)
);
}
@@ -76,14 +76,14 @@ fn test_parser_unexpected_token() {
#[test]
fn test_parser_ladder() {
assert_eq!(
- TypeDict::new().parse("A~B"),
+ BimapTypeDict::new().parse("A~B"),
Ok(TypeTerm::Ladder(vec![
TypeTerm::TypeID(TypeID::Fun(0)),
TypeTerm::TypeID(TypeID::Fun(1)),
]))
);
assert_eq!(
- TypeDict::new().parse("A~B~C"),
+ BimapTypeDict::new().parse("A~B~C"),
Ok(TypeTerm::Ladder(vec![
TypeTerm::TypeID(TypeID::Fun(0)),
TypeTerm::TypeID(TypeID::Fun(1)),
@@ -95,7 +95,7 @@ fn test_parser_ladder() {
#[test]
fn test_parser_ladder_outside() {
assert_eq!(
- TypeDict::new().parse("~C"),
+ BimapTypeDict::new().parse("~C"),
Ok(TypeTerm::Ladder(vec![
TypeTerm::App(vec![
TypeTerm::TypeID(TypeID::Fun(0)),
@@ -103,13 +103,13 @@ fn test_parser_ladder_outside() {
]),
TypeTerm::TypeID(TypeID::Fun(2)),
]))
- );
+ );
}
#[test]
fn test_parser_ladder_inside() {
assert_eq!(
- TypeDict::new().parse(""),
+ BimapTypeDict::new().parse(""),
Ok(TypeTerm::App(vec![
TypeTerm::TypeID(TypeID::Fun(0)),
TypeTerm::Ladder(vec![
@@ -117,13 +117,13 @@ fn test_parser_ladder_inside() {
TypeTerm::TypeID(TypeID::Fun(2)),
])
]))
- );
+ );
}
#[test]
fn test_parser_ladder_between() {
assert_eq!(
- TypeDict::new().parse(">"),
+ BimapTypeDict::new().parse(">"),
Ok(TypeTerm::App(vec![
TypeTerm::TypeID(TypeID::Fun(0)),
TypeTerm::Ladder(vec![
@@ -134,14 +134,14 @@ fn test_parser_ladder_between() {
])
])
]))
- );
+ );
}
#[test]
fn test_parser_ladder_large() {
assert_eq!(
- TypeDict::new().parse(
+ BimapTypeDict::new().parse(
"
~
@@ -203,4 +203,3 @@ fn test_parser_ladder_large() {
)
);
}
-
diff --git a/src/test/pnf.rs b/src/test/pnf.rs
index e668849..a1d5a33 100644
--- a/src/test/pnf.rs
+++ b/src/test/pnf.rs
@@ -1,8 +1,8 @@
-use crate::dict::TypeDict;
+use crate::{dict::BimapTypeDict, parser::*};
#[test]
fn test_param_normalize() {
- let mut dict = TypeDict::new();
+ let mut dict = BimapTypeDict::new();
assert_eq!(
dict.parse("A~B~C").expect("parse error"),
@@ -56,4 +56,3 @@ fn test_param_normalize() {
.param_normalize(),
);
}
-
diff --git a/src/test/substitution.rs b/src/test/substitution.rs
index 7959b08..e8906b9 100644
--- a/src/test/substitution.rs
+++ b/src/test/substitution.rs
@@ -1,6 +1,6 @@
use {
- crate::{dict::*, term::*},
+ crate::{dict::*, term::*, parser::*, unparser::*},
std::iter::FromIterator
};
@@ -8,7 +8,7 @@ use {
#[test]
fn test_subst() {
- let mut dict = TypeDict::new();
+ let mut dict = BimapTypeDict::new();
let mut σ = std::collections::HashMap::new();
@@ -29,4 +29,3 @@ fn test_subst() {
dict.parse(">").unwrap()
);
}
-
diff --git a/src/test/subtype.rs b/src/test/subtype.rs
index 08cc5c7..c993063 100644
--- a/src/test/subtype.rs
+++ b/src/test/subtype.rs
@@ -1,8 +1,8 @@
-use crate::dict::TypeDict;
+use crate::{dict::BimapTypeDict, parser::*, unparser::*};
#[test]
fn test_semantic_subtype() {
- let mut dict = TypeDict::new();
+ let mut dict = BimapTypeDict::new();
assert_eq!(
dict.parse("A~B~C").expect("parse error")
@@ -19,11 +19,11 @@ fn test_semantic_subtype() {
),
Some((0, dict.parse("A~B1~C1").expect("parse errror")))
);
-
+
assert_eq!(
dict.parse("A~B~C1").expect("parse error")
.is_semantic_subtype_of(
- &dict.parse("B~C2").expect("parse errror")
+ &dict.parse("B~C2").expect("parse errror")
),
Some((1, dict.parse("B~C1").expect("parse errror")))
);
@@ -31,12 +31,12 @@ fn test_semantic_subtype() {
#[test]
fn test_syntactic_subtype() {
- let mut dict = TypeDict::new();
+ let mut dict = BimapTypeDict::new();
assert_eq!(
dict.parse("A~B~C").expect("parse error")
.is_syntactic_subtype_of(
- &dict.parse("A~B~C").expect("parse errror")
+ &dict.parse("A~B~C").expect("parse errror")
),
Ok(0)
);
@@ -44,7 +44,7 @@ fn test_syntactic_subtype() {
assert_eq!(
dict.parse("A~B~C").expect("parse error")
.is_syntactic_subtype_of(
- &dict.parse("B~C").expect("parse errror")
+ &dict.parse("B~C").expect("parse errror")
),
Ok(1)
);
@@ -52,7 +52,7 @@ fn test_syntactic_subtype() {
assert_eq!(
dict.parse("A~B~C~D~E").expect("parse error")
.is_syntactic_subtype_of(
- &dict.parse("C~D").expect("parse errror")
+ &dict.parse("C~D").expect("parse errror")
),
Ok(2)
);
@@ -60,7 +60,7 @@ fn test_syntactic_subtype() {
assert_eq!(
dict.parse("A~B~C~D~E").expect("parse error")
.is_syntactic_subtype_of(
- &dict.parse("C~G").expect("parse errror")
+ &dict.parse("C~G").expect("parse errror")
),
Err((2,3))
);
@@ -68,7 +68,7 @@ fn test_syntactic_subtype() {
assert_eq!(
dict.parse("A~B~C~D~E").expect("parse error")
.is_syntactic_subtype_of(
- &dict.parse("G~F~K").expect("parse errror")
+ &dict.parse("G~F~K").expect("parse errror")
),
Err((0,0))
);
@@ -94,4 +94,3 @@ fn test_syntactic_subtype() {
Ok(4)
);
}
-
diff --git a/src/test/unification.rs b/src/test/unification.rs
index 6c55a80..56e88e2 100644
--- a/src/test/unification.rs
+++ b/src/test/unification.rs
@@ -1,13 +1,13 @@
use {
- crate::{dict::*, term::*, unification::*},
+ crate::{dict::*, parser::*, unparser::*, term::*, unification::*},
std::iter::FromIterator
};
//<<<<>>>><<>><><<>><<<*>>><<>><><<>><<<<>>>>\\
fn test_unify(ts1: &str, ts2: &str, expect_unificator: bool) {
- let mut dict = TypeDict::new();
+ let mut dict = BimapTypeDict::new();
dict.add_varname(String::from("T"));
dict.add_varname(String::from("U"));
dict.add_varname(String::from("V"));
@@ -33,7 +33,7 @@ fn test_unify(ts1: &str, ts2: &str, expect_unificator: bool) {
#[test]
fn test_unification_error() {
- let mut dict = TypeDict::new();
+ let mut dict = BimapTypeDict::new();
dict.add_varname(String::from("T"));
assert_eq!(
@@ -89,7 +89,7 @@ fn test_unification() {
true
);
- let mut dict = TypeDict::new();
+ let mut dict = BimapTypeDict::new();
dict.add_varname(String::from("T"));
dict.add_varname(String::from("U"));
@@ -129,10 +129,9 @@ fn test_unification() {
);
}
-
#[test]
fn test_subtype_unification() {
- let mut dict = TypeDict::new();
+ let mut dict = BimapTypeDict::new();
dict.add_varname(String::from("T"));
dict.add_varname(String::from("U"));