85 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			V
		
	
	
| import strconv
 | |
| 
 | |
| fn test_atoi() ? {
 | |
| 	assert strconv.atoi('16') ? == 16
 | |
| 	assert strconv.atoi('+16') ? == 16
 | |
| 	assert strconv.atoi('-16') ? == -16
 | |
| 
 | |
| 	// invalid strings
 | |
| 	if x := strconv.atoi('str') {
 | |
| 		println(x)
 | |
| 		assert false
 | |
| 	} else {
 | |
| 		assert true
 | |
| 	}
 | |
| 	if x := strconv.atoi('string_longer_than_10_chars') {
 | |
| 		println(x)
 | |
| 		assert false
 | |
| 	} else {
 | |
| 		assert true
 | |
| 	}
 | |
| 	if x := strconv.atoi('') {
 | |
| 		println(x)
 | |
| 		assert false
 | |
| 	} else {
 | |
| 		assert true
 | |
| 	}
 | |
| }
 | |
| 
 | |
| fn test_parse_int() ? {
 | |
| 	// Different bases
 | |
| 	assert strconv.parse_int('16', 16, 0) ? == 0x16
 | |
| 	assert strconv.parse_int('16', 8, 0) ? == 0o16
 | |
| 	assert strconv.parse_int('11', 2, 0) ? == 3
 | |
| 	// Different bit sizes
 | |
| 	assert strconv.parse_int('127', 10, 8) ? == 127
 | |
| 	assert strconv.parse_int('128', 10, 8) ? == 127
 | |
| 	assert strconv.parse_int('32767', 10, 16) ? == 32767
 | |
| 	assert strconv.parse_int('32768', 10, 16) ? == 32767
 | |
| 	assert strconv.parse_int('2147483647', 10, 32) ? == 2147483647
 | |
| 	assert strconv.parse_int('2147483648', 10, 32) ? == 2147483647
 | |
| 	assert strconv.parse_int('9223372036854775807', 10, 64) ? == 9223372036854775807
 | |
| 	assert strconv.parse_int('9223372036854775808', 10, 64) ? == 9223372036854775807
 | |
| 	assert strconv.parse_int('baobab', 36, 64) ? == 683058467
 | |
| 	// Invalid bit sizes
 | |
| 	if x := strconv.parse_int('123', 10, -1) {
 | |
| 		println(x)
 | |
| 		assert false
 | |
| 	} else {
 | |
| 		assert true
 | |
| 	}
 | |
| 	if x := strconv.parse_int('123', 10, 65) {
 | |
| 		println(x)
 | |
| 		assert false
 | |
| 	} else {
 | |
| 		assert true
 | |
| 	}
 | |
| }
 | |
| 
 | |
| fn test_common_parse_uint2() {
 | |
| 	mut result, mut error := strconv.common_parse_uint2('1', 10, 8)
 | |
| 	assert result == 1
 | |
| 	assert error == 0
 | |
| 	result, error = strconv.common_parse_uint2('123', 10, 8)
 | |
| 	assert result == 123
 | |
| 	assert error == 0
 | |
| 	result, error = strconv.common_parse_uint2('123', 10, 65)
 | |
| 	assert result == 0
 | |
| 	assert error == -2
 | |
| 	result, error = strconv.common_parse_uint2('123', 10, -1)
 | |
| 	assert result == 0
 | |
| 	assert error == -2
 | |
| 	result, error = strconv.common_parse_uint2('', 10, 8)
 | |
| 	assert result == 0
 | |
| 	assert error == 1
 | |
| 	result, error = strconv.common_parse_uint2('1a', 10, 8)
 | |
| 	assert result == 1
 | |
| 	assert error == 2
 | |
| 	result, error = strconv.common_parse_uint2('12a', 10, 8)
 | |
| 	assert result == 12
 | |
| 	assert error == 3
 | |
| 	result, error = strconv.common_parse_uint2('123a', 10, 8)
 | |
| 	assert result == 123
 | |
| 	assert error == 4
 | |
| }
 |