From 5453572fc03730f88e49147415256a9c8ba7d7fd Mon Sep 17 00:00:00 2001 From: rvcas Date: Mon, 27 Mar 2023 15:21:40 -0400 Subject: [PATCH] test(gen_uplc::scope): common ancestor method Co-authored-by: Kasey White --- crates/aiken-lang/src/gen_uplc/scope.rs | 64 ++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/crates/aiken-lang/src/gen_uplc/scope.rs b/crates/aiken-lang/src/gen_uplc/scope.rs index 664e35fd..61a0ca88 100644 --- a/crates/aiken-lang/src/gen_uplc/scope.rs +++ b/crates/aiken-lang/src/gen_uplc/scope.rs @@ -1,5 +1,5 @@ #[derive(Debug, Clone, Default, Eq, PartialEq)] -pub struct Scope(Vec); +pub struct Scope(pub(self) Vec); impl Scope { pub fn push(&mut self, value: u64) { @@ -70,3 +70,65 @@ impl Scope { Scope::default() } } + +#[cfg(test)] +mod test { + use pretty_assertions::assert_eq; + + use super::Scope; + + #[test] + fn common_ancestor_equal_vecs() { + let ancestor = Scope(vec![1, 2, 3, 4, 5, 6]); + + let decendant = Scope(vec![1, 2, 3, 4, 5, 6]); + + let result = ancestor.common_ancestor(&decendant); + + assert_eq!(result, Scope(vec![1, 2, 3, 4, 5, 6])) + } + + #[test] + fn common_ancestor_equal_ancestor() { + let ancestor = Scope(vec![1, 2, 3, 4]); + + let decendant = Scope(vec![1, 2, 3, 4, 5, 6]); + + let result = ancestor.common_ancestor(&decendant); + + assert_eq!(result, Scope(vec![1, 2, 3, 4])); + } + + #[test] + fn common_ancestor_not_subset() { + let ancestor = Scope(vec![1, 2, 3, 4, 5]); + + let descendant = Scope(vec![1, 2, 3, 7, 8]); + + let result = ancestor.common_ancestor(&descendant); + + assert_eq!(result, Scope(vec![1, 2, 3])); + } + + #[test] + fn common_ancestor_not_found() { + let ancestor = Scope(vec![1, 2, 3, 4, 5, 6]); + + let descendant = Scope(vec![4, 5, 6]); + + let result = ancestor.common_ancestor(&descendant); + + assert_eq!(result, Scope::default()); + } + + #[test] + fn common_ancestor_no_shared_values() { + let ancestor = Scope(vec![1, 2, 3]); + + let descendant = Scope(vec![4, 5, 6]); + + let result = ancestor.common_ancestor(&descendant); + + assert_eq!(result, Scope::default()); + } +}