Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
0ce912b2
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
0ce912b2
编写于
1月 09, 2014
作者:
P
psandoz
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8031187: DoubleStream.count is incorrect for a stream containing > Integer.MAX_VALUE elements
Reviewed-by: darcy
上级
61f6c013
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
165 addition
and
4 deletion
+165
-4
src/share/classes/java/util/stream/DoublePipeline.java
src/share/classes/java/util/stream/DoublePipeline.java
+2
-2
src/share/classes/java/util/stream/IntPipeline.java
src/share/classes/java/util/stream/IntPipeline.java
+2
-2
test/java/util/stream/test/org/openjdk/tests/java/util/stream/CountLargeTest.java
...st/org/openjdk/tests/java/util/stream/CountLargeTest.java
+70
-0
test/java/util/stream/test/org/openjdk/tests/java/util/stream/CountTest.java
...am/test/org/openjdk/tests/java/util/stream/CountTest.java
+91
-0
未找到文件。
src/share/classes/java/util/stream/DoublePipeline.java
浏览文件 @
0ce912b2
/*
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013,
2014,
Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -446,7 +446,7 @@ abstract class DoublePipeline<E_IN>
...
@@ -446,7 +446,7 @@ abstract class DoublePipeline<E_IN>
@Override
@Override
public
final
long
count
()
{
public
final
long
count
()
{
return
mapTo
Obj
(
e
->
null
).
mapToInt
(
e
->
1
).
sum
();
return
mapTo
Long
(
e
->
1L
).
sum
();
}
}
@Override
@Override
...
...
src/share/classes/java/util/stream/IntPipeline.java
浏览文件 @
0ce912b2
/*
/*
* Copyright (c) 2012, 201
3
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 201
4
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -426,7 +426,7 @@ abstract class IntPipeline<E_IN>
...
@@ -426,7 +426,7 @@ abstract class IntPipeline<E_IN>
@Override
@Override
public
final
long
count
()
{
public
final
long
count
()
{
return
asLongStream
().
map
(
e
->
1L
).
sum
();
return
mapToLong
(
e
->
1L
).
sum
();
}
}
@Override
@Override
...
...
test/java/util/stream/test/org/openjdk/tests/java/util/stream/CountLargeTest.java
0 → 100644
浏览文件 @
0ce912b2
/*
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/**
* @test
* @summary Tests counting of streams containing Integer.MAX_VALUE + 1 elements
* @bug 8031187
*/
package
org.openjdk.tests.java.util.stream
;
import
java.util.stream.LongStream
;
import
org.testng.annotations.Test
;
import
static
org
.
testng
.
Assert
.*;
@Test
public
class
CountLargeTest
{
static
final
long
EXPECTED_LARGE_COUNT
=
1L
+
Integer
.
MAX_VALUE
;
public
void
testRefLarge
()
{
long
count
=
LongStream
.
range
(
0
,
EXPECTED_LARGE_COUNT
)
.
mapToObj
(
e
->
null
).
count
();
assertEquals
(
count
,
EXPECTED_LARGE_COUNT
);
}
public
void
testIntLarge
()
{
long
count
=
LongStream
.
range
(
0
,
EXPECTED_LARGE_COUNT
)
.
mapToInt
(
e
->
0
).
count
();
assertEquals
(
count
,
EXPECTED_LARGE_COUNT
);
}
public
void
testLongLarge
()
{
long
count
=
LongStream
.
range
(
0
,
EXPECTED_LARGE_COUNT
)
.
count
();
assertEquals
(
count
,
EXPECTED_LARGE_COUNT
);
}
public
void
testDoubleLarge
()
{
long
count
=
LongStream
.
range
(
0
,
EXPECTED_LARGE_COUNT
)
.
mapToDouble
(
e
->
0.0
).
count
();
assertEquals
(
count
,
EXPECTED_LARGE_COUNT
);
}
}
test/java/util/stream/test/org/openjdk/tests/java/util/stream/CountTest.java
0 → 100644
浏览文件 @
0ce912b2
/*
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/**
* @test
* @summary Tests counting of streams
* @bug 8031187
*/
package
org.openjdk.tests.java.util.stream
;
import
java.util.concurrent.atomic.AtomicLong
;
import
java.util.stream.DoubleStream
;
import
java.util.stream.DoubleStreamTestDataProvider
;
import
java.util.stream.IntStream
;
import
java.util.stream.IntStreamTestDataProvider
;
import
java.util.stream.LongStream
;
import
java.util.stream.LongStreamTestDataProvider
;
import
java.util.stream.OpTestCase
;
import
java.util.stream.Stream
;
import
java.util.stream.StreamTestDataProvider
;
import
java.util.stream.TestData
;
import
org.testng.annotations.Test
;
public
class
CountTest
extends
OpTestCase
{
@Test
(
dataProvider
=
"StreamTestData<Integer>"
,
dataProviderClass
=
StreamTestDataProvider
.
class
)
public
void
testOps
(
String
name
,
TestData
.
OfRef
<
Integer
>
data
)
{
AtomicLong
expectedCount
=
new
AtomicLong
();
data
.
stream
().
forEach
(
e
->
expectedCount
.
incrementAndGet
());
withData
(
data
).
terminal
(
Stream:
:
count
).
expectedResult
(
expectedCount
.
get
()).
exercise
();
}
@Test
(
dataProvider
=
"IntStreamTestData"
,
dataProviderClass
=
IntStreamTestDataProvider
.
class
)
public
void
testOps
(
String
name
,
TestData
.
OfInt
data
)
{
AtomicLong
expectedCount
=
new
AtomicLong
();
data
.
stream
().
forEach
(
e
->
expectedCount
.
incrementAndGet
());
withData
(
data
).
terminal
(
IntStream:
:
count
).
expectedResult
(
expectedCount
.
get
()).
exercise
();
}
@Test
(
dataProvider
=
"LongStreamTestData"
,
dataProviderClass
=
LongStreamTestDataProvider
.
class
)
public
void
testOps
(
String
name
,
TestData
.
OfLong
data
)
{
AtomicLong
expectedCount
=
new
AtomicLong
();
data
.
stream
().
forEach
(
e
->
expectedCount
.
incrementAndGet
());
withData
(
data
).
terminal
(
LongStream:
:
count
).
expectedResult
(
expectedCount
.
get
()).
exercise
();
}
@Test
(
dataProvider
=
"DoubleStreamTestData"
,
dataProviderClass
=
DoubleStreamTestDataProvider
.
class
)
public
void
testOps
(
String
name
,
TestData
.
OfDouble
data
)
{
AtomicLong
expectedCount
=
new
AtomicLong
();
data
.
stream
().
forEach
(
e
->
expectedCount
.
incrementAndGet
());
withData
(
data
).
terminal
(
DoubleStream:
:
count
).
expectedResult
(
expectedCount
.
get
()).
exercise
();
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录