217 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			217 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			V
		
	
	
| import cli
 | |
| 
 | |
| fn test_if_string_flag_parses() {
 | |
| 	mut flag := cli.Flag{
 | |
| 		flag: .string
 | |
| 		name: 'flag'
 | |
| 	}
 | |
| 	flag.parse(['-flag', 'value1'], false) or { panic(err) }
 | |
| 	mut value := flag.get_string() or { panic(err) }
 | |
| 	assert value == 'value1'
 | |
| 
 | |
| 	flag = cli.Flag{
 | |
| 		flag: .string
 | |
| 		name: 'flag'
 | |
| 	}
 | |
| 	flag.parse(['-flag=value2'], false) or { panic(err) }
 | |
| 	value = flag.get_string() or { panic(err) }
 | |
| 	assert value == 'value2'
 | |
| 
 | |
| 	flag = cli.Flag{
 | |
| 		flag: .string_array
 | |
| 		name: 'flag'
 | |
| 	}
 | |
| 	flag.parse(['-flag=value1'], false) or { panic(err) }
 | |
| 	flag.parse(['-flag=value2'], false) or { panic(err) }
 | |
| 	mut values := flag.get_strings() or { panic(err) }
 | |
| 	assert values == ['value1', 'value2']
 | |
| 
 | |
| 	flags := [
 | |
| 		cli.Flag{
 | |
| 			flag: .string_array
 | |
| 			name: 'flag'
 | |
| 			value: ['a', 'b', 'c']
 | |
| 		},
 | |
| 		cli.Flag{
 | |
| 			flag: .string
 | |
| 			name: 'flag2'
 | |
| 		},
 | |
| 	]
 | |
| 
 | |
| 	values = flags.get_strings('flag') or { panic(err) }
 | |
| 	assert values == ['a', 'b', 'c']
 | |
| }
 | |
| 
 | |
| fn test_if_bool_flag_parses() {
 | |
| 	mut flag := cli.Flag{
 | |
| 		flag: .bool
 | |
| 		name: 'flag'
 | |
| 	}
 | |
| 	mut value := false
 | |
| 	flag.parse(['-flag'], false) or { panic(err) }
 | |
| 	value = flag.get_bool() or { panic(err) }
 | |
| 	assert value == true
 | |
| 	flag.parse(['-flag', 'false'], false) or { panic(err) }
 | |
| 	value = flag.get_bool() or { panic(err) }
 | |
| 	assert value == false
 | |
| 	flag.parse(['-flag', 'true'], false) or { panic(err) }
 | |
| 	value = flag.get_bool() or { panic(err) }
 | |
| 	assert value == true
 | |
| 	flag.parse(['-flag=false'], false) or { panic(err) }
 | |
| 	value = flag.get_bool() or { panic(err) }
 | |
| 	assert value == false
 | |
| 	flag.parse(['-flag=true'], false) or { panic(err) }
 | |
| 	value = flag.get_bool() or { panic(err) }
 | |
| 	assert value == true
 | |
| }
 | |
| 
 | |
| fn test_if_int_flag_parses() {
 | |
| 	mut flag := cli.Flag{
 | |
| 		flag: .int
 | |
| 		name: 'flag'
 | |
| 	}
 | |
| 
 | |
| 	mut value := 0
 | |
| 	flag.parse(['-flag', '42'], false) or { panic(err) }
 | |
| 	value = flag.get_int() or { panic(err) }
 | |
| 	assert value == 42
 | |
| 
 | |
| 	flag = cli.Flag{
 | |
| 		flag: .int
 | |
| 		name: 'flag'
 | |
| 	}
 | |
| 
 | |
| 	flag.parse(['-flag=45'], false) or { panic(err) }
 | |
| 	value = flag.get_int() or { panic(err) }
 | |
| 	assert value == 45
 | |
| 
 | |
| 	flag = cli.Flag{
 | |
| 		flag: .int_array
 | |
| 		name: 'flag'
 | |
| 	}
 | |
| 
 | |
| 	flag.parse(['-flag=42'], false) or { panic(err) }
 | |
| 	flag.parse(['-flag=45'], false) or { panic(err) }
 | |
| 	mut values := flag.get_ints() or { panic(err) }
 | |
| 	assert values == [42, 45]
 | |
| 
 | |
| 	flags := [
 | |
| 		cli.Flag{
 | |
| 			flag: .int_array
 | |
| 			name: 'flag'
 | |
| 			value: ['1', '2', '3']
 | |
| 		},
 | |
| 		cli.Flag{
 | |
| 			flag: .int
 | |
| 			name: 'flag2'
 | |
| 		},
 | |
| 	]
 | |
| 
 | |
| 	values = flags.get_ints('flag') or { panic(err) }
 | |
| 	assert values == [1, 2, 3]
 | |
| }
 | |
