Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
c5687e39
R
Rust
项目概览
int
/
Rust
11 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c5687e39
编写于
8月 09, 2019
作者:
R
Ralf Jung
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enable flt2dec tests in Miri
上级
5aa3d9a7
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
41 addition
and
7 deletion
+41
-7
src/libcore/tests/num/flt2dec/estimator.rs
src/libcore/tests/num/flt2dec/estimator.rs
+6
-1
src/libcore/tests/num/flt2dec/mod.rs
src/libcore/tests/num/flt2dec/mod.rs
+14
-2
src/libcore/tests/num/flt2dec/random.rs
src/libcore/tests/num/flt2dec/random.rs
+19
-4
src/libcore/tests/num/flt2dec/strategy/dragon.rs
src/libcore/tests/num/flt2dec/strategy/dragon.rs
+1
-0
src/libcore/tests/num/flt2dec/strategy/grisu.rs
src/libcore/tests/num/flt2dec/strategy/grisu.rs
+1
-0
未找到文件。
src/libcore/tests/num/flt2dec/estimator.rs
浏览文件 @
c5687e39
...
...
@@ -42,7 +42,12 @@ fn test_estimate_scaling_factor() {
assert_almost_eq!
(
estimate_scaling_factor
(
1
,
-
1074
),
-
323
);
assert_almost_eq!
(
estimate_scaling_factor
(
0x1fffffffffffff
,
971
),
309
);
for
i
in
-
1074
..
972
{
#[cfg(not(miri))]
// Miri is too slow
let
iter
=
-
1074
..
972
;
#[cfg(miri)]
let
iter
=
(
-
1074
..
972
)
.step_by
(
11
);
for
i
in
iter
{
let
expected
=
super
::
ldexp_f64
(
1.0
,
i
)
.log10
()
.ceil
();
assert_almost_eq!
(
estimate_scaling_factor
(
1
,
i
as
i16
),
expected
as
i16
);
}
...
...
src/libcore/tests/num/flt2dec/mod.rs
浏览文件 @
c5687e39
#![cfg(not(miri))]
// Miri does not implement ldexp, which most tests here need
use
std
::
prelude
::
v1
::
*
;
use
std
::{
str
,
i16
,
f32
,
f64
,
fmt
};
...
...
@@ -257,6 +255,7 @@ pub fn f32_shortest_sanity_test<F>(mut f: F) where F: FnMut(&Decoded, &mut [u8])
check_shortest!
(
f
(
minf32
)
=>
b
"1"
,
-
44
);
}
#[cfg(not(miri))]
// Miri is too slow
pub
fn
f32_exact_sanity_test
<
F
>
(
mut
f
:
F
)
where
F
:
FnMut
(
&
Decoded
,
&
mut
[
u8
],
i16
)
->
(
usize
,
i16
)
{
let
minf32
=
ldexp_f32
(
1.0
,
-
149
);
...
...
@@ -362,6 +361,7 @@ pub fn f64_shortest_sanity_test<F>(mut f: F) where F: FnMut(&Decoded, &mut [u8])
check_shortest!
(
f
(
minf64
)
=>
b
"5"
,
-
323
);
}
#[cfg(not(miri))]
// Miri is too slow
pub
fn
f64_exact_sanity_test
<
F
>
(
mut
f
:
F
)
where
F
:
FnMut
(
&
Decoded
,
&
mut
[
u8
],
i16
)
->
(
usize
,
i16
)
{
let
minf64
=
ldexp_f64
(
1.0
,
-
1074
);
...
...
@@ -553,6 +553,10 @@ fn to_string<T, F>(f: &mut F, v: T, sign: Sign, frac_digits: usize, upper: bool)
assert_eq!
(
to_string
(
f
,
minf64
,
Minus
,
324
,
false
),
format!
(
"0.{:0>323}5"
,
""
));
assert_eq!
(
to_string
(
f
,
minf64
,
Minus
,
325
,
false
),
format!
(
"0.{:0>323}50"
,
""
));
if
cfg!
(
miri
)
{
// Miri is too slow
return
;
}
// very large output
assert_eq!
(
to_string
(
f
,
1.1
,
Minus
,
80000
,
false
),
format!
(
"1.1{:0>79999}"
,
""
));
}
...
...
@@ -807,6 +811,10 @@ fn to_string<T, F>(f: &mut F, v: T, sign: Sign, ndigits: usize, upper: bool) ->
"1.401298464324817070923729583289916131280261941876515771757068283
\
8897910826858606014866381883621215820312500000000000000000000000e-45"
);
if
cfg!
(
miri
)
{
// Miri is too slow
return
;
}
assert_eq!
(
to_string
(
f
,
f64
::
MAX
,
Minus
,
1
,
false
),
"2e308"
);
assert_eq!
(
to_string
(
f
,
f64
::
MAX
,
Minus
,
2
,
false
),
"1.8e308"
);
assert_eq!
(
to_string
(
f
,
f64
::
MAX
,
Minus
,
4
,
false
),
"1.798e308"
);
...
...
@@ -1040,6 +1048,10 @@ fn to_string<T, F>(f: &mut F, v: T, sign: Sign, frac_digits: usize, upper: bool)
assert_eq!
(
to_string
(
f
,
f32
::
MAX
,
Minus
,
2
,
false
),
"340282346638528859811704183484516925440.00"
);
if
cfg!
(
miri
)
{
// Miri is too slow
return
;
}
let
minf32
=
ldexp_f32
(
1.0
,
-
149
);
assert_eq!
(
to_string
(
f
,
minf32
,
Minus
,
0
,
false
),
"0"
);
assert_eq!
(
to_string
(
f
,
minf32
,
Minus
,
1
,
false
),
"0.0"
);
...
...
src/libcore/tests/num/flt2dec/random.rs
浏览文件 @
c5687e39
...
...
@@ -109,8 +109,13 @@ pub fn f32_exhaustive_equivalence_test<F, G>(f: F, g: G, k: usize)
#[test]
fn
shortest_random_equivalence_test
()
{
use
core
::
num
::
flt2dec
::
strategy
::
dragon
::
format_shortest
as
fallback
;
f64_random_equivalence_test
(
format_shortest_opt
,
fallback
,
MAX_SIG_DIGITS
,
10_000
);
f32_random_equivalence_test
(
format_shortest_opt
,
fallback
,
MAX_SIG_DIGITS
,
10_000
);
#[cfg(not(miri))]
// Miri is too slow
const
N
:
usize
=
10_000
;
#[cfg(miri)]
const
N
:
usize
=
20
;
f64_random_equivalence_test
(
format_shortest_opt
,
fallback
,
MAX_SIG_DIGITS
,
N
);
f32_random_equivalence_test
(
format_shortest_opt
,
fallback
,
MAX_SIG_DIGITS
,
N
);
}
#[test]
#[ignore]
// it is too expensive
...
...
@@ -138,17 +143,27 @@ fn shortest_f64_hard_random_equivalence_test() {
#[test]
fn
exact_f32_random_equivalence_test
()
{
use
core
::
num
::
flt2dec
::
strategy
::
dragon
::
format_exact
as
fallback
;
#[cfg(not(miri))]
// Miri is too slow
const
N
:
usize
=
1_000
;
#[cfg(miri)]
const
N
:
usize
=
10
;
for
k
in
1
..
21
{
f32_random_equivalence_test
(|
d
,
buf
|
format_exact_opt
(
d
,
buf
,
i16
::
MIN
),
|
d
,
buf
|
fallback
(
d
,
buf
,
i16
::
MIN
),
k
,
1_000
);
|
d
,
buf
|
fallback
(
d
,
buf
,
i16
::
MIN
),
k
,
N
);
}
}
#[test]
fn
exact_f64_random_equivalence_test
()
{
use
core
::
num
::
flt2dec
::
strategy
::
dragon
::
format_exact
as
fallback
;
#[cfg(not(miri))]
// Miri is too slow
const
N
:
usize
=
1_000
;
#[cfg(miri)]
const
N
:
usize
=
5
;
for
k
in
1
..
21
{
f64_random_equivalence_test
(|
d
,
buf
|
format_exact_opt
(
d
,
buf
,
i16
::
MIN
),
|
d
,
buf
|
fallback
(
d
,
buf
,
i16
::
MIN
),
k
,
1_000
);
|
d
,
buf
|
fallback
(
d
,
buf
,
i16
::
MIN
),
k
,
N
);
}
}
src/libcore/tests/num/flt2dec/strategy/dragon.rs
浏览文件 @
c5687e39
...
...
@@ -23,6 +23,7 @@ fn shortest_sanity_test() {
}
#[test]
#[cfg(not(miri))]
// Miri is too slow
fn
exact_sanity_test
()
{
// This test ends up running what I can only assume is some corner-ish case
// of the `exp2` library function, defined in whatever C runtime we're
...
...
src/libcore/tests/num/flt2dec/strategy/grisu.rs
浏览文件 @
c5687e39
...
...
@@ -36,6 +36,7 @@ fn shortest_sanity_test() {
}
#[test]
#[cfg(not(miri))]
// Miri is too slow
fn
exact_sanity_test
()
{
// See comments in dragon.rs's exact_sanity_test for why this test is
// ignored on MSVC
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录