Question: Please create a JUNIT test for this following JAVA class program ( TDD) /** * A duration represents a period of elapsed time, e.g., 4
Please create a JUNIT test for this following JAVA class program ( TDD)
/** * A duration represents a period of elapsed time, e.g., 4 hours, 23 minutes, 2 seconds. * This is differentiated from a point in time (e.g., 4:23:02AM). A meeting that * has a duration of 2 hours has that same duration no matter where it was held. A * starting time (point) for that of 2:00PM EST can be unambiguous only if the time * zone is added. * ** Because durations are often used in calculations, both positive and * negative values are possible. * *
* Most of the accessor functions for this class will respond with normalized * values, where the normalization rules are as follows: *
- *
- The seconds and minutes components will have an absolute * value in the range 0..59, inclusive. *
- The hours component will have an absolute value in the * range 0..23, inclusive. *
- The sign of each component matches the sign of the * overall duration. A duration of -61 seconds, for example, * has normalized components of -1 seconds and -1 minutes. *
*/ public class Duration implements Cloneable { /** * Construct a new duration, equivalent to * Duration(0,0,0,0). */ public Duration() { //ToDo } /** * Create a new duration. * * @param totalSeconds total number of seconds in duration */ public Duration(long totalSeconds) { //ToDo } /** * Create a new duration. * * @param days number of days in duration * @param hours number of hours in duration * @param minutes number of minutes in duration * @param seconds number of seconds in duration */ public Duration(int days, int hours, int minutes, int seconds) { //ToDo } /** * Get the total seconds of this duration, including the contributions * of the days, hours, minutes, & seconds components. * * @return the total seconds */ public long getTotalSeconds() { //ToDo return 0; } /** * Set the total seconds of this duration, potentially altering * the days, hours, minutes, & seconds components. * @param totalSeconds the total seconds to set */ public void setTotalSeconds(long totalSeconds) { //ToDo } /** * How many days in this duration?. * * @return the normalized days component */ public int getDays() { //ToDo return 0; } private static final long secondsPerHour = 60 * 60; /** * How many hours in this duration?. * * @return the normalized hours component */ public int getHours() { //ToDo return 0; } /** * How many minutes in this duration?. * * @return the normalized minutes component */ public int getMinutes() { //ToDo return 0; } /** * How many seconds in this duration?. * * @return the normalized seconds component */ public int getSeconds() { //ToDo return 0; } /** * Add another duration to this one. * @param dur a duration */ public void add(Duration dur) { //ToDo } /** * Subtract another duration from this one. * @param dur a duration */ public void subtract(Duration dur) { //ToDo } /** * Multiply this duration by a scaling factor, * rounding to the closest second. * @param factor a scaling factor */ public void scale(double factor) { //ToDo } /** * Render the duration as * d:h:m:s * (preceded by a '-'if the duration is negative) * where the four components are normalized non-negative * integer values. The final three components are always rendered * in 2 digits. The two leading components and their * associated ':' delimiters are omitted if the leading values * are zero. E.g., Duration(0,-1,-59,-61) would be rendered as * "-02:00:01". */ public String toString() { //ToDo return ""; } // Comparison and hashing /** * Compares two durations for equality. They are considered equal if * their getTotalSeconds() values are equal. * * @param obj object to be compared for equality with this duration * @return true if the specified object is equal to this one */ public boolean equals(Object obj) { //ToDo return false; } /** * Returns the hash code value for this object. * * @return the hash code value for this duration */ public int hashCode() { //ToDo return 0; } /** * Return a (deep) copy of this object. */ @Override public Object clone() { //ToDo return null; } }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
