// Path: app/src/main/java/org/glucosio/android/Constants.java
// public class Constants {
//     public class Units {
//         public static final String MG_DL = "mg/dL";
//         public static final String MMOL_L = "mmol/L";
// 
//         private Units() {
//         }
//     }
// 
//     private Constants() {
//     }
// }
// 
// Path: app/src/test/java/org/glucosio/android/RobolectricTest.java
// @Ignore
// @RunWith(RobolectricTestRunner.class)
// @Config(sdk = 25)
// public abstract class RobolectricTest {
//     protected Analytics getAnalytics() {
//         return getTestApplication().getAnalytics();
//     }
// 
//     protected Backup getBackup() {
//         return getTestApplication().getBackup();
//     }
// 
//     private TestGlucosioApplication getTestApplication() {
//         return (TestGlucosioApplication) RuntimeEnvironment.application;
//     }
// 
//     protected DatabaseHandler getDBHandler() {
//         return getTestApplication().getDBHandler();
//     }
// 
//     protected HelloPresenter getHelloPresenter() {
//         //noinspection ConstantConditions
//         return getTestApplication().createHelloPresenter(null);
//     }
// 
//     protected LocaleHelper getLocaleHelper() {
//         //noinspection ConstantConditions
//         return getTestApplication().getLocaleHelper();
//     }
// }
// 
// Path: app/src/main/java/org/glucosio/android/db/GlucoseReading.java
// public class GlucoseReading extends RealmObject {
// 
//     @PrimaryKey
//     private long id;
// 
//     private double reading;
//     private String reading_type;
//     private String notes;
//     private int user_id;
//     private Date created;
// 
//     public GlucoseReading() {
//     }
// 
//     public GlucoseReading(double reading, String reading_type, Date created, String notes) {
//         this.reading = reading;
//         this.reading_type = reading_type;
//         this.created = created;
//         this.notes = notes;
//     }
// 
//     public long getId() {
//         return id;
//     }
// 
//     public void setId(long id) {
//         this.id = id;
//     }
// 
//     public double getReading() {
//         return reading;
//     }
// 
//     public void setReading(double reading) {
//         this.reading = reading;
//     }
// 
//     public String getReading_type() {
//         return reading_type;
//     }
// 
//     public void setReading_type(String reading_type) {
//         this.reading_type = reading_type;
//     }
// 
//     public String getNotes() {
//         return notes;
//     }
// 
//     public void setNotes(String notes) {
//         this.notes = notes;
//     }
// 
//     public int getUser_id() {
//         return user_id;
//     }
// 
//     public void setUser_id(int user_id) {
//         this.user_id = user_id;
//     }
// 
//     public Date getCreated() {
//         return created;
//     }
// 
//     public void setCreated(Date created) {
//         this.created = created;
//     }
// }


