test/java/time/test/java/time/MockSimplePeriod.java

Print this page




  51  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  52  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  53  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  54  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  55  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  56  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  57  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  58  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  59  */
  60 package test.java.time;
  61 
  62 import java.time.*;
  63 
  64 import static java.time.temporal.ChronoUnit.DAYS;
  65 import static java.time.temporal.ChronoUnit.FOREVER;
  66 import static java.time.temporal.ChronoUnit.SECONDS;
  67 
  68 import java.util.Objects;
  69 
  70 import java.time.temporal.Temporal;
  71 import java.time.temporal.TemporalSubtractor;
  72 import java.time.temporal.TemporalAdder;
  73 import java.time.temporal.TemporalUnit;

  74 
  75 /**
  76  * Mock period of time measured using a single unit, such as {@code 3 Days}.
  77  */
  78 public final class MockSimplePeriod
  79         implements TemporalAdder, TemporalSubtractor, Comparable<MockSimplePeriod> {
  80 
  81     /**
  82      * A constant for a period of zero, measured in days.
  83      */
  84     public static final MockSimplePeriod ZERO_DAYS = new MockSimplePeriod(0, DAYS);
  85     /**
  86      * A constant for a period of zero, measured in seconds.
  87      */
  88     public static final MockSimplePeriod ZERO_SECONDS = new MockSimplePeriod(0, SECONDS);
  89 
  90     /**
  91      * The amount of the period.
  92      */
  93     private final long amount;
  94     /**
  95      * The unit the period is measured in.
  96      */
  97     private final TemporalUnit unit;
  98 
  99     /**


 102      * The parameters represent the two parts of a phrase like '6 Days'.
 103      *
 104      * @param amount  the amount of the period, measured in terms of the unit, positive or negative
 105      * @param unit  the unit that the period is measured in, must not be the 'Forever' unit, not null
 106      * @return the {@code MockSimplePeriod} instance, not null
 107      * @throws DateTimeException if the period unit is {@link java.time.temporal.ChronoUnit#FOREVER}.
 108      */
 109     public static MockSimplePeriod of(long amount, TemporalUnit unit) {
 110         return new MockSimplePeriod(amount, unit);
 111     }
 112 
 113     private MockSimplePeriod(long amount, TemporalUnit unit) {
 114         Objects.requireNonNull(unit, "unit");
 115         if (unit == FOREVER) {
 116             throw new DateTimeException("Cannot create a period of the Forever unit");
 117         }
 118         this.amount = amount;
 119         this.unit = unit;
 120     }
 121 










 122     //-----------------------------------------------------------------------
 123     public long getAmount() {
 124         return amount;
 125     }
 126 
 127     public TemporalUnit getUnit() {
 128         return unit;
 129     }
 130 
 131     //-------------------------------------------------------------------------
 132     @Override
 133     public Temporal addTo(Temporal temporal) {
 134         return temporal.plus(amount, unit);
 135     }
 136 
 137     @Override
 138     public Temporal subtractFrom(Temporal temporal) {
 139         return temporal.minus(amount, unit);
 140     }
 141 




  51  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  52  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  53  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  54  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  55  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  56  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  57  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  58  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  59  */
  60 package test.java.time;
  61 
  62 import java.time.*;
  63 
  64 import static java.time.temporal.ChronoUnit.DAYS;
  65 import static java.time.temporal.ChronoUnit.FOREVER;
  66 import static java.time.temporal.ChronoUnit.SECONDS;
  67 
  68 import java.util.Objects;
  69 
  70 import java.time.temporal.Temporal;
  71 import java.time.temporal.TemporalAmount;
  72 import java.time.temporal.TemporalAmount;
  73 import java.time.temporal.TemporalUnit;
  74 import java.util.List;
  75 
  76 /**
  77  * Mock period of time measured using a single unit, such as {@code 3 Days}.
  78  */
  79 public final class MockSimplePeriod
  80         implements TemporalAmount, Comparable<MockSimplePeriod> {
  81 
  82     /**
  83      * A constant for a period of zero, measured in days.
  84      */
  85     public static final MockSimplePeriod ZERO_DAYS = new MockSimplePeriod(0, DAYS);
  86     /**
  87      * A constant for a period of zero, measured in seconds.
  88      */
  89     public static final MockSimplePeriod ZERO_SECONDS = new MockSimplePeriod(0, SECONDS);
  90 
  91     /**
  92      * The amount of the period.
  93      */
  94     private final long amount;
  95     /**
  96      * The unit the period is measured in.
  97      */
  98     private final TemporalUnit unit;
  99 
 100     /**


 103      * The parameters represent the two parts of a phrase like '6 Days'.
 104      *
 105      * @param amount  the amount of the period, measured in terms of the unit, positive or negative
 106      * @param unit  the unit that the period is measured in, must not be the 'Forever' unit, not null
 107      * @return the {@code MockSimplePeriod} instance, not null
 108      * @throws DateTimeException if the period unit is {@link java.time.temporal.ChronoUnit#FOREVER}.
 109      */
 110     public static MockSimplePeriod of(long amount, TemporalUnit unit) {
 111         return new MockSimplePeriod(amount, unit);
 112     }
 113 
 114     private MockSimplePeriod(long amount, TemporalUnit unit) {
 115         Objects.requireNonNull(unit, "unit");
 116         if (unit == FOREVER) {
 117             throw new DateTimeException("Cannot create a period of the Forever unit");
 118         }
 119         this.amount = amount;
 120         this.unit = unit;
 121     }
 122 
 123     @Override
 124     public long get(TemporalUnit unit) {
 125         throw new UnsupportedOperationException("Not supported yet.");
 126     }
 127 
 128     @Override
 129     public List<TemporalUnit> getUnits() {
 130         throw new UnsupportedOperationException("Not supported yet.");
 131     }
 132 
 133     //-----------------------------------------------------------------------
 134     public long getAmount() {
 135         return amount;
 136     }
 137 
 138     public TemporalUnit getUnit() {
 139         return unit;
 140     }
 141 
 142     //-------------------------------------------------------------------------
 143     @Override
 144     public Temporal addTo(Temporal temporal) {
 145         return temporal.plus(amount, unit);
 146     }
 147 
 148     @Override
 149     public Temporal subtractFrom(Temporal temporal) {
 150         return temporal.minus(amount, unit);
 151     }
 152