1
2
3
4
5
6 package mockit.coverage.dataItems;
7
8 import edu.umd.cs.findbugs.annotations.NonNull;
9 import edu.umd.cs.findbugs.annotations.Nullable;
10
11 import java.io.IOException;
12 import java.io.ObjectOutputStream;
13 import java.io.Serializable;
14
15 import org.checkerframework.checker.index.qual.NonNegative;
16
17 public abstract class FieldData implements Serializable {
18 private static final long serialVersionUID = 8565599590976858508L;
19
20 @NonNegative
21 int readCount;
22 @NonNegative
23 int writeCount;
24 @Nullable
25 Boolean covered;
26
27 private void writeObject(@NonNull ObjectOutputStream out) throws IOException {
28 isCovered();
29 out.defaultWriteObject();
30 }
31
32 @NonNegative
33 public final int getReadCount() {
34 return readCount;
35 }
36
37 @NonNegative
38 public final int getWriteCount() {
39 return writeCount;
40 }
41
42 public final boolean isCovered() {
43 if (covered == null) {
44 covered = false;
45 markAsCoveredIfNoUnreadValuesAreLeft();
46 }
47
48 return covered;
49 }
50
51 abstract void markAsCoveredIfNoUnreadValuesAreLeft();
52
53 final void addCountsFromPreviousTestRun(@NonNull FieldData previousInfo) {
54 readCount += previousInfo.readCount;
55 writeCount += previousInfo.writeCount;
56 covered = isCovered() || previousInfo.isCovered();
57 }
58 }