/****************************************************************************** * This program test the Duration class. * * Copyright © 2021 Richard Lesh. All rights reserved. *****************************************************************************/ import java.util.HashMap; import java.util.Map; import org.pureprogrammer.Utils; public class DurationClass { static class Duration { // Internal representation is in seconds private double value; enum Unit { ns,μs,ms,SEC,MIN,HOUR,DAY,WEEK,MONTH,YEAR } // Constructor public Duration() { value = 0; } // getter public double getValue(final Unit unit) { double result = 0.; switch (unit) { case ns: result = value * 1e9; break; case μs: result = value * 1e6; break; case ms: result = value * 1e3; break; case SEC: result = value; break; case MIN: result = value / 60.; break; case HOUR: result = value / 60. / 60.; break; case DAY: result = value / 60. / 60. / 24.; break; case WEEK: result = value / 60. / 60. / 24. / 7.; break; case MONTH: result = value / 60. / 60. / 24. / 30.4375; break; case YEAR: result = value / 60. / 60. / 24. / 365.25; break; } return result; } // setter public void setValue(double value, final Unit unit) { double result = 0.; switch (unit) { case ns: result = value / 1e9; break; case μs: result = value / 1e6; break; case ms: result = value / 1e3; break; case SEC: result = value; break; case MIN: result = value * 60.; break; case HOUR: result = value * 60. * 60.; break; case DAY: result = value * 60. * 60. * 24.; break; case WEEK: result = value * 60. * 60. * 24. * 7.; break; case MONTH: result = value * 60. * 60. * 24. * 30.4375; break; case YEAR: result = value * 60. * 60. * 24. * 365.25; break; } this.value = result; } } public static void main(String[] args) { Duration d = new Duration(); d.setValue(1.23, Duration.Unit.SEC); System.out.println(Utils.format("{0:g} ns", d.getValue(Duration.Unit.ns))); System.out.println(Utils.format("{0:g} µs", d.getValue(Duration.Unit.μs))); System.out.println(Utils.format("{0:g} ms", d.getValue(Duration.Unit.ms))); System.out.println(Utils.format("{0:g} sec", d.getValue(Duration.Unit.SEC))); System.out.println(Utils.format("{0:g} min", d.getValue(Duration.Unit.MIN))); System.out.println(Utils.format("{0:g} hour", d.getValue(Duration.Unit.HOUR))); System.out.println(Utils.format("{0:g} day", d.getValue(Duration.Unit.DAY))); System.out.println(Utils.format("{0:g} week", d.getValue(Duration.Unit.WEEK))); System.out.println(Utils.format("{0:g} month", d.getValue(Duration.Unit.MONTH))); System.out.println(Utils.format("{0:g} year", d.getValue(Duration.Unit.YEAR))); System.out.println(); d.setValue(1., Duration.Unit.YEAR); System.out.println(Utils.format("{0:g} ns", d.getValue(Duration.Unit.ns))); System.out.println(Utils.format("{0:g} µs", d.getValue(Duration.Unit.μs))); System.out.println(Utils.format("{0:g} ms", d.getValue(Duration.Unit.ms))); System.out.println(Utils.format("{0:g} sec", d.getValue(Duration.Unit.SEC))); System.out.println(Utils.format("{0:g} min", d.getValue(Duration.Unit.MIN))); System.out.println(Utils.format("{0:g} hour", d.getValue(Duration.Unit.HOUR))); System.out.println(Utils.format("{0:g} day", d.getValue(Duration.Unit.DAY))); System.out.println(Utils.format("{0:g} week", d.getValue(Duration.Unit.WEEK))); System.out.println(Utils.format("{0:g} month", d.getValue(Duration.Unit.MONTH))); System.out.println(Utils.format("{0:g} year", d.getValue(Duration.Unit.YEAR))); System.out.println(); d.setValue(1., Duration.Unit.ns); System.out.println(Utils.format("{0:g} ns", d.getValue(Duration.Unit.ns))); System.out.println(Utils.format("{0:g} µs", d.getValue(Duration.Unit.μs))); System.out.println(Utils.format("{0:g} ms", d.getValue(Duration.Unit.ms))); System.out.println(Utils.format("{0:g} sec", d.getValue(Duration.Unit.SEC))); System.out.println(Utils.format("{0:g} min", d.getValue(Duration.Unit.MIN))); System.out.println(Utils.format("{0:g} hour", d.getValue(Duration.Unit.HOUR))); System.out.println(Utils.format("{0:g} day", d.getValue(Duration.Unit.DAY))); System.out.println(Utils.format("{0:g} week", d.getValue(Duration.Unit.WEEK))); System.out.println(Utils.format("{0:g} month", d.getValue(Duration.Unit.MONTH))); System.out.println(Utils.format("{0:g} year", d.getValue(Duration.Unit.YEAR))); System.out.println(); } }