1 // !!! ATTENTION !!! 2 // This file is automatically generated by `scripts/mk-testcases`. 3 // Please do not edit this file directly! 4 5 use crate::Value::{Switch, Counted, Plain, List}; 6 use crate::test::{get_args, map_from_alist, same_args}; 7 8 test_expect!(test_0_testcases, "Usage: prog", &[], vec!()); 9 10 test_user_error!(test_1_testcases, "Usage: prog", &["--xxx"]); 11 12 test_expect!(test_2_testcases, "Usage: prog [options] 13 14 Options: -a All.", &[], vec!(("-a", Switch(false)))); 15 16 test_expect!(test_3_testcases, "Usage: prog [options] 17 18 Options: -a All.", &["-a"], vec!(("-a", Switch(true)))); 19 20 test_user_error!(test_4_testcases, "Usage: prog [options] 21 22 Options: -a All.", &["-x"]); 23 24 test_expect!(test_5_testcases, "Usage: prog [options] 25 26 Options: --all All.", &[], vec!(("--all", Switch(false)))); 27 28 test_expect!(test_6_testcases, "Usage: prog [options] 29 30 Options: --all All.", &["--all"], vec!(("--all", Switch(true)))); 31 32 test_user_error!(test_7_testcases, "Usage: prog [options] 33 34 Options: --all All.", &["--xxx"]); 35 36 test_expect!(test_8_testcases, "Usage: prog [options] 37 38 Options: -v, --verbose Verbose.", &["--verbose"], vec!(("--verbose", Switch(true)))); 39 40 test_user_error!(test_9_testcases, "Usage: prog [options] 41 42 Options: -v, --verbose Verbose.", &["--ver"]); 43 44 test_expect!(test_10_testcases, "Usage: prog [options] 45 46 Options: -v, --verbose Verbose.", &["-v"], vec!(("--verbose", Switch(true)))); 47 48 test_expect!(test_11_testcases, "Usage: prog [options] 49 50 Options: -p PATH", &["-p", "home/"], vec!(("-p", Plain(Some("home/".to_string()))))); 51 52 test_expect!(test_12_testcases, "Usage: prog [options] 53 54 Options: -p PATH", &["-phome/"], vec!(("-p", Plain(Some("home/".to_string()))))); 55 56 test_user_error!(test_13_testcases, "Usage: prog [options] 57 58 Options: -p PATH", &["-p"]); 59 60 test_expect!(test_14_testcases, "Usage: prog [options] 61 62 Options: --path <path>", &["--path", "home/"], vec!(("--path", Plain(Some("home/".to_string()))))); 63 64 test_expect!(test_15_testcases, "Usage: prog [options] 65 66 Options: --path <path>", &["--path=home/"], vec!(("--path", Plain(Some("home/".to_string()))))); 67 68 test_user_error!(test_16_testcases, "Usage: prog [options] 69 70 Options: --path <path>", &["--pa", "home/"]); 71 72 test_user_error!(test_17_testcases, "Usage: prog [options] 73 74 Options: --path <path>", &["--pa=home/"]); 75 76 test_user_error!(test_18_testcases, "Usage: prog [options] 77 78 Options: --path <path>", &["--path"]); 79 80 test_expect!(test_19_testcases, "Usage: prog [options] 81 82 Options: -p PATH, --path=<path> Path to files.", &["-proot"], vec!(("--path", Plain(Some("root".to_string()))))); 83 84 test_expect!(test_20_testcases, "Usage: prog [options] 85 86 Options: -p --path PATH Path to files.", &["-p", "root"], vec!(("--path", Plain(Some("root".to_string()))))); 87 88 test_expect!(test_21_testcases, "Usage: prog [options] 89 90 Options: -p --path PATH Path to files.", &["--path", "root"], vec!(("--path", Plain(Some("root".to_string()))))); 91 92 test_expect!(test_22_testcases, "Usage: prog [options] 93 94 Options: 95 -p PATH Path to files [default: ./]", &[], vec!(("-p", Plain(Some("./".to_string()))))); 96 97 test_expect!(test_23_testcases, "Usage: prog [options] 98 99 Options: 100 -p PATH Path to files [default: ./]", &["-phome"], vec!(("-p", Plain(Some("home".to_string()))))); 101 102 test_expect!(test_24_testcases, "UsAgE: prog [options] 103 104 OpTiOnS: --path=<files> Path to files 105 [dEfAuLt: /root]", &[], vec!(("--path", Plain(Some("/root".to_string()))))); 106 107 test_expect!(test_25_testcases, "UsAgE: prog [options] 108 109 OpTiOnS: --path=<files> Path to files 110 [dEfAuLt: /root]", &["--path=home"], vec!(("--path", Plain(Some("home".to_string()))))); 111 112 test_expect!(test_26_testcases, "usage: prog [options] 113 114 options: 115 -a Add 116 -r Remote 117 -m <msg> Message", &["-a", "-r", "-m", "Hello"], vec!(("-m", Plain(Some("Hello".to_string()))), ("-a", Switch(true)), ("-r", Switch(true)))); 118 119 test_expect!(test_27_testcases, "usage: prog [options] 120 121 options: 122 -a Add 123 -r Remote 124 -m <msg> Message", &["-armyourass"], vec!(("-m", Plain(Some("yourass".to_string()))), ("-a", Switch(true)), ("-r", Switch(true)))); 125 126 test_expect!(test_28_testcases, "usage: prog [options] 127 128 options: 129 -a Add 130 -r Remote 131 -m <msg> Message", &["-a", "-r"], vec!(("-m", Plain(None)), ("-a", Switch(true)), ("-r", Switch(true)))); 132 133 test_expect!(test_29_testcases, "Usage: prog [options] 134 135 Options: --version 136 --verbose", &["--version"], vec!(("--verbose", Switch(false)), ("--version", Switch(true)))); 137 138 test_expect!(test_30_testcases, "Usage: prog [options] 139 140 Options: --version 141 --verbose", &["--verbose"], vec!(("--verbose", Switch(true)), ("--version", Switch(false)))); 142 143 test_user_error!(test_31_testcases, "Usage: prog [options] 144 145 Options: --version 146 --verbose", &["--ver"]); 147 148 test_user_error!(test_32_testcases, "Usage: prog [options] 149 150 Options: --version 151 --verbose", &["--verb"]); 152 153 test_expect!(test_33_testcases, "usage: prog [-a -r -m <msg>] 154 155 options: 156 -a Add 157 -r Remote 158 -m <msg> Message", &["-armyourass"], vec!(("-m", Plain(Some("yourass".to_string()))), ("-a", Switch(true)), ("-r", Switch(true)))); 159 160 test_expect!(test_34_testcases, "usage: prog [-armMSG] 161 162 options: -a Add 163 -r Remote 164 -m <msg> Message", &["-a", "-r", "-m", "Hello"], vec!(("-m", Plain(Some("Hello".to_string()))), ("-a", Switch(true)), ("-r", Switch(true)))); 165 166 test_expect!(test_35_testcases, "usage: prog -a -b 167 168 options: 169 -a 170 -b", &["-a", "-b"], vec!(("-a", Switch(true)), ("-b", Switch(true)))); 171 172 test_expect!(test_36_testcases, "usage: prog -a -b 173 174 options: 175 -a 176 -b", &["-b", "-a"], vec!(("-a", Switch(true)), ("-b", Switch(true)))); 177 178 test_user_error!(test_37_testcases, "usage: prog -a -b 179 180 options: 181 -a 182 -b", &["-a"]); 183 184 test_user_error!(test_38_testcases, "usage: prog -a -b 185 186 options: 187 -a 188 -b", &[]); 189 190 test_expect!(test_39_testcases, "usage: prog (-a -b) 191 192 options: -a 193 -b", &["-a", "-b"], vec!(("-a", Switch(true)), ("-b", Switch(true)))); 194 195 test_expect!(test_40_testcases, "usage: prog (-a -b) 196 197 options: -a 198 -b", &["-b", "-a"], vec!(("-a", Switch(true)), ("-b", Switch(true)))); 199 200 test_user_error!(test_41_testcases, "usage: prog (-a -b) 201 202 options: -a 203 -b", &["-a"]); 204 205 test_user_error!(test_42_testcases, "usage: prog (-a -b) 206 207 options: -a 208 -b", &[]); 209 210 test_expect!(test_43_testcases, "usage: prog [-a] -b 211 212 options: -a 213 -b", &["-a", "-b"], vec!(("-a", Switch(true)), ("-b", Switch(true)))); 214 215 test_expect!(test_44_testcases, "usage: prog [-a] -b 216 217 options: -a 218 -b", &["-b", "-a"], vec!(("-a", Switch(true)), ("-b", Switch(true)))); 219 220 test_user_error!(test_45_testcases, "usage: prog [-a] -b 221 222 options: -a 223 -b", &["-a"]); 224 225 test_expect!(test_46_testcases, "usage: prog [-a] -b 226 227 options: -a 228 -b", &["-b"], vec!(("-a", Switch(false)), ("-b", Switch(true)))); 229 230 test_user_error!(test_47_testcases, "usage: prog [-a] -b 231 232 options: -a 233 -b", &[]); 234 235 test_expect!(test_48_testcases, "usage: prog [(-a -b)] 236 237 options: -a 238 -b", &["-a", "-b"], vec!(("-a", Switch(true)), ("-b", Switch(true)))); 239 240 test_expect!(test_49_testcases, "usage: prog [(-a -b)] 241 242 options: -a 243 -b", &["-b", "-a"], vec!(("-a", Switch(true)), ("-b", Switch(true)))); 244 245 test_user_error!(test_50_testcases, "usage: prog [(-a -b)] 246 247 options: -a 248 -b", &["-a"]); 249 250 test_user_error!(test_51_testcases, "usage: prog [(-a -b)] 251 252 options: -a 253 -b", &["-b"]); 254 255 test_expect!(test_52_testcases, "usage: prog [(-a -b)] 256 257 options: -a 258 -b", &[], vec!(("-a", Switch(false)), ("-b", Switch(false)))); 259 260 test_user_error!(test_53_testcases, "usage: prog (-a|-b) 261 262 options: -a 263 -b", &["-a", "-b"]); 264 265 test_user_error!(test_54_testcases, "usage: prog (-a|-b) 266 267 options: -a 268 -b", &[]); 269 270 test_expect!(test_55_testcases, "usage: prog (-a|-b) 271 272 options: -a 273 -b", &["-a"], vec!(("-a", Switch(true)), ("-b", Switch(false)))); 274 275 test_expect!(test_56_testcases, "usage: prog (-a|-b) 276 277 options: -a 278 -b", &["-b"], vec!(("-a", Switch(false)), ("-b", Switch(true)))); 279 280 test_user_error!(test_57_testcases, "usage: prog [ -a | -b ] 281 282 options: -a 283 -b", &["-a", "-b"]); 284 285 test_expect!(test_58_testcases, "usage: prog [ -a | -b ] 286 287 options: -a 288 -b", &[], vec!(("-a", Switch(false)), ("-b", Switch(false)))); 289 290 test_expect!(test_59_testcases, "usage: prog [ -a | -b ] 291 292 options: -a 293 -b", &["-a"], vec!(("-a", Switch(true)), ("-b", Switch(false)))); 294 295 test_expect!(test_60_testcases, "usage: prog [ -a | -b ] 296 297 options: -a 298 -b", &["-b"], vec!(("-a", Switch(false)), ("-b", Switch(true)))); 299 300 test_expect!(test_61_testcases, "usage: prog <arg>", &["10"], vec!(("<arg>", Plain(Some("10".to_string()))))); 301 302 test_user_error!(test_62_testcases, "usage: prog <arg>", &["10", "20"]); 303 304 test_user_error!(test_63_testcases, "usage: prog <arg>", &[]); 305 306 test_expect!(test_64_testcases, "usage: prog [<arg>]", &["10"], vec!(("<arg>", Plain(Some("10".to_string()))))); 307 308 test_user_error!(test_65_testcases, "usage: prog [<arg>]", &["10", "20"]); 309 310 test_expect!(test_66_testcases, "usage: prog [<arg>]", &[], vec!(("<arg>", Plain(None)))); 311 312 test_expect!(test_67_testcases, "usage: prog <kind> <name> <type>", &["10", "20", "40"], vec!(("<type>", Plain(Some("40".to_string()))), ("<kind>", Plain(Some("10".to_string()))), ("<name>", Plain(Some("20".to_string()))))); 313 314 test_user_error!(test_68_testcases, "usage: prog <kind> <name> <type>", &["10", "20"]); 315 316 test_user_error!(test_69_testcases, "usage: prog <kind> <name> <type>", &[]); 317 318 test_expect!(test_70_testcases, "usage: prog <kind> [<name> <type>]", &["10", "20", "40"], vec!(("<type>", Plain(Some("40".to_string()))), ("<kind>", Plain(Some("10".to_string()))), ("<name>", Plain(Some("20".to_string()))))); 319 320 test_expect!(test_71_testcases, "usage: prog <kind> [<name> <type>]", &["10", "20"], vec!(("<type>", Plain(None)), ("<kind>", Plain(Some("10".to_string()))), ("<name>", Plain(Some("20".to_string()))))); 321 322 test_user_error!(test_72_testcases, "usage: prog <kind> [<name> <type>]", &[]); 323 324 test_user_error!(test_73_testcases, "usage: prog [<kind> | <name> <type>]", &["10", "20", "40"]); 325 326 test_expect!(test_74_testcases, "usage: prog [<kind> | <name> <type>]", &["20", "40"], vec!(("<type>", Plain(Some("40".to_string()))), ("<kind>", Plain(None)), ("<name>", Plain(Some("20".to_string()))))); 327 328 test_expect!(test_75_testcases, "usage: prog [<kind> | <name> <type>]", &[], vec!(("<type>", Plain(None)), ("<kind>", Plain(None)), ("<name>", Plain(None)))); 329 330 test_expect!(test_76_testcases, "usage: prog (<kind> --all | <name>) 331 332 options: 333 --all", &["10", "--all"], vec!(("--all", Switch(true)), ("<kind>", Plain(Some("10".to_string()))), ("<name>", Plain(None)))); 334 335 test_expect!(test_77_testcases, "usage: prog (<kind> --all | <name>) 336 337 options: 338 --all", &["10"], vec!(("--all", Switch(false)), ("<kind>", Plain(None)), ("<name>", Plain(Some("10".to_string()))))); 339 340 test_user_error!(test_78_testcases, "usage: prog (<kind> --all | <name>) 341 342 options: 343 --all", &[]); 344 345 test_expect!(test_79_testcases, "usage: prog [<name> <name>]", &["10", "20"], vec!(("<name>", List(vec!("10".to_string(), "20".to_string()))))); 346 347 test_expect!(test_80_testcases, "usage: prog [<name> <name>]", &["10"], vec!(("<name>", List(vec!("10".to_string()))))); 348 349 test_expect!(test_81_testcases, "usage: prog [<name> <name>]", &[], vec!(("<name>", List(vec!())))); 350 351 test_expect!(test_82_testcases, "usage: prog [(<name> <name>)]", &["10", "20"], vec!(("<name>", List(vec!("10".to_string(), "20".to_string()))))); 352 353 test_user_error!(test_83_testcases, "usage: prog [(<name> <name>)]", &["10"]); 354 355 test_expect!(test_84_testcases, "usage: prog [(<name> <name>)]", &[], vec!(("<name>", List(vec!())))); 356 357 test_expect!(test_85_testcases, "usage: prog NAME...", &["10", "20"], vec!(("NAME", List(vec!("10".to_string(), "20".to_string()))))); 358 359 test_expect!(test_86_testcases, "usage: prog NAME...", &["10"], vec!(("NAME", List(vec!("10".to_string()))))); 360 361 test_user_error!(test_87_testcases, "usage: prog NAME...", &[]); 362 363 test_expect!(test_88_testcases, "usage: prog [NAME]...", &["10", "20"], vec!(("NAME", List(vec!("10".to_string(), "20".to_string()))))); 364 365 test_expect!(test_89_testcases, "usage: prog [NAME]...", &["10"], vec!(("NAME", List(vec!("10".to_string()))))); 366 367 test_expect!(test_90_testcases, "usage: prog [NAME]...", &[], vec!(("NAME", List(vec!())))); 368 369 test_expect!(test_91_testcases, "usage: prog [NAME...]", &["10", "20"], vec!(("NAME", List(vec!("10".to_string(), "20".to_string()))))); 370 371 test_expect!(test_92_testcases, "usage: prog [NAME...]", &["10"], vec!(("NAME", List(vec!("10".to_string()))))); 372 373 test_expect!(test_93_testcases, "usage: prog [NAME...]", &[], vec!(("NAME", List(vec!())))); 374 375 test_expect!(test_94_testcases, "usage: prog [NAME [NAME ...]]", &["10", "20"], vec!(("NAME", List(vec!("10".to_string(), "20".to_string()))))); 376 377 test_expect!(test_95_testcases, "usage: prog [NAME [NAME ...]]", &["10"], vec!(("NAME", List(vec!("10".to_string()))))); 378 379 test_expect!(test_96_testcases, "usage: prog [NAME [NAME ...]]", &[], vec!(("NAME", List(vec!())))); 380 381 test_expect!(test_97_testcases, "usage: prog (NAME | --foo NAME) 382 383 options: --foo", &["10"], vec!(("NAME", Plain(Some("10".to_string()))), ("--foo", Switch(false)))); 384 385 test_expect!(test_98_testcases, "usage: prog (NAME | --foo NAME) 386 387 options: --foo", &["--foo", "10"], vec!(("NAME", Plain(Some("10".to_string()))), ("--foo", Switch(true)))); 388 389 test_user_error!(test_99_testcases, "usage: prog (NAME | --foo NAME) 390 391 options: --foo", &["--foo=10"]); 392 393 test_expect!(test_100_testcases, "usage: prog (NAME | --foo) [--bar | NAME] 394 395 options: --foo 396 options: --bar", &["10"], vec!(("--bar", Switch(false)), ("NAME", List(vec!("10".to_string()))), ("--foo", Switch(false)))); 397 398 test_expect!(test_101_testcases, "usage: prog (NAME | --foo) [--bar | NAME] 399 400 options: --foo 401 options: --bar", &["10", "20"], vec!(("--bar", Switch(false)), ("NAME", List(vec!("10".to_string(), "20".to_string()))), ("--foo", Switch(false)))); 402 403 test_expect!(test_102_testcases, "usage: prog (NAME | --foo) [--bar | NAME] 404 405 options: --foo 406 options: --bar", &["--foo", "--bar"], vec!(("--bar", Switch(true)), ("NAME", List(vec!())), ("--foo", Switch(true)))); 407 408 test_expect!(test_103_testcases, "Naval Fate. 409 410 Usage: 411 prog ship new <name>... 412 prog ship [<name>] move <x> <y> [--speed=<kn>] 413 prog ship shoot <x> <y> 414 prog mine (set|remove) <x> <y> [--moored|--drifting] 415 prog -h | --help 416 prog --version 417 418 Options: 419 -h --help Show this screen. 420 --version Show version. 421 --speed=<kn> Speed in knots [default: 10]. 422 --moored Mored (anchored) mine. 423 --drifting Drifting mine.", &["ship", "Guardian", "move", "150", "300", "--speed=20"], vec!(("shoot", Switch(false)), ("--moored", Switch(false)), ("--drifting", Switch(false)), ("move", Switch(true)), ("--speed", Plain(Some("20".to_string()))), ("mine", Switch(false)), ("new", Switch(false)), ("--version", Switch(false)), ("set", Switch(false)), ("remove", Switch(false)), ("<name>", List(vec!("Guardian".to_string()))), ("ship", Switch(true)), ("<x>", Plain(Some("150".to_string()))), ("<y>", Plain(Some("300".to_string()))), ("--help", Switch(false)))); 424 425 test_expect!(test_104_testcases, "usage: prog --hello", &["--hello"], vec!(("--hello", Switch(true)))); 426 427 test_expect!(test_105_testcases, "usage: prog [--hello=<world>]", &[], vec!(("--hello", Plain(None)))); 428 429 test_expect!(test_106_testcases, "usage: prog [--hello=<world>]", &["--hello", "wrld"], vec!(("--hello", Plain(Some("wrld".to_string()))))); 430 431 test_expect!(test_107_testcases, "usage: prog [-o]", &[], vec!(("-o", Switch(false)))); 432 433 test_expect!(test_108_testcases, "usage: prog [-o]", &["-o"], vec!(("-o", Switch(true)))); 434 435 test_expect!(test_109_testcases, "usage: prog [-opr]", &["-op"], vec!(("-o", Switch(true)), ("-p", Switch(true)), ("-r", Switch(false)))); 436 437 test_expect!(test_110_testcases, "usage: prog --aabb | --aa", &["--aa"], vec!(("--aa", Switch(true)), ("--aabb", Switch(false)))); 438 439 test_user_error!(test_111_testcases, "usage: prog --aabb | --aa", &["--a"]); 440 441 test_expect!(test_112_testcases, "Usage: prog -v", &["-v"], vec!(("-v", Switch(true)))); 442 443 test_expect!(test_113_testcases, "Usage: prog [-v -v]", &[], vec!(("-v", Counted(0)))); 444 445 test_expect!(test_114_testcases, "Usage: prog [-v -v]", &["-v"], vec!(("-v", Counted(1)))); 446 447 test_expect!(test_115_testcases, "Usage: prog [-v -v]", &["-vv"], vec!(("-v", Counted(2)))); 448 449 test_user_error!(test_116_testcases, "Usage: prog -v ...", &[]); 450 451 test_expect!(test_117_testcases, "Usage: prog -v ...", &["-v"], vec!(("-v", Counted(1)))); 452 453 test_expect!(test_118_testcases, "Usage: prog -v ...", &["-vv"], vec!(("-v", Counted(2)))); 454 455 test_expect!(test_119_testcases, "Usage: prog -v ...", &["-vvvvvv"], vec!(("-v", Counted(6)))); 456 457 test_expect!(test_120_testcases, "Usage: prog [-v | -vv | -vvv] 458 459 This one is probably most readable user-friednly variant.", &[], vec!(("-v", Counted(0)))); 460 461 test_expect!(test_121_testcases, "Usage: prog [-v | -vv | -vvv] 462 463 This one is probably most readable user-friednly variant.", &["-v"], vec!(("-v", Counted(1)))); 464 465 test_expect!(test_122_testcases, "Usage: prog [-v | -vv | -vvv] 466 467 This one is probably most readable user-friednly variant.", &["-vv"], vec!(("-v", Counted(2)))); 468 469 test_user_error!(test_123_testcases, "Usage: prog [-v | -vv | -vvv] 470 471 This one is probably most readable user-friednly variant.", &["-vvvv"]); 472 473 test_expect!(test_124_testcases, "usage: prog [--ver --ver]", &["--ver", "--ver"], vec!(("--ver", Counted(2)))); 474 475 test_expect!(test_125_testcases, "usage: prog [go]", &["go"], vec!(("go", Switch(true)))); 476 477 test_expect!(test_126_testcases, "usage: prog [go go]", &[], vec!(("go", Counted(0)))); 478 479 test_expect!(test_127_testcases, "usage: prog [go go]", &["go"], vec!(("go", Counted(1)))); 480 481 test_expect!(test_128_testcases, "usage: prog [go go]", &["go", "go"], vec!(("go", Counted(2)))); 482 483 test_user_error!(test_129_testcases, "usage: prog [go go]", &["go", "go", "go"]); 484 485 test_expect!(test_130_testcases, "usage: prog go...", &["go", "go", "go", "go", "go"], vec!(("go", Counted(5)))); 486 487 test_expect!(test_131_testcases, "usage: prog [options] [-a] 488 489 options: -a 490 -b", &["-a"], vec!(("-a", Switch(true)), ("-b", Switch(false)))); 491 492 test_user_error!(test_132_testcases, "usage: prog [options] [-a] 493 494 options: -a 495 -b", &["-aa"]); 496 497 test_expect!(test_133_testcases, "Usage: prog [options] A 498 499 Options: 500 -q Be quiet 501 -v Be verbose.", &["arg"], vec!(("A", Plain(Some("arg".to_string()))), ("-v", Switch(false)), ("-q", Switch(false)))); 502 503 test_expect!(test_134_testcases, "Usage: prog [options] A 504 505 Options: 506 -q Be quiet 507 -v Be verbose.", &["-v", "arg"], vec!(("A", Plain(Some("arg".to_string()))), ("-v", Switch(true)), ("-q", Switch(false)))); 508 509 test_expect!(test_135_testcases, "Usage: prog [options] A 510 511 Options: 512 -q Be quiet 513 -v Be verbose.", &["-q", "arg"], vec!(("A", Plain(Some("arg".to_string()))), ("-v", Switch(false)), ("-q", Switch(true)))); 514 515 test_expect!(test_136_testcases, "usage: prog [-]", &["-"], vec!(("-", Switch(true)))); 516 517 test_expect!(test_137_testcases, "usage: prog [-]", &[], vec!(("-", Switch(false)))); 518 519 test_expect!(test_138_testcases, "usage: prog [NAME [NAME ...]]", &["a", "b"], vec!(("NAME", List(vec!("a".to_string(), "b".to_string()))))); 520 521 test_expect!(test_139_testcases, "usage: prog [NAME [NAME ...]]", &[], vec!(("NAME", List(vec!())))); 522 523 test_expect!(test_140_testcases, "usage: prog [options] 524 525 options: 526 -a Add 527 -m <msg> Message", &["-a"], vec!(("-m", Plain(None)), ("-a", Switch(true)))); 528 529 test_expect!(test_141_testcases, "usage: prog --hello", &["--hello"], vec!(("--hello", Switch(true)))); 530 531 test_expect!(test_142_testcases, "usage: prog [--hello=<world>]", &[], vec!(("--hello", Plain(None)))); 532 533 test_expect!(test_143_testcases, "usage: prog [--hello=<world>]", &["--hello", "wrld"], vec!(("--hello", Plain(Some("wrld".to_string()))))); 534 535 test_expect!(test_144_testcases, "usage: prog [-o]", &[], vec!(("-o", Switch(false)))); 536 537 test_expect!(test_145_testcases, "usage: prog [-o]", &["-o"], vec!(("-o", Switch(true)))); 538 539 test_expect!(test_146_testcases, "usage: prog [-opr]", &["-op"], vec!(("-o", Switch(true)), ("-p", Switch(true)), ("-r", Switch(false)))); 540 541 test_expect!(test_147_testcases, "usage: git [-v | --verbose]", &["-v"], vec!(("-v", Switch(true)), ("--verbose", Switch(false)))); 542 543 test_expect!(test_148_testcases, "usage: git remote [-v | --verbose]", &["remote", "-v"], vec!(("-v", Switch(true)), ("remote", Switch(true)), ("--verbose", Switch(false)))); 544 545 test_expect!(test_149_testcases, "usage: prog", &[], vec!()); 546 547 test_expect!(test_150_testcases, "usage: prog 548 prog <a> <b>", &["1", "2"], vec!(("<a>", Plain(Some("1".to_string()))), ("<b>", Plain(Some("2".to_string()))))); 549 550 test_expect!(test_151_testcases, "usage: prog 551 prog <a> <b>", &[], vec!(("<a>", Plain(None)), ("<b>", Plain(None)))); 552 553 test_expect!(test_152_testcases, "usage: prog <a> <b> 554 prog", &[], vec!(("<a>", Plain(None)), ("<b>", Plain(None)))); 555 556 test_expect!(test_153_testcases, "usage: prog [--file=<f>]", &[], vec!(("--file", Plain(None)))); 557 558 test_expect!(test_154_testcases, "usage: prog [--file=<f>] 559 560 options: --file <a>", &[], vec!(("--file", Plain(None)))); 561 562 test_expect!(test_155_testcases, "Usage: prog [-a <host:port>] 563 564 Options: -a, --address <host:port> TCP address [default: localhost:6283].", &[], vec!(("--address", Plain(Some("localhost:6283".to_string()))))); 565 566 test_expect!(test_156_testcases, "usage: prog --long=<arg> ...", &["--long", "one"], vec!(("--long", List(vec!("one".to_string()))))); 567 568 test_expect!(test_157_testcases, "usage: prog --long=<arg> ...", &["--long", "one", "--long", "two"], vec!(("--long", List(vec!("one".to_string(), "two".to_string()))))); 569 570 test_expect!(test_158_testcases, "usage: prog (go <direction> --speed=<km/h>)...", &["go", "left", "--speed=5", "go", "right", "--speed=9"], vec!(("go", Counted(2)), ("<direction>", List(vec!("left".to_string(), "right".to_string()))), ("--speed", List(vec!("5".to_string(), "9".to_string()))))); 571 572 test_expect!(test_159_testcases, "usage: prog [options] -a 573 574 options: -a", &["-a"], vec!(("-a", Switch(true)))); 575 576 test_expect!(test_160_testcases, "usage: prog [-o <o>]... 577 578 options: -o <o> [default: x]", &["-o", "this", "-o", "that"], vec!(("-o", List(vec!("this".to_string(), "that".to_string()))))); 579 580 test_expect!(test_161_testcases, "usage: prog [-o <o>]... 581 582 options: -o <o> [default: x]", &[], vec!(("-o", List(vec!("x".to_string()))))); 583 584 test_expect!(test_162_testcases, "usage: prog [-o <o>]... 585 586 options: -o <o> [default: x y]", &["-o", "this"], vec!(("-o", List(vec!("this".to_string()))))); 587 588 test_expect!(test_163_testcases, "usage: prog [-o <o>]... 589 590 options: -o <o> [default: x y]", &[], vec!(("-o", List(vec!("x".to_string(), "y".to_string()))))); 591 592 test_expect!(test_164_testcases, "usage: prog -pPATH 593 594 options: -p PATH", &["-pHOME"], vec!(("-p", Plain(Some("HOME".to_string()))))); 595 596 test_expect!(test_165_testcases, "Usage: foo (--xx=X|--yy=Y)...", &["--xx=1", "--yy=2"], vec!(("--yy", List(vec!("2".to_string()))), ("--xx", List(vec!("1".to_string()))))); 597 598 test_expect!(test_166_testcases, "usage: prog [<input file>]", &["f.txt"], vec!(("<input file>", Plain(Some("f.txt".to_string()))))); 599 600 test_expect!(test_167_testcases, "usage: prog [--input=<file name>]...", &["--input", "a.txt", "--input=b.txt"], vec!(("--input", List(vec!("a.txt".to_string(), "b.txt".to_string()))))); 601 602 test_expect!(test_168_testcases, "usage: prog good [options] 603 prog fail [options] 604 605 options: --loglevel=N", &["fail", "--loglevel", "5"], vec!(("fail", Switch(true)), ("good", Switch(false)), ("--loglevel", Plain(Some("5".to_string()))))); 606 607 test_expect!(test_169_testcases, "usage:prog --foo", &["--foo"], vec!(("--foo", Switch(true)))); 608 609 test_expect!(test_170_testcases, "PROGRAM USAGE: prog --foo", &["--foo"], vec!(("--foo", Switch(true)))); 610 611 test_expect!(test_171_testcases, "Usage: prog --foo 612 prog --bar 613 NOT PART OF SECTION", &["--foo"], vec!(("--bar", Switch(false)), ("--foo", Switch(true)))); 614 615 test_expect!(test_172_testcases, "Usage: 616 prog --foo 617 prog --bar 618 619 NOT PART OF SECTION", &["--foo"], vec!(("--bar", Switch(false)), ("--foo", Switch(true)))); 620 621 test_expect!(test_173_testcases, "Usage: 622 prog --foo 623 prog --bar 624 NOT PART OF SECTION", &["--foo"], vec!(("--bar", Switch(false)), ("--foo", Switch(true)))); 625 626 test_expect!(test_174_testcases, "Usage: prog [options] 627 628 global options: --foo 629 local options: --baz 630 --bar 631 other options: 632 --egg 633 --spam 634 -not-an-option-", &["--bar", "--egg"], vec!(("--bar", Switch(true)), ("--egg", Switch(true)), ("--spam", Switch(false)))); 635 636 test_expect!(test_175_testcases, "Usage: prog [-a] [--] [<arg>...]", &["-a"], vec!(("<arg>", List(vec!())), ("-a", Switch(true)))); 637 638 test_expect!(test_176_testcases, "Usage: prog [-a] [--] [<arg>...]", &["--"], vec!(("<arg>", List(vec!())), ("-a", Switch(false)))); 639 640 test_expect!(test_177_testcases, "Usage: prog [-a] [--] [<arg>...]", &["-a", "--", "-b"], vec!(("<arg>", List(vec!("-b".to_string()))), ("-a", Switch(true)))); 641 642 test_expect!(test_178_testcases, "Usage: prog [-a] [--] [<arg>...]", &["-a", "--", "-a"], vec!(("<arg>", List(vec!("-a".to_string()))), ("-a", Switch(true)))); 643 644 test_expect!(test_179_testcases, "Usage: prog [-a] [--] [<arg>...]", &["--", "-a"], vec!(("<arg>", List(vec!("-a".to_string()))), ("-a", Switch(false)))); 645 646 test_expect!(test_180_testcases, "Usage: prog test [options] [--] [<args>...]", &["test", "a", "--", "-b"], vec!(("<args>", List(vec!("a".to_string(), "-b".to_string()))))); 647 648 test_expect!(test_181_testcases, "Usage: prog test [options] [--] [<args>...]", &["test", "--", "-b"], vec!(("<args>", List(vec!("-b".to_string()))))); 649 650 test_user_error!(test_182_testcases, "Usage: prog test [options] [--] [<args>...]", &["test", "a", "-b"]); 651 652 test_expect!(test_183_testcases, "Usage: prog test [options] [--] [<args>...]", &["test", "--", "-b", "--"], vec!(("<args>", List(vec!("-b".to_string(), "--".to_string()))))); 653 654 test_expect!(test_184_testcases, "Usage: prog [options] 655 656 Options: 657 -a ... Foo", &[], vec!(("-a", Counted(0)))); 658 659 test_expect!(test_185_testcases, "Usage: prog [options] 660 661 Options: 662 -a ... Foo", &["-a"], vec!(("-a", Counted(1)))); 663 664 test_expect!(test_186_testcases, "Usage: prog [options] 665 666 Options: 667 -a ... Foo", &["-a", "-a"], vec!(("-a", Counted(2)))); 668 669 test_expect!(test_187_testcases, "Usage: prog [options] 670 671 Options: 672 -a ... Foo", &["-aa"], vec!(("-a", Counted(2)))); 673 674 test_expect!(test_188_testcases, "Usage: prog [options] 675 676 Options: 677 -a ... Foo", &["-a", "-a", "-a"], vec!(("-a", Counted(3)))); 678 679 test_expect!(test_189_testcases, "Usage: prog [options] 680 681 Options: 682 -a ... Foo", &["-aaa"], vec!(("-a", Counted(3)))); 683 684 test_expect!(test_190_testcases, "Usage: prog [options] 685 686 Options: 687 -a, --all ... Foo", &[], vec!(("-a", Counted(0)))); 688 689 test_expect!(test_191_testcases, "Usage: prog [options] 690 691 Options: 692 -a, --all ... Foo", &["-a"], vec!(("-a", Counted(1)))); 693 694 test_expect!(test_192_testcases, "Usage: prog [options] 695 696 Options: 697 -a, --all ... Foo", &["-a", "--all"], vec!(("-a", Counted(2)))); 698 699 test_expect!(test_193_testcases, "Usage: prog [options] 700 701 Options: 702 -a, --all ... Foo", &["-aa", "--all"], vec!(("-a", Counted(3)))); 703 704 test_expect!(test_194_testcases, "Usage: prog [options] 705 706 Options: 707 -a, --all ... Foo", &["--all"], vec!(("-a", Counted(1)))); 708 709 test_expect!(test_195_testcases, "Usage: prog [options] 710 711 Options: 712 -a, --all ... Foo", &["--all", "--all"], vec!(("-a", Counted(2)))); 713 714 test_expect!(test_196_testcases, "Usage: prog [options] 715 716 Options: 717 -a, --all ARG ... Foo", &[], vec!(("-a", List(vec!())))); 718 719 test_expect!(test_197_testcases, "Usage: prog [options] 720 721 Options: 722 -a, --all ARG ... Foo", &["-a", "1"], vec!(("-a", List(vec!("1".to_string()))))); 723 724 test_expect!(test_198_testcases, "Usage: prog [options] 725 726 Options: 727 -a, --all ARG ... Foo", &["-a", "2", "--all", "3"], vec!(("-a", List(vec!("2".to_string(), "3".to_string()))))); 728 729 test_expect!(test_199_testcases, "Usage: prog [options] 730 731 Options: 732 -a, --all ARG ... Foo", &["-a4", "-a5", "--all", "6"], vec!(("-a", List(vec!("4".to_string(), "5".to_string(), "6".to_string()))))); 733 734 test_expect!(test_200_testcases, "Usage: prog [options] 735 736 Options: 737 -a, --all ARG ... Foo", &["--all", "7"], vec!(("-a", List(vec!("7".to_string()))))); 738 739 test_expect!(test_201_testcases, "Usage: prog [options] 740 741 Options: 742 -a, --all ARG ... Foo", &["--all", "8", "--all", "9"], vec!(("-a", List(vec!("8".to_string(), "9".to_string()))))); 743 744 test_expect!(test_202_testcases, "Usage: prog [options] 745 746 Options: 747 --all ... Foo", &[], vec!(("--all", Counted(0)))); 748 749 test_expect!(test_203_testcases, "Usage: prog [options] 750 751 Options: 752 --all ... Foo", &["--all"], vec!(("--all", Counted(1)))); 753 754 test_expect!(test_204_testcases, "Usage: prog [options] 755 756 Options: 757 --all ... Foo", &["--all", "--all"], vec!(("--all", Counted(2)))); 758 759 test_expect!(test_205_testcases, "Usage: prog [options] 760 761 Options: 762 --all=ARG ... Foo", &[], vec!(("--all", List(vec!())))); 763 764 test_expect!(test_206_testcases, "Usage: prog [options] 765 766 Options: 767 --all=ARG ... Foo", &["--all", "1"], vec!(("--all", List(vec!("1".to_string()))))); 768 769 test_expect!(test_207_testcases, "Usage: prog [options] 770 771 Options: 772 --all=ARG ... Foo", &["--all", "2", "--all", "3"], vec!(("--all", List(vec!("2".to_string(), "3".to_string()))))); 773 774 test_user_error!(test_208_testcases, "Usage: prog [options] 775 776 Options: 777 --all ... Foo", &["--all", "--all"]); 778 779 test_user_error!(test_209_testcases, "Usage: prog [options] 780 781 Options: 782 --all ARG ... Foo", &["--all", "foo", "--all", "bar"]); 783 784 test_expect!(test_210_testcases, "Usage: prog --speed=ARG", &["--speed", "20"], vec!(("--speed", Plain(Some("20".to_string()))))); 785 786 test_expect!(test_211_testcases, "Usage: prog --speed=ARG", &["--speed=20"], vec!(("--speed", Plain(Some("20".to_string()))))); 787 788 test_expect!(test_212_testcases, "Usage: prog --speed=ARG", &["--speed=-20"], vec!(("--speed", Plain(Some("-20".to_string()))))); 789 790 test_expect!(test_213_testcases, "Usage: prog --speed=ARG", &["--speed", "-20"], vec!(("--speed", Plain(Some("-20".to_string()))))); 791 792 test_expect!(test_214_testcases, "usage: prog [--datetime=<regex>] 793 794 options: --datetime=<regex> Regex for datetimes [default: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}]", &[], vec!(("--datetime", Plain(Some("^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}".to_string()))))); 795 796 test_expect!(test_215_testcases, "Usage: prog [options] 797 798 Options: 799 -x ARG 800 -y", &["-x-y"], vec!(("-x", Plain(Some("-y".to_string()))))); 801 802