diff options
Diffstat (limited to '')
| -rw-r--r-- | src/core.zig (renamed from core.zig) | 121 |
1 files changed, 0 insertions, 121 deletions
| @@ -370,124 +370,3 @@ pub fn Clap(comptime Id: type) type { | |||
| 370 | } | 370 | } |
| 371 | }; | 371 | }; |
| 372 | } | 372 | } |
| 373 | |||
| 374 | fn testNoErr(params: []const Param(u8), args: []const []const u8, ids: []const u8, values: []const ?[]const u8) void { | ||
| 375 | var arg_iter = ArgSliceIterator.init(args); | ||
| 376 | var iter = Clap(u8).init(params, &arg_iter.iter, debug.global_allocator); | ||
| 377 | |||
| 378 | var i: usize = 0; | ||
| 379 | while (iter.next() catch unreachable) |arg| : (i += 1) { | ||
| 380 | debug.assert(ids[i] == arg.id); | ||
| 381 | const expected_value = values[i] ?? { | ||
| 382 | debug.assert(arg.value == null); | ||
| 383 | continue; | ||
| 384 | }; | ||
| 385 | const actual_value = arg.value ?? unreachable; | ||
| 386 | |||
| 387 | debug.assert(mem.eql(u8, expected_value, actual_value)); | ||
| 388 | } | ||
| 389 | } | ||
| 390 | |||
| 391 | test "clap.core: short" { | ||
| 392 | const params = []Param(u8) { | ||
| 393 | Param(u8).init(0, false, Names.short('a')), | ||
| 394 | Param(u8).init(1, false, Names.short('b')), | ||
| 395 | Param(u8).init(2, true, Names.short('c')), | ||
| 396 | }; | ||
| 397 | |||
| 398 | testNoErr(params, [][]const u8 { "-a" }, []u8{0}, []?[]const u8{null}); | ||
| 399 | testNoErr(params, [][]const u8 { "-a", "-b" }, []u8{0,1}, []?[]const u8{null,null}); | ||
| 400 | testNoErr(params, [][]const u8 { "-ab" }, []u8{0,1}, []?[]const u8{null,null}); | ||
| 401 | testNoErr(params, [][]const u8 { "-c=100" }, []u8{2}, []?[]const u8{"100"}); | ||
| 402 | testNoErr(params, [][]const u8 { "-c100" }, []u8{2}, []?[]const u8{"100"}); | ||
| 403 | testNoErr(params, [][]const u8 { "-c", "100" }, []u8{2}, []?[]const u8{"100"}); | ||
| 404 | testNoErr(params, [][]const u8 { "-abc", "100" }, []u8{0,1,2}, []?[]const u8{null,null,"100"}); | ||
| 405 | testNoErr(params, [][]const u8 { "-abc=100" }, []u8{0,1,2}, []?[]const u8{null,null,"100"}); | ||
| 406 | testNoErr(params, [][]const u8 { "-abc100" }, []u8{0,1,2}, []?[]const u8{null,null,"100"}); | ||
| 407 | } | ||
| 408 | |||
| 409 | test "clap.core: long" { | ||
| 410 | const params = []Param(u8) { | ||
| 411 | Param(u8).init(0, false, Names.long("aa")), | ||
| 412 | Param(u8).init(1, false, Names.long("bb")), | ||
| 413 | Param(u8).init(2, true, Names.long("cc")), | ||
| 414 | }; | ||
| 415 | |||
| 416 | testNoErr(params, [][]const u8 { "--aa" }, []u8{0}, []?[]const u8{null}); | ||
| 417 | testNoErr(params, [][]const u8 { "--aa", "--bb" }, []u8{0,1}, []?[]const u8{null,null}); | ||
| 418 | testNoErr(params, [][]const u8 { "--cc=100" }, []u8{2}, []?[]const u8{"100"}); | ||
| 419 | testNoErr(params, [][]const u8 { "--cc", "100" }, []u8{2}, []?[]const u8{"100"}); | ||
| 420 | } | ||
| 421 | |||
| 422 | test "clap.core: bare" { | ||
| 423 | const params = []Param(u8) { | ||
| 424 | Param(u8).init(0, false, Names.bare("aa")), | ||
| 425 | Param(u8).init(1, false, Names.bare("bb")), | ||
| 426 | Param(u8).init(2, true, Names.bare("cc")), | ||
| 427 | }; | ||
| 428 | |||
| 429 | testNoErr(params, [][]const u8 { "aa" }, []u8{0}, []?[]const u8{null}); | ||
| 430 | testNoErr(params, [][]const u8 { "aa", "bb" }, []u8{0,1}, []?[]const u8{null,null}); | ||
| 431 | testNoErr(params, [][]const u8 { "cc=100" }, []u8{2}, []?[]const u8{"100"}); | ||
| 432 | testNoErr(params, [][]const u8 { "cc", "100" }, []u8{2}, []?[]const u8{"100"}); | ||
| 433 | } | ||
| 434 | |||
| 435 | test "clap.core: none" { | ||
| 436 | const params = []Param(u8) { | ||
| 437 | Param(u8).init(0, true, Names.none()), | ||
| 438 | }; | ||
| 439 | |||
| 440 | testNoErr(params, [][]const u8 { "aa" }, []u8{0}, []?[]const u8{"aa"}); | ||
| 441 | } | ||
| 442 | |||
| 443 | test "clap.core: all" { | ||
| 444 | const params = []Param(u8) { | ||
| 445 | Param(u8).init( | ||
| 446 | 0, | ||
| 447 | false, | ||
| 448 | Names{ | ||
| 449 | .bare = "aa", | ||
| 450 | .short = 'a', | ||
| 451 | .long = "aa", | ||
| 452 | } | ||
| 453 | ), | ||
| 454 | Param(u8).init( | ||
| 455 | 1, | ||
| 456 | false, | ||
| 457 | Names{ | ||
| 458 | .bare = "bb", | ||
| 459 | .short = 'b', | ||
| 460 | .long = "bb", | ||
| 461 | } | ||
| 462 | ), | ||
| 463 | Param(u8).init( | ||
| 464 | 2, | ||
| 465 | true, | ||
| 466 | Names{ | ||
| 467 | .bare = "cc", | ||
| 468 | .short = 'c', | ||
| 469 | .long = "cc", | ||
| 470 | } | ||
| 471 | ), | ||
| 472 | Param(u8).init(3, true, Names.none()), | ||
| 473 | }; | ||
| 474 | |||
| 475 | testNoErr(params, [][]const u8 { "-a" }, []u8{0}, []?[]const u8{null}); | ||
| 476 | testNoErr(params, [][]const u8 { "-a", "-b" }, []u8{0,1}, []?[]const u8{null,null}); | ||
| 477 | testNoErr(params, [][]const u8 { "-ab" }, []u8{0,1}, []?[]const u8{null,null}); | ||
| 478 | testNoErr(params, [][]const u8 { "-c=100" }, []u8{2}, []?[]const u8{"100"}); | ||
| 479 | testNoErr(params, [][]const u8 { "-c100" }, []u8{2}, []?[]const u8{"100"}); | ||
| 480 | testNoErr(params, [][]const u8 { "-c", "100" }, []u8{2}, []?[]const u8{"100"}); | ||
| 481 | testNoErr(params, [][]const u8 { "-abc", "100" }, []u8{0,1,2}, []?[]const u8{null,null,"100"}); | ||
| 482 | testNoErr(params, [][]const u8 { "-abc=100" }, []u8{0,1,2}, []?[]const u8{null,null,"100"}); | ||
| 483 | testNoErr(params, [][]const u8 { "-abc100" }, []u8{0,1,2}, []?[]const u8{null,null,"100"}); | ||
| 484 | testNoErr(params, [][]const u8 { "--aa" }, []u8{0}, []?[]const u8{null}); | ||
| 485 | testNoErr(params, [][]const u8 { "--aa", "--bb" }, []u8{0,1}, []?[]const u8{null,null}); | ||
| 486 | testNoErr(params, [][]const u8 { "--cc=100" }, []u8{2}, []?[]const u8{"100"}); | ||
| 487 | testNoErr(params, [][]const u8 { "--cc", "100" }, []u8{2}, []?[]const u8{"100"}); | ||
| 488 | testNoErr(params, [][]const u8 { "aa" }, []u8{0}, []?[]const u8{null}); | ||
| 489 | testNoErr(params, [][]const u8 { "aa", "bb" }, []u8{0,1}, []?[]const u8{null,null}); | ||
| 490 | testNoErr(params, [][]const u8 { "cc=100" }, []u8{2}, []?[]const u8{"100"}); | ||
| 491 | testNoErr(params, [][]const u8 { "cc", "100" }, []u8{2}, []?[]const u8{"100"}); | ||
| 492 | testNoErr(params, [][]const u8 { "dd" }, []u8{3}, []?[]const u8{"dd"}); | ||
| 493 | } | ||