| // pest. The Elegant Parser |
| // Copyright (c) 2018 DragoČ™ Tiselice |
| // |
| // Licensed under the Apache License, Version 2.0 |
| // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT |
| // license <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your |
| // option. All files in the project carrying such notice may not be copied, |
| // modified, or distributed except according to those terms. |
| |
| #[macro_use] |
| extern crate pest; |
| #[macro_use] |
| extern crate pest_derive; |
| |
| #[derive(Parser)] |
| #[grammar = "../tests/lists.pest"] |
| struct ListsParser; |
| |
| #[test] |
| fn item() { |
| parses_to! { |
| parser: ListsParser, |
| input: "- a", |
| rule: Rule::lists, |
| tokens: [ |
| item(2, 3) |
| ] |
| }; |
| } |
| |
| #[test] |
| fn items() { |
| parses_to! { |
| parser: ListsParser, |
| input: "- a\n- b", |
| rule: Rule::lists, |
| tokens: [ |
| item(2, 3), |
| item(6, 7) |
| ] |
| }; |
| } |
| |
| #[test] |
| fn children() { |
| parses_to! { |
| parser: ListsParser, |
| input: " - b", |
| rule: Rule::children, |
| tokens: [ |
| children(0, 5, [ |
| item(4, 5) |
| ]) |
| ] |
| }; |
| } |
| |
| #[test] |
| fn nested_item() { |
| parses_to! { |
| parser: ListsParser, |
| input: "- a\n - b", |
| rule: Rule::lists, |
| tokens: [ |
| item(2, 3), |
| children(4, 9, [ |
| item(8, 9) |
| ]) |
| ] |
| }; |
| } |
| |
| #[test] |
| fn nested_items() { |
| parses_to! { |
| parser: ListsParser, |
| input: "- a\n - b\n - c", |
| rule: Rule::lists, |
| tokens: [ |
| item(2, 3), |
| children(4, 15, [ |
| item(8, 9), |
| item(14, 15) |
| ]) |
| ] |
| }; |
| } |
| |
| #[test] |
| fn nested_two_levels() { |
| parses_to! { |
| parser: ListsParser, |
| input: "- a\n - b\n - c", |
| rule: Rule::lists, |
| tokens: [ |
| item(2, 3), |
| children(4, 17, [ |
| item(8, 9), |
| children(10, 17, [ |
| item(16, 17) |
| ]) |
| ]) |
| ] |
| }; |
| } |
| |
| #[test] |
| fn nested_then_not() { |
| parses_to! { |
| parser: ListsParser, |
| input: "- a\n - b\n- c", |
| rule: Rule::lists, |
| tokens: [ |
| item(2, 3), |
| children(4, 9, [ |
| item(8, 9) |
| ]), |
| item(12, 13) |
| ] |
| }; |
| } |