188 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			188 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			V
		
	
	
import cli
 | 
						|
 | 
						|
fn test_if_command_parses_empty_args() {
 | 
						|
	mut cmd := cli.Command{
 | 
						|
		name: 'command', 
 | 
						|
		execute: empty_func,
 | 
						|
	}
 | 
						|
	cmd.parse(['command'])
 | 
						|
	assert cmd.name == 'command'
 | 
						|
		&& compare_arrays(cmd.args, [])
 | 
						|
}
 | 
						|
 | 
						|
fn test_if_command_parses_args() {
 | 
						|
	mut cmd := cli.Command{
 | 
						|
		name: 'command', 
 | 
						|
		execute: empty_func,
 | 
						|
	}
 | 
						|
	cmd.parse(['command', 'arg0', 'arg1'])
 | 
						|
 | 
						|
	assert cmd.name == 'command'
 | 
						|
		&& compare_arrays(cmd.args, ['arg0', 'arg1'])
 | 
						|
}
 | 
						|
 | 
						|
fn test_if_subcommands_parse_args() {
 | 
						|
	mut cmd := cli.Command{
 | 
						|
		name: 'command',
 | 
						|
	}
 | 
						|
	subcmd := cli.Command{
 | 
						|
		name: 'subcommand',
 | 
						|
		execute: empty_func,
 | 
						|
	}
 | 
						|
	cmd.add_command(subcmd)
 | 
						|
	cmd.parse(['command', 'subcommand', 'arg0', 'arg1'])
 | 
						|
}
 | 
						|
 | 
						|
fn if_subcommands_parse_args_func(cmd cli.Command) {
 | 
						|
	assert cmd.name == 'subcommand'
 | 
						|
		&& compare_arrays(cmd.args, ['arg0', 'arg1'])
 | 
						|
}
 | 
						|
 | 
						|
fn test_if_command_has_default_help_subcommand() {
 | 
						|
	mut cmd := cli.Command{
 | 
						|
		name: 'command',
 | 
						|
	}
 | 
						|
	cmd.parse(['command'])
 | 
						|
 | 
						|
	assert has_command(cmd, 'help')
 | 
						|
}
 | 
						|
 | 
						|
fn test_if_command_has_default_version_subcommand_if_version_is_set() {
 | 
						|
	mut cmd := cli.Command{
 | 
						|
		name: 'command',
 | 
						|
		version: '1.0.0',
 | 
						|
	}
 | 
						|
	cmd.parse(['command'])
 | 
						|
 | 
						|
	assert has_command(cmd, 'version')
 | 
						|
}
 | 
						|
 | 
						|
fn test_if_flag_gets_set() {
 | 
						|
	mut cmd := cli.Command{
 | 
						|
		name: 'command',
 | 
						|
		execute: if_flag_gets_set_func,
 | 
						|
	}
 | 
						|
	cmd.add_flag(cli.Flag{
 | 
						|
		flag: .string
 | 
						|
		name: 'flag'
 | 
						|
	})
 | 
						|
	cmd.parse(['command', '--flag', 'value'])
 | 
						|
}
 | 
						|
 | 
						|
fn if_flag_gets_set_func(cmd cli.Command) {
 | 
						|
	flag := cmd.flags.get_string('flag') or { panic(err) }
 | 
						|
	assert flag == 'value'
 | 
						|
}
 | 
						|
 | 
						|
fn test_if_flag_gets_set_with_abbrev() {
 | 
						|
	mut cmd := cli.Command{
 | 
						|
		name: 'command',
 | 
						|
		execute: if_flag_gets_set_with_abbrev_func,
 | 
						|
	}
 | 
						|
	cmd.add_flag(cli.Flag{
 | 
						|
		flag: .string,
 | 
						|
		name: 'flag',
 | 
						|
		abbrev: 'f',
 | 
						|
	})
 | 
						|
	cmd.parse(['command', '-f', 'value'])
 | 
						|
}
 | 
						|
 | 
						|
