1#[test] 2fn iter() { 3 let raw = clap_lex::RawArgs::new(["bin", "-short"]); 4 let mut cursor = raw.cursor(); 5 assert_eq!(raw.next_os(&mut cursor), Some(std::ffi::OsStr::new("bin"))); 6 let next = raw.next(&mut cursor).unwrap(); 7 let shorts = next.to_short().unwrap(); 8 9 let actual: String = shorts.map(|s| s.unwrap()).collect(); 10 assert_eq!(actual, "short"); 11} 12 13#[test] 14fn next_flag() { 15 let raw = clap_lex::RawArgs::new(["bin", "-short"]); 16 let mut cursor = raw.cursor(); 17 assert_eq!(raw.next_os(&mut cursor), Some(std::ffi::OsStr::new("bin"))); 18 let next = raw.next(&mut cursor).unwrap(); 19 let mut shorts = next.to_short().unwrap(); 20 21 let mut actual = String::new(); 22 actual.push(shorts.next_flag().unwrap().unwrap()); 23 actual.push(shorts.next_flag().unwrap().unwrap()); 24 actual.push(shorts.next_flag().unwrap().unwrap()); 25 actual.push(shorts.next_flag().unwrap().unwrap()); 26 actual.push(shorts.next_flag().unwrap().unwrap()); 27 assert_eq!(shorts.next_flag(), None); 28 29 assert_eq!(actual, "short"); 30} 31 32#[test] 33fn next_value_os() { 34 let raw = clap_lex::RawArgs::new(["bin", "-short"]); 35 let mut cursor = raw.cursor(); 36 assert_eq!(raw.next_os(&mut cursor), Some(std::ffi::OsStr::new("bin"))); 37 let next = raw.next(&mut cursor).unwrap(); 38 let mut shorts = next.to_short().unwrap(); 39 40 let actual = shorts.next_value_os().unwrap().to_str_lossy(); 41 42 assert_eq!(actual, "short"); 43} 44 45#[test] 46fn next_flag_with_value() { 47 let raw = clap_lex::RawArgs::new(["bin", "-short"]); 48 let mut cursor = raw.cursor(); 49 assert_eq!(raw.next_os(&mut cursor), Some(std::ffi::OsStr::new("bin"))); 50 let next = raw.next(&mut cursor).unwrap(); 51 let mut shorts = next.to_short().unwrap(); 52 53 assert_eq!(shorts.next_flag().unwrap().unwrap(), 's'); 54 let actual = shorts.next_value_os().unwrap().to_str_lossy(); 55 56 assert_eq!(actual, "hort"); 57} 58 59#[test] 60fn next_flag_with_no_value() { 61 let raw = clap_lex::RawArgs::new(["bin", "-short"]); 62 let mut cursor = raw.cursor(); 63 assert_eq!(raw.next_os(&mut cursor), Some(std::ffi::OsStr::new("bin"))); 64 let next = raw.next(&mut cursor).unwrap(); 65 let mut shorts = next.to_short().unwrap(); 66 67 assert_eq!(shorts.next_flag().unwrap().unwrap(), 's'); 68 assert_eq!(shorts.next_flag().unwrap().unwrap(), 'h'); 69 assert_eq!(shorts.next_flag().unwrap().unwrap(), 'o'); 70 assert_eq!(shorts.next_flag().unwrap().unwrap(), 'r'); 71 assert_eq!(shorts.next_flag().unwrap().unwrap(), 't'); 72 73 assert_eq!(shorts.next_value_os(), None); 74} 75 76#[test] 77fn advance_by_nothing() { 78 let raw = clap_lex::RawArgs::new(["bin", "-short"]); 79 let mut cursor = raw.cursor(); 80 assert_eq!(raw.next_os(&mut cursor), Some(std::ffi::OsStr::new("bin"))); 81 let next = raw.next(&mut cursor).unwrap(); 82 let mut shorts = next.to_short().unwrap(); 83 84 assert_eq!(shorts.advance_by(0), Ok(())); 85 86 let actual: String = shorts.map(|s| s.unwrap()).collect(); 87 assert_eq!(actual, "short"); 88} 89 90#[test] 91fn advance_by_something() { 92 let raw = clap_lex::RawArgs::new(["bin", "-short"]); 93 let mut cursor = raw.cursor(); 94 assert_eq!(raw.next_os(&mut cursor), Some(std::ffi::OsStr::new("bin"))); 95 let next = raw.next(&mut cursor).unwrap(); 96 let mut shorts = next.to_short().unwrap(); 97 98 assert_eq!(shorts.advance_by(2), Ok(())); 99 100 let actual: String = shorts.map(|s| s.unwrap()).collect(); 101 assert_eq!(actual, "ort"); 102} 103 104#[test] 105fn advance_by_out_of_bounds() { 106 let raw = clap_lex::RawArgs::new(["bin", "-short"]); 107 let mut cursor = raw.cursor(); 108 assert_eq!(raw.next_os(&mut cursor), Some(std::ffi::OsStr::new("bin"))); 109 let next = raw.next(&mut cursor).unwrap(); 110 let mut shorts = next.to_short().unwrap(); 111 112 assert_eq!(shorts.advance_by(2000), Err(5)); 113 114 let actual: String = shorts.map(|s| s.unwrap()).collect(); 115 assert_eq!(actual, ""); 116} 117 118#[test] 119fn is_not_empty() { 120 let raw = clap_lex::RawArgs::new(["bin", "-hello"]); 121 let mut cursor = raw.cursor(); 122 assert_eq!(raw.next_os(&mut cursor), Some(std::ffi::OsStr::new("bin"))); 123 let next = raw.next(&mut cursor).unwrap(); 124 let shorts = next.to_short().unwrap(); 125 126 assert!(!shorts.is_empty()); 127} 128 129#[test] 130fn is_partial_not_empty() { 131 let raw = clap_lex::RawArgs::new(["bin", "-hello"]); 132 let mut cursor = raw.cursor(); 133 assert_eq!(raw.next_os(&mut cursor), Some(std::ffi::OsStr::new("bin"))); 134 let next = raw.next(&mut cursor).unwrap(); 135 let mut shorts = next.to_short().unwrap(); 136 shorts.advance_by(1).unwrap(); 137 138 assert!(!shorts.is_empty()); 139} 140 141#[test] 142fn is_exhausted_empty() { 143 let raw = clap_lex::RawArgs::new(["bin", "-hello"]); 144 let mut cursor = raw.cursor(); 145 assert_eq!(raw.next_os(&mut cursor), Some(std::ffi::OsStr::new("bin"))); 146 let next = raw.next(&mut cursor).unwrap(); 147 let mut shorts = next.to_short().unwrap(); 148 shorts.advance_by(20000).unwrap_err(); 149 150 assert!(shorts.is_empty()); 151} 152 153#[test] 154fn is_number() { 155 let raw = clap_lex::RawArgs::new(["bin", "-1.0"]); 156 let mut cursor = raw.cursor(); 157 assert_eq!(raw.next_os(&mut cursor), Some(std::ffi::OsStr::new("bin"))); 158 let next = raw.next(&mut cursor).unwrap(); 159 let shorts = next.to_short().unwrap(); 160 161 assert!(shorts.is_number()); 162} 163 164#[test] 165fn is_not_number() { 166 let raw = clap_lex::RawArgs::new(["bin", "-hello"]); 167 let mut cursor = raw.cursor(); 168 assert_eq!(raw.next_os(&mut cursor), Some(std::ffi::OsStr::new("bin"))); 169 let next = raw.next(&mut cursor).unwrap(); 170 let shorts = next.to_short().unwrap(); 171 172 assert!(!shorts.is_number()); 173} 174