()
| 344 | |
| 345 | #[test] |
| 346 | fn command_parser_test() -> Result<(), Box<dyn Error>> { |
| 347 | #[derive(Debug, PartialEq, Eq)] |
| 348 | struct TestCommand(bool); |
| 349 | |
| 350 | impl CommandListener for TestCommand { |
| 351 | fn node() -> CommandNode { |
| 352 | CommandNode::new_literal("uwu") |
| 353 | } |
| 354 | |
| 355 | type ParseArg = (); |
| 356 | fn try_parse( |
| 357 | parser: &mut CommandParser<'_>, |
| 358 | _arg: &Self::ParseArg, |
| 359 | ) -> Result<Option<Self>, CommandParseError> { |
| 360 | if parser.consume_literal("uwu").is_err() { |
| 361 | return Ok(None); |
| 362 | } |
| 363 | Ok(Some(Self( |
| 364 | parser.consume_until_space_or_end(false)? == "owo", |
| 365 | ))) |
| 366 | } |
| 367 | } |
| 368 | |
| 369 | let mut manager = CommandManager::default(); |
| 370 | manager.register::<TestCommand>(); |
| 371 | |
| 372 | assert_eq!(Some(TestCommand(false)), manager.parse("uwu", &())?); |
| 373 | assert_eq!(Some(TestCommand(false)), manager.parse("uwu 0", &())?); |
| 374 | assert_eq!(Some(TestCommand(true)), manager.parse("uwu owo", &())?); |
| 375 | assert_eq!(None, manager.parse::<TestCommand>("uwu0", &())?); |
| 376 | assert_eq!(None, manager.parse::<TestCommand>("hello", &())?); |
| 377 | |
| 378 | Ok(()) |
| 379 | } |
| 380 | } |
nothing calls this directly
no outgoing calls
no test coverage detected