All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.pitest.util.TimeSpan Maven / Gradle / Ivy

There is a newer version: 1.17.1
Show newest version
/*
 * Copyright 2011 Henry Coles
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and limitations under the License.
 */
package org.pitest.util;

import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static java.util.concurrent.TimeUnit.NANOSECONDS;

public class TimeSpan {

  private long start;
  private long end;

  public TimeSpan(final long start, final long end) {
    this.start = start;
    this.end = end;
  }

  public long duration() {
    return NANOSECONDS.toMillis(this.end - this.start);
  }

  public long getStart() {
    return this.start;
  }

  public long getEnd() {
    return this.end;
  }

  public void setStart(final long start) {
    this.start = start;
  }

  public void setEnd(final long end) {
    this.end = end;
  }

  @Override
  public String toString() {
    final long millis = duration();
    final int seconds = (int) (MILLISECONDS.toSeconds(millis) % 60);
    final int minutes = (int) (MILLISECONDS.toMinutes(millis) % 60);
    final int hours = (int) MILLISECONDS.toHours(millis);

    if (hours != 0) {
      return "" + hours + " hours, " + minutes + " minutes and " + seconds
          + " seconds";
    }

    if (minutes != 0) {
      return "" + minutes + " minutes and " + seconds + " seconds";
    }

    if (seconds != 0) {
      return "" + seconds + " seconds";
    }

    return "< 1 second";

  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy