// Path: MyApplication/app/src/main/java/com/example/mikhail_sianko/myapplication/examples/utils/CustomSimpleDayFormat.java
// public class CustomSimpleDayFormat {
//     public String getFormattedTime (String pattern, long time) {
//         return new SimpleDateFormat(pattern).format(time);
//     }
// }
// 
// Path: MyApplication/app/src/main/java/com/example/mikhail_sianko/myapplication/examples/utils/ITime.java
// public interface ITime {
//     long getCurrentTimeInMillis();
// 
//     String getFriendlyFormattedTime();
// 
//     String getDayPart();
// 
//     String getTimeFormat();
// }
// 
// Path: MyApplication/app/src/main/java/com/example/mikhail_sianko/myapplication/examples/utils/Time.java
// public class Time implements ITime {
// 
//     private CustomSimpleDayFormat mCustomSimpleDayFormat;
// 
//     public Time(CustomSimpleDayFormat pCustomSimpleDayFormat) {
//         setCustomSimpleDayFormat(pCustomSimpleDayFormat);
//     }
// 
//     @Override
//     public long getCurrentTimeInMillis() {
//         return System.currentTimeMillis();
//     }
// 
//     @Override
//     public String getFriendlyFormattedTime() {
//         String timeFormat = getTimeFormat();
//         if (timeFormat.contains("HH") && timeFormat.contains("mm")) {
//             return mCustomSimpleDayFormat.getFormattedTime("HH:mm:ss", getCurrentTimeInMillis());
//         }
// 
//         throw new IllegalArgumentException("time format not valid");
// 
//     }
// 
//     public void setCustomSimpleDayFormat(CustomSimpleDayFormat mCustomSimpleDayFormat) {
//         this.mCustomSimpleDayFormat = mCustomSimpleDayFormat;
//     }
// 
//     public String getTimeFormat() {
//         return "HH:mm:ss";
//     }
// 
//     @Override
//     public String getDayPart() {
//         Calendar calendar = getCalendar();
//         calendar.setTimeInMillis(getCurrentTimeInMillis());
//         int hours = calendar.get(Calendar.HOUR_OF_DAY);
// 
//         if (hours > 0 && hours < 7) {
//             return "night";
//         } else if (hours >= 7 && hours <= 12) {
//             return "morning";
//         } else if (hours > 12 && hours < 15) {
//             return "lunch";
//         } else if (hours >= 15 && hours < 22) {
//             return "evening";
//         } else {
//             return "night";
//         }
//     }
// 
//     private Calendar getCalendar() {
//         return Calendar.getInstance();
//     }
// }


import com.example.mikhail_sianko.myapplication.examples.utils.CustomSimpleDayFormat;
import com.example.mikhail_sianko.myapplication.examples.utils.ITime;
import com.example.mikhail_sianko.myapplication.examples.utils.Time;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import static org.junit.Assert.assertEquals;
package com.example.mikhail_sianko.myapplication;




/**
 * To work on unit tests, switch the Test Artifact in the Build Variants view.
 */
public class TimeTest {

    private ITime mITime;

    @Mock
    private CustomSimpleDayFormat mCustomSimpleDayFormat;

    @BeforeClass
    public static void setUp() {
        //open database connection
        System.err.println("setUp");
    }

    @AfterClass
    public static void destroy() {
        //close database connection;
        System.err.println("destroy");
    }

    @Before
    public void init() {
        MockitoAnnotations.initMocks(this);
// Path: MyApplication/app/src/main/java/com/example/mikhail_sianko/myapplication/examples/utils/CustomSimpleDayFormat.java
// public class CustomSimpleDayFormat {
//     public String getFormattedTime (String pattern, long time) {
//         return new SimpleDateFormat(pattern).format(time);
//     }
// }
// 
// Path: MyApplication/app/src/main/java/com/example/mikhail_sianko/myapplication/examples/utils/ITime.java
// public interface ITime {
//     long getCurrentTimeInMillis();
// 
//     String getFriendlyFormattedTime();
// 
//     String getDayPart();
// 
//     String getTimeFormat();
// }
// 
// Path: MyApplication/app/src/main/java/com/example/mikhail_sianko/myapplication/examples/utils/Time.java
// public class Time implements ITime {
// 
//     private CustomSimpleDayFormat mCustomSimpleDayFormat;
// 
//     public Time(CustomSimpleDayFormat pCustomSimpleDayFormat) {
//         setCustomSimpleDayFormat(pCustomSimpleDayFormat);
//     }
// 
//     @Override
//     public long getCurrentTimeInMillis() {
//         return System.currentTimeMillis();
//     }
// 
//     @Override
//     public String getFriendlyFormattedTime() {
//         String timeFormat = getTimeFormat();
//         if (timeFormat.contains("HH") && timeFormat.contains("mm")) {
//             return mCustomSimpleDayFormat.getFormattedTime("HH:mm:ss", getCurrentTimeInMillis());
//         }
// 
//         throw new IllegalArgumentException("time format not valid");
// 
//     }
// 
//     public void setCustomSimpleDayFormat(CustomSimpleDayFormat mCustomSimpleDayFormat) {
//         this.mCustomSimpleDayFormat = mCustomSimpleDayFormat;
//     }
// 
//     public String getTimeFormat() {
//         return "HH:mm:ss";
//     }
// 
//     @Override
//     public String getDayPart() {
//         Calendar calendar = getCalendar();
//         calendar.setTimeInMillis(getCurrentTimeInMillis());
//         int hours = calendar.get(Calendar.HOUR_OF_DAY);
// 
//         if (hours > 0 && hours < 7) {
//             return "night";
//         } else if (hours >= 7 && hours <= 12) {
//             return "morning";
//         } else if (hours > 12 && hours < 15) {
//             return "lunch";
//         } else if (hours >= 15 && hours < 22) {
//             return "evening";
//         } else {
//             return "night";
//         }
//     }
// 
//     private Calendar getCalendar() {
//         return Calendar.getInstance();
//     }
// }


// Path: MyApplication/app/src/test/java/com/example/mikhail_sianko/myapplication/TimeTest.java
import com.example.mikhail_sianko.myapplication.examples.utils.CustomSimpleDayFormat;
import com.example.mikhail_sianko.myapplication.examples.utils.ITime;
import com.example.mikhail_sianko.myapplication.examples.utils.Time;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import static org.junit.Assert.assertEquals;

package com.example.mikhail_sianko.myapplication;




/**
 * To work on unit tests, switch the Test Artifact in the Build Variants view.
 */
public class TimeTest {

    private ITime mITime;

    @Mock
    private CustomSimpleDayFormat mCustomSimpleDayFormat;

    @BeforeClass
    public static void setUp() {
        //open database connection
        System.err.println("setUp");
    }

    @AfterClass
    public static void destroy() {
        //close database connection;
        System.err.println("destroy");
    }

    @Before
    public void init() {
        MockitoAnnotations.initMocks(this);
        mITime = Mockito.spy(new Time(mCustomSimpleDayFormat));