Consider the following interface for an ADT for representing intervals (periods of time as opposed to instantaneous moments of time, typedef long Duration: I/ measured in seconds class DateTime ( public DateTime (int year, int month, int day, int hour, int minute, int second) II How many seconds between two times? Duration operator-(const DateTime& right) const: class Interval ( public / An interval is a period of time beginning with a starting time II and running up to, but not including, its stop time. Interval 0: Interval (DateTime start, DateTime stop) Interval (DateTime start. Duration length) DateTime getStart0 const void setstart (Date Time) DateTime getstopo const void setstop (DateTime): Duration getDuration: bool contains (DateTime d): bool overlaps (Interval intrvl): bool operator-- (const interval& other) const private: DateTime theStart, theStop: Using the JUnit style, write a self-checking test for the setStop function. Consider the following interface for an ADT for representing intervals (periods of time as opposed to instantaneous moments of time, typedef long Duration: I/ measured in seconds class DateTime ( public DateTime (int year, int month, int day, int hour, int minute, int second) II How many seconds between two times? Duration operator-(const DateTime& right) const: class Interval ( public / An interval is a period of time beginning with a starting time II and running up to, but not including, its stop time. Interval 0: Interval (DateTime start, DateTime stop) Interval (DateTime start. Duration length) DateTime getStart0 const void setstart (Date Time) DateTime getstopo const void setstop (DateTime): Duration getDuration: bool contains (DateTime d): bool overlaps (Interval intrvl): bool operator-- (const interval& other) const private: DateTime theStart, theStop: Using the JUnit style, write a self-checking test for the setStop function