// Licensed under the Apache License, Version 2.0 // or the MIT // license , at your // option. All files in the project carrying such notice may not be copied, // modified, or distributed except according to those terms. #![cfg_attr(not(feature = "std"), no_std)] extern crate alloc; extern crate pest; extern crate pest_derive; #[cfg(feature = "grammar-extras")] use pest::Parser; use pest_derive::Parser; #[derive(Parser)] #[grammar = "../tests/opt.pest"] struct TestOptParser; #[test] #[cfg(feature = "grammar-extras")] fn test_opt_tag() { let successful_parse = TestOptParser::parse(Rule::expr, "*"); assert!(successful_parse.is_ok()); let pairs = successful_parse.unwrap(); assert!(pairs.find_first_tagged("prefix").is_some()); assert!(pairs.find_first_tagged("suffix").is_none()); // Test with no STAR or DOT let parse_no_components = TestOptParser::parse(Rule::expr, ""); assert!(parse_no_components.is_ok()); let pairs_no_components = parse_no_components.unwrap(); assert!(pairs_no_components.find_first_tagged("prefix").is_none()); assert!(pairs_no_components.find_first_tagged("suffix").is_none()); // Test with only DOT let parse_only_dot = TestOptParser::parse(Rule::expr, "."); assert!(parse_only_dot.is_ok()); let pairs_only_dot = parse_only_dot.unwrap(); assert!(pairs_only_dot.find_first_tagged("prefix").is_none()); assert!(pairs_only_dot.find_first_tagged("suffix").is_some()); }