Create a JUNIT test case for this function Test method for
Create a JUNIT test case for this function:
/**
* Test method for {@link edu.odu.cs.cs350.Duration#hashCode()}.
*/
@Test
public final void testHashCode() {
fail(\"Not yet implemented\"); // TODO
}
Based off this class definition:
package edu.odu.cs.cs350;
import java.util.Arrays;
/**
* 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.
*
* <p>
* Because durations are often used in calculations, both positive and
* negative values are possible.
*
* <p>
* Most of the accessor functions for this class will respond with normalized
* values, where the normalization rules are as follows:
* <ul>
* <li>The seconds and minutes components will have an absolute
* value in the range 0..59, inclusive.</li>
* <li>The hours component will have an absolute value in the
* range 0..23, inclusive.</li>
* <li>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.</li>
* </ul>
* Inputs to the member functions are not, however, required to
* be normalized. new Duration(0,0,3,-61) and new Duration(0,0,1,59)
* are both acceptable (and the resulting Duration objects are equal).
*
* @author zeil
*
*/
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 <tt>true</tt> 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;
}
}
Solution
A)
import static org.junit.Assert.*;
public final void testHashCode() {
fail(\"Not yet implemented\");
Based off this class definition:
package edu.odu.cs.cs350;
import java.util.Arrays;
public class Duration implements Cloneable {
Construct a new duration, equivalent to
Duration(0,0,0,0).
public Duration() {
}
Create a new duration.
public Duration(long totalSeconds) {
}
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) {
}
public long getTotalSeconds() {
return 0;
}
public void setTotalSeconds(long totalSeconds) {
}
public int getDays() {
return 0;
}
private static final long secondsPerHour = 60 * 60;
public int getHours() {
return 0;
}
public int getMinutes() {
return 0;
}
public int getSeconds() {
return 0;
}
public void add(Duration dur) {
}
public void subtract(Duration dur) {
}
public void scale(double factor) {
}
public String toString() {
return \"\";
}
Compares two durations for equality. They are considered equal if
their getTotalSeconds() values are equal
public boolean equals(Object obj) {
return false;
}
public int hashCode() {
return 0;
}
Return a copy of this object.
@Override
public Object clone() {
return null;
}
}