import org.glucosio.android.Constants;
import org.glucosio.android.R;
import org.glucosio.android.RobolectricTest;
import org.glucosio.android.db.GlucoseReading;
import org.junit.Assert;
import org.junit.Test;
import org.robolectric.RuntimeEnvironment;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
        r.createCSVFile(values, osw);

        assertFileContentEqualsToString(outputStream.toString(), headerAsString(), valuesAsString(values.get(0), Constants.Units.MG_DL));
    }

    @Test
    public void GeneratesCSVWithHeaderAndLinesEscaped_WhenDataWithWrongChars() throws IOException {
        final Date created = new Date();

        List<GlucoseReading> values = new ArrayList<>();
        values.add(new GlucoseReading(80, "type", created, ","));
        values.add(new GlucoseReading(81, "type", created, "\"E\""));
        values.add(new GlucoseReading(82, "type", created, "\r"));

        ReadingToCSV r = new ReadingToCSV(RuntimeEnvironment.application, Constants.Units.MG_DL);
        r.createCSVFile(values, osw);

        assertFileContentEqualsToString(
                outputStream.toString(),
                headerAsString(),
                valuesAsString(values.get(0), Constants.Units.MG_DL),
                valuesAsString(values.get(1), Constants.Units.MG_DL),
                valuesAsString(values.get(2), Constants.Units.MG_DL)
        );
    }

    @Test
    public void EscapeNewLine_WhenDataWithIt() throws IOException {
        final Date created = new Date();

// Path: app/src/main/java/org/glucosio/android/Constants.java
// public class Constants {
//     public class Units {
//         public static final String MG_DL = "mg/dL";
//         public static final String MMOL_L = "mmol/L";
// 
//         private Units() {
//         }
//     }
// 
//     private Constants() {
//     }
// }
// 
// Path: app/src/test/java/org/glucosio/android/RobolectricTest.java
// @Ignore
// @RunWith(RobolectricTestRunner.class)
// @Config(sdk = 25)
// public abstract class RobolectricTest {
//     protected Analytics getAnalytics() {
//         return getTestApplication().getAnalytics();
//     }
// 
//     protected Backup getBackup() {
//         return getTestApplication().getBackup();
//     }
// 
//     private TestGlucosioApplication getTestApplication() {
//         return (TestGlucosioApplication) RuntimeEnvironment.application;
//     }
// 
//     protected DatabaseHandler getDBHandler() {
//         return getTestApplication().getDBHandler();
//     }
// 
//     protected HelloPresenter getHelloPresenter() {
//         //noinspection ConstantConditions
//         return getTestApplication().createHelloPresenter(null);
//     }
// 
//     protected LocaleHelper getLocaleHelper() {
//         //noinspection ConstantConditions
//         return getTestApplication().getLocaleHelper();
//     }
// }
// 
// Path: app/src/main/java/org/glucosio/android/db/GlucoseReading.java
// public class GlucoseReading extends RealmObject {
// 
//     @PrimaryKey
//     private long id;
// 
//     private double reading;
//     private String reading_type;
//     private String notes;
//     private int user_id;
//     private Date created;
// 
//     public GlucoseReading() {
//     }
// 
//     public GlucoseReading(double reading, String reading_type, Date created, String notes) {
//         this.reading = reading;
//         this.reading_type = reading_type;
//         this.created = created;
//         this.notes = notes;
//     }
// 
//     public long getId() {
//         return id;
//     }
// 
//     public void setId(long id) {
//         this.id = id;
//     }
// 
//     public double getReading() {
//         return reading;
//     }
// 
//     public void setReading(double reading) {
//         this.reading = reading;
//     }
// 
//     public String getReading_type() {
//         return reading_type;
//     }
// 
//     public void setReading_type(String reading_type) {
//         this.reading_type = reading_type;
//     }
// 
//     public String getNotes() {
//         return notes;
//     }
// 
//     public void setNotes(String notes) {
//         this.notes = notes;
//     }
// 
//     public int getUser_id() {
//         return user_id;
//     }
// 
//     public void setUser_id(int user_id) {
//         this.user_id = user_id;
//     }
// 
//     public Date getCreated() {
//         return created;
//     }
// 
//     public void setCreated(Date created) {
//         this.created = created;
//     }
// }


// Path: app/src/test/java/org/glucosio/android/tools/ReadingToCSVTest.java
import org.glucosio.android.Constants;
import org.glucosio.android.R;
import org.glucosio.android.RobolectricTest;
import org.glucosio.android.db.GlucoseReading;
import org.junit.Assert;
import org.junit.Test;
import org.robolectric.RuntimeEnvironment;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;

        r.createCSVFile(values, osw);

        assertFileContentEqualsToString(outputStream.toString(), headerAsString(), valuesAsString(values.get(0), Constants.Units.MG_DL));
    }

    @Test
    public void GeneratesCSVWithHeaderAndLinesEscaped_WhenDataWithWrongChars() throws IOException {
        final Date created = new Date();

        List<GlucoseReading> values = new ArrayList<>();
        values.add(new GlucoseReading(80, "type", created, ","));
        values.add(new GlucoseReading(81, "type", created, "\"E\""));
        values.add(new GlucoseReading(82, "type", created, "\r"));

        ReadingToCSV r = new ReadingToCSV(RuntimeEnvironment.application, Constants.Units.MG_DL);
        r.createCSVFile(values, osw);

        assertFileContentEqualsToString(
                outputStream.toString(),
                headerAsString(),
                valuesAsString(values.get(0), Constants.Units.MG_DL),
                valuesAsString(values.get(1), Constants.Units.MG_DL),
                valuesAsString(values.get(2), Constants.Units.MG_DL)
        );
    }

    @Test
    public void EscapeNewLine_WhenDataWithIt() throws IOException {
        final Date created = new Date();

        List<GlucoseReading> values = new ArrayList<>();