SyncCollector.java

1
/*
2
 * Copyright 2014-2026 Grzegorz Piwowarek, https://4comprehension.com/
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at
7
 *
8
 * https://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16
package com.pivovarit.collectors;
17
18
import java.util.Set;
19
import java.util.function.BiConsumer;
20
import java.util.function.BinaryOperator;
21
import java.util.function.Function;
22
import java.util.function.Supplier;
23
import java.util.stream.Collector;
24
import java.util.stream.Stream;
25
26
record SyncCollector<T, R>(Function<? super T, ? extends R> mapper)
27
  implements Collector<T, Stream.Builder<R>, Stream<R>> {
28
29
    @Override
30
    public Supplier<Stream.Builder<R>> supplier() {
31 1 1. supplier : replaced return value with null for com/pivovarit/collectors/SyncCollector::supplier → KILLED
        return Stream::builder;
32
    }
33
34
    @Override
35
    public BiConsumer<Stream.Builder<R>, T> accumulator() {
36 1 1. accumulator : replaced return value with null for com/pivovarit/collectors/SyncCollector::accumulator → KILLED
        return (rs, t) -> rs.add(mapper.apply(t));
37
    }
38
39
    @Override
40
    public BinaryOperator<Stream.Builder<R>> combiner() {
41 1 1. combiner : replaced return value with null for com/pivovarit/collectors/SyncCollector::combiner → SURVIVED
        return (rs, rs2) -> {
42
            throw new UnsupportedOperationException("Using parallel stream with parallel collectors is a bad idea");
43
        };
44
    }
45
46
    @Override
47
    public Function<Stream.Builder<R>, Stream<R>> finisher() {
48 1 1. finisher : replaced return value with null for com/pivovarit/collectors/SyncCollector::finisher → KILLED
        return Stream.Builder::build;
49
    }
50
51
    @Override
52
    public Set<Characteristics> characteristics() {
53
        return Set.of();
54
    }
55
}

Mutations

31

1.1
Location : supplier
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessEmptyWithMaxParallelism()]/[dynamic-test:#10]
replaced return value with null for com/pivovarit/collectors/SyncCollector::supplier → KILLED

36

1.1
Location : accumulator
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessAllElementsWithMaxParallelism()]/[dynamic-test:#15]
replaced return value with null for com/pivovarit/collectors/SyncCollector::accumulator → KILLED

41

1.1
Location : combiner
Killed by : none
replaced return value with null for com/pivovarit/collectors/SyncCollector::combiner → SURVIVED
Covering tests

48

1.1
Location : finisher
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessEmptyWithMaxParallelism()]/[dynamic-test:#10]
replaced return value with null for com/pivovarit/collectors/SyncCollector::finisher → KILLED

Active mutators

Tests examined


Report generated by PIT 1.22.0