From b9bffe5a44ec9a8424226b4d982cffc258c05d36 Mon Sep 17 00:00:00 2001 From: SoniEx2 Date: Sun, 24 Jan 2021 16:17:46 -0300 Subject: Start writing tests (WIP) --- tests/basic_match.rs | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 tests/basic_match.rs (limited to 'tests/basic_match.rs') diff --git a/tests/basic_match.rs b/tests/basic_match.rs new file mode 100644 index 0000000..2f65451 --- /dev/null +++ b/tests/basic_match.rs @@ -0,0 +1,92 @@ +/* + * This file is part of Datafu + * Copyright (C) 2021 Soni L. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +extern crate datafu; + +mod common; + +use common::Value; + +#[test] +fn test_basic_example() { + let tree = Value::M(vec![ + ("foo".into(), Value::U(1)), + ("bar".into(), Value::M(vec![ + ("baz".into(), Value::U(2)), + ].into_iter().collect())), + ].into_iter().collect()); + let pat = datafu::Pattern::::compile("->X:?$dict->Y", None).ok().unwrap(); + let mut matcher = pat.attempt_match(&tree); + let m = matcher.next(); + // TODO + todo!(); + //assert m['X'][0] == 'bar' + //assert m['Y'][0] == 'baz' + //assert m['Y'][1] == 2 +} + +#[test] +fn test_basic_2() { + let tree = Value::M(vec![ + ("projects".into(), Value::M(vec![ + ("385e734a52e13949a7a5c71827f6de920dbfea43".into(), Value::M(vec![ + ("https://soniex2.autistic.space/git-repos/ganarchy.git".into(), Value::M(vec![ + ("HEAD".into(), Value::M(vec![ + ("active".into(), Value::B(true)), + ].into_iter().collect())), + ].into_iter().collect())), + ].into_iter().collect())), + ].into_iter().collect())), + ].into_iter().collect()); + let pat = datafu::Pattern::::compile("->'projects':?$d->P/[0-9a-fA-F]{40}|[0-9a-fA-F]{64}/?:?$d->U:?$d->B", None).ok().unwrap(); + let mut matcher = pat.attempt_match(&tree); + let m = matcher.next(); + // TODO + todo!(); + //assert m['P'][0] == "385e734a52e13949a7a5c71827f6de920dbfea43" + //assert m['U'][0] == "https://soniex2.autistic.space/git-repos/ganarchy.git" + //assert m['B'][0] == "HEAD" + //assert m['B'][1] == {"active": True} +} + +#[test] +fn test_spaces() { + let tree = Value::M(vec![ + ("projects".into(), Value::M(vec![ + ("385e734a52e13949a7a5c71827f6de920dbfea43".into(), Value::M(vec![ + ("https://soniex2.autistic.space/git-repos/ganarchy.git".into(), Value::M(vec![ + ("HEAD".into(), Value::M(vec![ + ("active".into(), Value::B(true)), + ].into_iter().collect())), + ].into_iter().collect())), + ].into_iter().collect())), + ].into_iter().collect())), + ].into_iter().collect()); + let pat = datafu::Pattern::::compile("-> 'projects'? + -> commit /[0-9a-fA-F]{40}|[0-9a-fA-F]{64}/? :?$dict + -> url :?$dict + -> branch :?$dict", None).ok().unwrap(); + let mut matcher = pat.attempt_match(&tree); + let m = matcher.next(); + // TODO + todo!(); + //assert m['commit'][0] == "385e734a52e13949a7a5c71827f6de920dbfea43" + //assert m['url'][0] == "https://soniex2.autistic.space/git-repos/ganarchy.git" + //assert m['branch'][0] == "HEAD" + //assert m['branch'][1] == {"active": True} +} -- cgit 1.4.1