| 
 | |
| fn test_if_float_flag_parses() {
 | |
| 	mut flag := cli.Flag{
 | |
| 		flag: .float
 | |
| 		name: 'flag'
 | |
| 	}
 | |
| 	mut value := f64(0)
 | |
| 	flag.parse(['-flag', '3.14158'], false) or { panic(err) }
 | |
| 	value = flag.get_float() or { panic(err) }
 | |
| 	assert value == 3.14158
 | |
| 
 | |
| 	flag = cli.Flag{
 | |
| 		flag: .float
 | |
| 		name: 'flag'
 | |
| 	}
 | |
| 
 | |
| 	flag.parse(['-flag=3.14159'], false) or { panic(err) }
 | |
| 	value = flag.get_float() or { panic(err) }
 | |
| 	assert value == 3.14159
 | |
| 
 | |
| 	flag = cli.Flag{
 | |
| 		flag: .float_array
 | |
| 		name: 'flag'
 | |
| 	}
 | |
| 
 | |
| 	flag.parse(['-flag=3.1'], false) or { panic(err) }
 | |
| 	flag.parse(['-flag=1.3'], false) or { panic(err) }
 | |
| 	mut values := flag.get_floats() or { panic(err) }
 | |
| 	assert values == [3.1, 1.3]
 | |
| 
 | |
| 	flags := [
 | |
| 		cli.Flag{
 | |
| 			flag: .float_array
 | |
| 			name: 'flag'
 | |
| 			value: ['1.1', '2.2', '3.3']
 | |
| 		},
 | |
| 		cli.Flag{
 | |
| 			flag: .float
 | |
| 			name: 'flag2'
 | |
| 		},
 | |
| 	]
 | |
| 
 | |
| 	values = flags.get_floats('flag') or { panic(err) }
 | |
| 	assert values == [1.1, 2.2, 3.3]
 | |
| }
 | |
| 
 | |
| fn test_if_flag_parses_with_abbrev() {
 | |
| 	mut flag := cli.Flag{
 | |
| 		flag: .bool
 | |
| 		name: 'flag'
 | |
| 		abbrev: 'f'
 | |
| 	}
 | |
| 	mut value := false
 | |
| 	flag.parse(['--flag'], true) or { panic(err) }
 | |
| 	value = flag.get_bool() or { panic(err) }
 | |
| 	assert value == true
 | |
| 
 | |
| 	value = false
 | |
| 	flag = cli.Flag{
 | |
| 		flag: .bool
 | |
| 		name: 'flag'
 | |
| 		abbrev: 'f'
 | |
| 	}
 | |
| 	flag.parse(['-f'], true) or { panic(err) }
 | |
| 	value = flag.get_bool() or { panic(err) }
 | |
| 	assert value == true
 | |
| }
 | |
| 
 | |
| fn test_if_multiple_value_on_single_value() {
 | |
| 	mut flag := cli.Flag{
 | |
| 		flag: .float
 | |
| 		name: 'flag'
 | |
| 	}
 | |
| 
 | |
| 	flag.parse(['-flag', '3.14158'], false) or { panic(err) }
 | |
| 
 | |
| 	if _ := flag.parse(['-flag', '3.222'], false) {
 | |
| 		panic("No multiple value flag don't raise an error!")
 | |
| 	} else {
 | |
| 		assert true
 | |
| 	}
 | |
| }
 | |
| 
 | |
| fn test_default_value() {
 | |
| 	mut flag := cli.Flag{
 | |
| 		flag: .float
 | |
| 		name: 'flag'
 | |
| 		default_value: ['1.234']
 | |
| 	}
 | |
| 
 | |
| 	flag.parse(['-flag', '3.14158'], false) or { panic(err) }
 | |
| 	mut value := flag.get_float() or { panic(err) }
 | |
| 	assert value == 3.14158
 | |
| 
 | |
| 	flag = cli.Flag{
 | |
| 		flag: .float
 | |
| 		name: 'flag'
 | |
| 		default_value: ['1.234']
 | |
| 	}
 | |
| 
 | |
| 	flag.parse([''], false) or { panic(err) }
 | |
| 	value = flag.get_float() or { panic(err) }
 | |
| 	assert value == 1.234
 | |
| }
 |