MCPcopy Create free account
hub / github.com/cloud-hypervisor/cloud-hypervisor / test_option_parser

Function test_option_parser

option_parser/src/lib.rs:590–652  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

588
589 #[test]
590 fn test_option_parser() {
591 let mut parser = OptionParser::new();
592 parser
593 .add("size")
594 .add("mergeable")
595 .add("hotplug_method")
596 .add("hotplug_size")
597 .add("topology")
598 .add("cmdline");
599
600 assert_eq!(split_commas("\"\"").unwrap(), vec!["\"\""]);
601 parser.parse("size=128M,hanging_param").unwrap_err();
602 parser.parse("size=128M,file=/dev/shm").unwrap_err();
603
604 // Equals signs within a value are fine (splitn(2, '=') keeps them)
605 parser.add("extra");
606 parser.parse("extra=foo=bar").unwrap();
607 assert_eq!(parser.get("extra"), Some("foo=bar".to_owned()));
608
609 parser.parse("size=128M").unwrap();
610 assert_eq!(parser.get("size"), Some("128M".to_owned()));
611 assert!(!parser.is_set("mergeable"));
612 assert!(parser.is_set("size"));
613 parser.parse("size=").unwrap();
614 assert!(parser.get("size").is_none());
615
616 parser.parse("size=128M,mergeable=on").unwrap();
617 assert_eq!(parser.get("size"), Some("128M".to_owned()));
618 assert_eq!(parser.get("mergeable"), Some("on".to_owned()));
619
620 parser
621 .parse("size=128M,mergeable=on,topology=[1,2]")
622 .unwrap();
623 assert_eq!(parser.get("size"), Some("128M".to_owned()));
624 assert_eq!(parser.get("mergeable"), Some("on".to_owned()));
625 assert_eq!(parser.get("topology"), Some("[1,2]".to_owned()));
626
627 parser
628 .parse("size=128M,mergeable=on,topology=[[1,2],[3,4]]")
629 .unwrap();
630 assert_eq!(parser.get("size"), Some("128M".to_owned()));
631 assert_eq!(parser.get("mergeable"), Some("on".to_owned()));
632 assert_eq!(parser.get("topology"), Some("[[1,2],[3,4]]".to_owned()));
633
634 parser.parse("topology=[").unwrap_err();
635 parser.parse("topology=[[[]]]]").unwrap_err();
636 parser.parse("topology=[\"@\"\"b\"@[1,2]]").unwrap();
637 assert_eq!(
638 parser
639 .convert::<Tuple<String, Vec<u8>>>("topology")
640 .unwrap()
641 .unwrap(),
642 Tuple(vec![("@\"b".to_owned(), vec![1, 2])])
643 );
644
645 parser.parse("cmdline=\"console=ttyS0,9600n8\"").unwrap();
646 assert_eq!(
647 parser.get("cmdline"),

Callers

nothing calls this directly

Calls 3

newFunction · 0.85
addMethod · 0.80
parseMethod · 0.45

Tested by

no test coverage detected