View Javadoc
1   /*
2    * MIT License
3    * Copyright (c) 2006-2025 JMockit developers
4    * See LICENSE file for full license text.
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  }