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#add(edu.odu.cs.cs350.Duration)}.
    */
    @Test
    public final void testAdd() {
        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
/**
    * Test method for {@link edu.odu.cs.cs350.Duration#add(edu.odu.cs.cs350.Duration)}.
 */
    @Test
    public final void testAdd() throws Exception {
 // fail(\"Not yet implemented\");
// create 2 Duration objects and check with assetEquals(actual, expected);
Duration d1 = new Duration(20);
Duration d2 = new Duration(30);
// add d2 to d1
d1.add(d2);
int expectedSeconds = 50;
// use the assertEquals to test succesfully 2 objects added or not
assertEquals(expectedSeconds, d1.getSeconds() );
    }