fn if_flag_gets_set_with_abbrev_func(cmd cli.Command) {
 | 
						|
	flag := cmd.flags.get_string('flag') or { panic(err) }
 | 
						|
	assert flag == 'value'
 | 
						|
}
 | 
						|
 | 
						|
fn test_if_multiple_flags_get_set() {
 | 
						|
	mut cmd := cli.Command{
 | 
						|
		name: 'command',
 | 
						|
		execute: if_multiple_flags_get_set_func,
 | 
						|
	}
 | 
						|
	cmd.add_flag(cli.Flag{
 | 
						|
		flag: .string
 | 
						|
		name: 'flag'
 | 
						|
	})
 | 
						|
	cmd.add_flag(cli.Flag{
 | 
						|
		flag: .int
 | 
						|
		name: 'value'
 | 
						|
	})
 | 
						|
	cmd.parse(['command', '--flag', 'value', '--value', '42'])
 | 
						|
}
 | 
						|
 | 
						|
fn if_multiple_flags_get_set_func(cmd cli.Command) {
 | 
						|
	flag := cmd.flags.get_string('flag') or { panic(err) }
 | 
						|
	value := cmd.flags.get_int('value') or { panic(err) }
 | 
						|
	assert flag == 'value'
 | 
						|
		&& value == 42
 | 
						|
}
 | 
						|
 | 
						|
fn test_if_flag_gets_set_in_subcommand() {
 | 
						|
	mut cmd := cli.Command{
 | 
						|
		name: 'command',
 | 
						|
		execute: empty_func,
 | 
						|
	}
 | 
						|
	mut subcmd := cli.Command{
 | 
						|
		name: 'subcommand',
 | 
						|
		execute: if_flag_gets_set_in_subcommand_func
 | 
						|
	}
 | 
						|
	subcmd.add_flag(cli.Flag{
 | 
						|
		flag: .string
 | 
						|
		name: 'flag'
 | 
						|
	})
 | 
						|
	cmd.add_command(subcmd)
 | 
						|
	cmd.parse(['command', 'subcommand', '--flag', 'value'])
 | 
						|
}
 | 
						|
 | 
						|
fn if_flag_gets_set_in_subcommand_func(cmd cli.Command) {
 | 
						|
	flag := cmd.flags.get_string('flag') or { panic(err) }
 | 
						|
	assert flag == 'value'
 | 
						|
}
 | 
						|
 | 
						|
fn test_if_global_flag_gets_set_in_subcommand() {
 | 
						|
	mut cmd := cli.Command{
 | 
						|
		name: 'command',
 | 
						|
		execute: empty_func,
 | 
						|
	}
 | 
						|
	cmd.add_flag(cli.Flag{
 | 
						|
		flag: .string,
 | 
						|
		name: 'flag',
 | 
						|
		global: true,
 | 
						|
	})
 | 
						|
	subcmd := cli.Command{
 | 
						|
		name: 'subcommand',
 | 
						|
		execute: if_global_flag_gets_set_in_subcommand_func,
 | 
						|
	}
 | 
						|
	cmd.add_command(subcmd)
 | 
						|
	cmd.parse(['command', '--flag', 'value', 'subcommand'])
 | 
						|
}
 | 
						|
 | 
						|
fn if_global_flag_gets_set_in_subcommand_func(cmd cli.Command) {
 | 
						|
	flag := cmd.flags.get_string('flag') or { panic(err) }
 | 
						|
	assert flag == 'value'
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
// helper functions
 | 
						|
 | 
						|
fn empty_func(cmd cli.Command) {}
 | 
						|
 | 
						|
fn has_command(cmd cli.Command, name string) bool {
 | 
						|
	for subcmd in cmd.commands {
 | 
						|
		if subcmd.name == name {
 | 
						|
			return true
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return false
 | 
						|
}
 | 
						|
 | 
						|
fn compare_arrays(array0 []string, array1 []string) bool {
 | 
						|
	if array0.len != array1.len {
 | 
						|
		return false
 | 
						|
	}
 | 
						|
	for i := 0; i < array0.len; i++ {
 | 
						|
		if array0[i] != array1[i] {
 | 
						|
			return false
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return true
 | 
						|
}
 |