ftoa: fix strconv/ftoa/f32_f64_to_string_test.v
parent
df37597f00
commit
885612afea
|
@ -21,7 +21,7 @@ const (
|
|||
'vlib/net/http/http_httpbin_test.v',
|
||||
'vlib/net/http/http_test.v',
|
||||
'vlib/regex/regex_test.v',
|
||||
'vlib/strconv/ftoa/f32_f64_to_string_test.v',
|
||||
'vlib/v/tests/const_embed_test.v',
|
||||
'vlib/v/tests/enum_bitfield_test.v',
|
||||
'vlib/v/tests/fixed_array_test.v',
|
||||
'vlib/v/tests/fn_test.v',
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* Float to string Test
|
||||
*
|
||||
**********************************************************************/
|
||||
module ftoa
|
||||
import strconv.ftoa
|
||||
import math
|
||||
|
||||
union Ufloat32 {
|
||||
|
@ -32,8 +32,8 @@ fn f32_from_bits1(b u32) f32 {
|
|||
return x.f
|
||||
}
|
||||
|
||||
const(
|
||||
test_cases_f32 = [
|
||||
fn test_float_to_str() {
|
||||
test_cases_f32 := [
|
||||
f32_from_bits1(0x0000_0000), // +0
|
||||
f32_from_bits1(0x8000_0000), // -0
|
||||
f32_from_bits1(0xFFC0_0001), // sNan
|
||||
|
@ -56,7 +56,7 @@ test_cases_f32 = [
|
|||
383260575764816448,
|
||||
]
|
||||
|
||||
exp_result_f32 = [
|
||||
exp_result_f32 := [
|
||||
"0e+00",
|
||||
"-0e+00",
|
||||
"nan",
|
||||
|
@ -79,7 +79,7 @@ exp_result_f32 = [
|
|||
"3.8326058e+17",
|
||||
]
|
||||
|
||||
test_cases_f64 = [
|
||||
test_cases_f64 := [
|
||||
f64_from_bits1(0x0000_0000_0000_0000), // +0
|
||||
f64_from_bits1(0x8000_0000_0000_0000), // -0
|
||||
f64_from_bits1(0x7FF0_0000_0000_0001), // sNan
|
||||
|
@ -108,7 +108,7 @@ test_cases_f64 = [
|
|||
-5.e-324,
|
||||
]
|
||||
|
||||
exp_result_f64 = [
|
||||
exp_result_f64 := [
|
||||
"0e+00",
|
||||
"-0e+00",
|
||||
"nan",
|
||||
|
@ -136,20 +136,19 @@ exp_result_f64 = [
|
|||
"5.e-324",
|
||||
"-5.e-324",
|
||||
]
|
||||
)
|
||||
|
||||
fn test_float_to_str(){
|
||||
// test f32
|
||||
for c,x in test_cases_f32 {
|
||||
s := f32_to_str(x,8)
|
||||
println(x)
|
||||
s := ftoa.f32_to_str(x,8)
|
||||
s1 := exp_result_f32[c]
|
||||
//println("$s1 $s")
|
||||
println("$s1 $s")
|
||||
assert s == s1
|
||||
}
|
||||
|
||||
// test f64
|
||||
for c,x in test_cases_f64 {
|
||||
s := f64_to_str(x,17)
|
||||
s := ftoa.f64_to_str(x,17)
|
||||
s1 := exp_result_f64[c]
|
||||
//println("$s1 $s")
|
||||
assert s == s1
|
||||
|
@ -157,16 +156,16 @@ fn test_float_to_str(){
|
|||
|
||||
// test long format
|
||||
for exp := 1 ; exp < 120 ; exp++ {
|
||||
a := f64_to_str_l(("1e"+exp.str()).f64())
|
||||
a := ftoa.f64_to_str_l(("1e"+exp.str()).f64())
|
||||
//println(a)
|
||||
assert a.len == exp + 1
|
||||
|
||||
b := f64_to_str_l(("1e-"+exp.str()).f64())
|
||||
b := ftoa.f64_to_str_l(("1e-"+exp.str()).f64())
|
||||
//println(b)
|
||||
assert b.len == exp + 2
|
||||
}
|
||||
|
||||
// test rounding str conversion
|
||||
assert f64_to_str(0.3456789123456, 4)=="3.4568e-01"
|
||||
assert f32_to_str(0.345678, 3)=="3.457e-01"
|
||||
assert ftoa.f64_to_str(0.3456789123456, 4)=="3.4568e-01"
|
||||
assert ftoa.f32_to_str(0.345678, 3)=="3.457e-01"
|
||||
}
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
import math
|
||||
|
||||
const (
|
||||
max_float = math.max_f32
|
||||
)
|
||||
|
||||
fn test_const_embed() {
|
||||
println(max_float)
|
||||
println(math.max_f32)
|
||||
assert max_float == math.max_f32
|
||||
}
|
Loading…
Reference in New Issue