| 875 | |
| 876 | #[test] |
| 877 | fn test_add() { |
| 878 | let mut kargs = Cmdline::from(b"console=tty0 console=ttyS1"); |
| 879 | |
| 880 | // add new parameter with duplicate key but different value |
| 881 | assert!(matches!(kargs.add(¶m("console=ttyS2")), Action::Added)); |
| 882 | let mut iter = kargs.iter(); |
| 883 | assert_eq!(iter.next(), Some(param("console=tty0"))); |
| 884 | assert_eq!(iter.next(), Some(param("console=ttyS1"))); |
| 885 | assert_eq!(iter.next(), Some(param("console=ttyS2"))); |
| 886 | assert_eq!(iter.next(), None); |
| 887 | |
| 888 | // try to add exact duplicate - should return Existed |
| 889 | assert!(matches!( |
| 890 | kargs.add(¶m("console=ttyS1")), |
| 891 | Action::Existed |
| 892 | )); |
| 893 | iter = kargs.iter(); |
| 894 | assert_eq!(iter.next(), Some(param("console=tty0"))); |
| 895 | assert_eq!(iter.next(), Some(param("console=ttyS1"))); |
| 896 | assert_eq!(iter.next(), Some(param("console=ttyS2"))); |
| 897 | assert_eq!(iter.next(), None); |
| 898 | |
| 899 | // add completely new parameter |
| 900 | assert!(matches!(kargs.add(¶m("quiet")), Action::Added)); |
| 901 | iter = kargs.iter(); |
| 902 | assert_eq!(iter.next(), Some(param("console=tty0"))); |
| 903 | assert_eq!(iter.next(), Some(param("console=ttyS1"))); |
| 904 | assert_eq!(iter.next(), Some(param("console=ttyS2"))); |
| 905 | assert_eq!(iter.next(), Some(param("quiet"))); |
| 906 | assert_eq!(iter.next(), None); |
| 907 | } |
| 908 | |
| 909 | #[test] |
| 910 | fn test_add_empty_cmdline() { |