Coverage Report - com.sun.javafx.runtime.sequence.BoundReverseSequence
 
Classes in this File Line Coverage Branch Coverage Complexity
BoundReverseSequence
100%
8/8
N/A
0
BoundReverseSequence$1
100%
7/7
50%
1/2
0
 
 1  
 package com.sun.javafx.runtime.sequence;
 2  
 
 3  
 import com.sun.javafx.runtime.location.SequenceLocation;
 4  
 import com.sun.javafx.runtime.location.SequenceChangeListener;
 5  
 
 6  
 /**
 7  
  * BoundReverseSequence
 8  
  *
 9  
  * @author Brian Goetz
 10  
  */
 11  
 class BoundReverseSequence<T> extends AbstractBoundSequence<T> implements SequenceLocation<T> {
 12  
     private final SequenceLocation<T> location;
 13  
 
 14  
     BoundReverseSequence(SequenceLocation<T> location) {
 15  1
         super(location.getAsSequence().getElementType());
 16  1
         this.location = location;
 17  
 
 18  1
         setInitialValue(computeValue());
 19  1
         addTriggers();
 20  1
     }
 21  
 
 22  
     private Sequence<T> computeValue() {
 23  1
         return location.getAsSequence().reverse();
 24  
     }
 25  
 
 26  
     private void addTriggers() {
 27  1
         location.addChangeListener(new SequenceChangeListener<T>() {
 28  
             public void onChange(int startPos, int endPos, Sequence<? extends T> newElements, Sequence<T> oldValue, Sequence<T> newValue) {
 29  7
                 int sliceSize = endPos - startPos;
 30  7
                 int actualStart = oldValue.size() - startPos - (sliceSize + 1);
 31  7
                 int actualEnd = actualStart + sliceSize;
 32  7
                 Sequence<? extends T> reverseElements = newElements == null ? null : newElements.reverse();
 33  7
                 updateSlice(actualStart, actualEnd, reverseElements);
 34  7
             }
 35  
         });
 36  1
     }
 37  
 }