Initial project import
This commit is contained in:
commit
23f2d29e32
11957 files changed
+1754577
No files matched your search
@@ -0,0 +1,55 @@
|
||||
import flag
|
||||
|
||||
const some_args_1 = ['--mix', '-m', 'ok', '-d', 'one', '--test=abc', '-d', 'two', '/path/to/a',
|
||||
'path/to/b']
|
||||
|
||||
struct Config {
|
||||
am string @[only: m]
|
||||
def_test string = 'def' @[long: test; short: t]
|
||||
device []string @[short: d]
|
||||
paths []string @[tail]
|
||||
mut:
|
||||
amount int = 1
|
||||
mix bool
|
||||
mix_hard bool = true
|
||||
}
|
||||
|
||||
fn test_using() {
|
||||
mut config := Config{
|
||||
mix_hard: false
|
||||
amount: 8
|
||||
}
|
||||
|
||||
config, _ = flag.using[Config](config, some_args_1)!
|
||||
assert config.mix
|
||||
assert config.mix_hard == false
|
||||
assert config.am == 'ok'
|
||||
assert config.def_test == 'abc'
|
||||
assert config.device[0] == 'one'
|
||||
assert config.device[1] == 'two'
|
||||
assert config.amount == 8
|
||||
assert config.paths.len == 2
|
||||
assert config.paths[0] == '/path/to/a'
|
||||
assert config.paths[1] == 'path/to/b'
|
||||
|
||||
config.mix = false // is changed to true via `--mix`
|
||||
config.mix_hard = true // should be kept as `true`, since no flags changed it
|
||||
config.amount = 888
|
||||
|
||||
config2, _ := flag.using[Config](config, some_args_1)!
|
||||
assert config2.mix
|
||||
assert config2.mix_hard
|
||||
assert config2.am == 'ok'
|
||||
assert config2.def_test == 'abc'
|
||||
assert config2.device[0] == 'one'
|
||||
assert config2.device[1] == 'two'
|
||||
assert config2.device[2] == 'one' // `config` already had items pushed from `some_args_1` so this grows when using `using[T](struct,...)`
|
||||
assert config2.device[3] == 'two'
|
||||
assert config2.device.len == 4
|
||||
assert config2.amount == 888
|
||||
assert config2.paths.len == 4
|
||||
assert config2.paths[0] == '/path/to/a'
|
||||
assert config2.paths[1] == 'path/to/b'
|
||||
assert config2.paths[2] == '/path/to/a'
|
||||
assert config2.paths[3] == 'path/to/b'
|
||||
}
|
||||
Reference in new issue
Block a user