diff options
| -rw-r--r-- | src/ast.rs | 2 | ||||
| -rw-r--r-- | tests/ast.rs | 70 |
2 files changed, 71 insertions, 1 deletions
@@ -28,7 +28,7 @@ /// - [Gemtext Documentation](https://gemini.circumlunar.space/docs/gemtext.gmi) /// - [Gemtext Cheatsheet](https://gemini.circumlunar.space/docs/cheatsheet.gmi). /// - [Gemini Specification](https://gemini.circumlunar.space/docs/specification.gmi). -#[derive(Debug)] +#[derive(Debug, PartialEq)] pub enum Node { /// A text line /// diff --git a/tests/ast.rs b/tests/ast.rs new file mode 100644 index 0000000..2fbc1d3 --- /dev/null +++ b/tests/ast.rs @@ -0,0 +1,70 @@ +// This file is part of Germ <https://github.com/gemrest/germ>. +// Copyright (C) 2022-2022 Fuwn <[email protected]> +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 3. +// +// 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 +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. +// +// Copyright (C) 2022-2022 Fuwn <[email protected]> +// SPDX-License-Identifier: GPL-3.0-only + +#[cfg(test)] +mod test { + use germ::ast::{build, Node}; + + #[test] + fn build_multi_line_list_with_text() { + assert_eq!( + build("* item1\n* 2\nhi text"), + vec![ + Node::List(vec!["item1".to_string(), "2".to_string()]), + Node::Text("hi text".to_string()), + ], + ); + } + + #[test] + fn build_multi_line_vec() { + assert_eq!( + build("=> /test hi\nhi there\n> hi"), + vec![ + Node::Link { + to: "/test".to_string(), + text: Some("hi".to_string()), + }, + Node::Text("hi there".to_string()), + Node::Blockquote("hi".to_string()), + ], + ); + } + + #[test] + fn build_single_0th_from_vec() { + assert_eq!( + build("=> /test hi"), + vec![Node::Link { + to: "/test".to_string(), + text: Some("hi".to_string()), + }], + ); + } + + #[test] + fn build_single_element() { + assert_eq!( + build("=> /test hi").get(0).unwrap(), + &Node::Link { + to: "/test".to_string(), + text: Some("hi".to_string()), + }, + ); + } +} |