// Path: app/src/main/java/co/jasonwyatt/sqliteperf/App.java
// public class App extends Application {
//     private static App sInstance;
// 
//     @Override
//     public void onCreate() {
//         super.onCreate();
//         sInstance = this;
//     }
// 
//     public static App getInstance() {
//         return sInstance;
//     }
// }
// 
// Path: app/src/main/java/co/jasonwyatt/sqliteperf/TestCase.java
// public interface TestCase {
//     void resetCase();
//     Metrics runCase();
// 
//     class Metrics {
//         private final String mName;
//         private final float mVariable;
//         private int mIterations = 1;
//         private long mStartTime;
//         private long mEndTime;
//         private long mElapsedTime;
// 
//         public Metrics(String name, float variable) {
//             mName = name;
//             mVariable = variable;
//         }
// 
//         Metrics(List<Metrics> iterations) {
//             mName = iterations.get(0).mName;
//             mVariable = iterations.get(0).mVariable;
//             mIterations = iterations.size();
//             mElapsedTime = 0;
//             for (Metrics m : iterations) {
//                 mElapsedTime += m.mElapsedTime;
//             }
//             mElapsedTime = (long) (mElapsedTime*1.0f / iterations.size());
//         }
// 
//         public void started() {
//             mStartTime = System.nanoTime();
//         }
// 
//         public void finished() {
//             mEndTime = System.nanoTime();
//             mElapsedTime = mEndTime - mStartTime;
//         }
// 
//         @Override
//         public String toString() {
//             StringBuilder sb = new StringBuilder();
//             sb.append(mName);
//             sb.append(":\n");
//             if (mIterations > 1) {
//                 sb.append(mIterations);
//                 sb.append(" iterations, each averaged ");
//             } else {
//                 sb.append("took ");
//             }
//             sb.append(((float) mElapsedTime / mIterations) / 1000000f);
//             sb.append(" seconds");
//             return sb.toString();
//         }
// 
//         public float getVariable() {
//             return mVariable;
//         }
// 
//         public long getElapsedTime() {
//             return mElapsedTime;
//         }
//     }
// 
// }
// 
// Path: app/src/main/java/co/jasonwyatt/sqliteperf/inserts/room/Db.java
// @Database(entities = {TrackInfo.class, IntegerInfo.class}, version = 1)
// public abstract class Db extends RoomDatabase {
//     public abstract IntegersDao integers();
//     public abstract TracksDao tracks();
// }
// 
// Path: app/src/main/java/co/jasonwyatt/sqliteperf/inserts/room/IntegerInfo.java
// @Entity(tableName = "inserts_1")
// public class IntegerInfo {
//     @PrimaryKey(autoGenerate = true)
//     @ColumnInfo(name = "rowid")
//     private int mRowid;
//     @ColumnInfo(name = "val")
//     private int mVal;
// 
//     public int getRowid() {
//         return mRowid;
//     }
// 
//     public void setRowid(int rowid) {
//         mRowid = rowid;
//     }
// 
//     public int getVal() {
//         return mVal;
//     }
// 
//     public void setVal(int val) {
//         mVal = val;
//     }
// }


import android.arch.persistence.room.Room;
import android.arch.persistence.room.RoomDatabase;
import java.util.Random;
import co.jasonwyatt.sqliteperf.App;
import co.jasonwyatt.sqliteperf.TestCase;
import co.jasonwyatt.sqliteperf.inserts.room.Db;
import co.jasonwyatt.sqliteperf.inserts.room.IntegerInfo;
package co.jasonwyatt.sqliteperf.inserts.integers;




/**
 * @author jason
 */

public class IntegerRoomTestCase implements TestCase {
    private Db mDb;
    private final Random mRandom;
    private final int mInsertions;
    private final int mTestSizeIndex;

    public IntegerRoomTestCase(int insertions, int testSizeIndex) {
        mDb = Room.databaseBuilder(App.getInstance(), Db.class, "roomdb").build();
        mRandom = new Random(System.currentTimeMillis());
        mInsertions = insertions;
        mTestSizeIndex = testSizeIndex;
    }
    @Override
    public void resetCase() {
        mDb.integers().deleteAll();
    }

    @Override
    public Metrics runCase() {
        Metrics result = new Metrics(getClass().getSimpleName()+" ("+mInsertions+" insertions)", mTestSizeIndex);
        result.started();
// Path: app/src/main/java/co/jasonwyatt/sqliteperf/App.java
// public class App extends Application {
//     private static App sInstance;
// 
//     @Override
//     public void onCreate() {
//         super.onCreate();
//         sInstance = this;
//     }
// 
//     public static App getInstance() {
//         return sInstance;
//     }
// }
// 
// Path: app/src/main/java/co/jasonwyatt/sqliteperf/TestCase.java
// public interface TestCase {
//     void resetCase();
//     Metrics runCase();
// 
//     class Metrics {
//         private final String mName;
//         private final float mVariable;
//         private int mIterations = 1;
//         private long mStartTime;
//         private long mEndTime;
//         private long mElapsedTime;
// 
//         public Metrics(String name, float variable) {
//             mName = name;
//             mVariable = variable;
//         }
// 
//         Metrics(List<Metrics> iterations) {
//             mName = iterations.get(0).mName;
//             mVariable = iterations.get(0).mVariable;
//             mIterations = iterations.size();
//             mElapsedTime = 0;
//             for (Metrics m : iterations) {
//                 mElapsedTime += m.mElapsedTime;
//             }
//             mElapsedTime = (long) (mElapsedTime*1.0f / iterations.size());
//         }
// 
//         public void started() {
//             mStartTime = System.nanoTime();
//         }
// 
//         public void finished() {
//             mEndTime = System.nanoTime();
//             mElapsedTime = mEndTime - mStartTime;
//         }
// 
//         @Override
//         public String toString() {
//             StringBuilder sb = new StringBuilder();
//             sb.append(mName);
//             sb.append(":\n");
//             if (mIterations > 1) {
//                 sb.append(mIterations);
//                 sb.append(" iterations, each averaged ");
//             } else {
//                 sb.append("took ");
//             }
//             sb.append(((float) mElapsedTime / mIterations) / 1000000f);
//             sb.append(" seconds");
//             return sb.toString();
//         }
// 
//         public float getVariable() {
//             return mVariable;
//         }
// 
//         public long getElapsedTime() {
//             return mElapsedTime;
//         }
//     }
// 
// }
// 
// Path: app/src/main/java/co/jasonwyatt/sqliteperf/inserts/room/Db.java
// @Database(entities = {TrackInfo.class, IntegerInfo.class}, version = 1)
// public abstract class Db extends RoomDatabase {
//     public abstract IntegersDao integers();
//     public abstract TracksDao tracks();
// }
// 
// Path: app/src/main/java/co/jasonwyatt/sqliteperf/inserts/room/IntegerInfo.java
// @Entity(tableName = "inserts_1")
// public class IntegerInfo {
//     @PrimaryKey(autoGenerate = true)
//     @ColumnInfo(name = "rowid")
//     private int mRowid;
//     @ColumnInfo(name = "val")
//     private int mVal;
// 
//     public int getRowid() {
//         return mRowid;
//     }
// 
//     public void setRowid(int rowid) {
//         mRowid = rowid;
//     }
// 
//     public int getVal() {
//         return mVal;
//     }
// 
//     public void setVal(int val) {
//         mVal = val;
//     }
// }


// Path: app/src/main/java/co/jasonwyatt/sqliteperf/inserts/integers/IntegerRoomTestCase.java
import android.arch.persistence.room.Room;
import android.arch.persistence.room.RoomDatabase;
import java.util.Random;
import co.jasonwyatt.sqliteperf.App;
import co.jasonwyatt.sqliteperf.TestCase;
import co.jasonwyatt.sqliteperf.inserts.room.Db;
import co.jasonwyatt.sqliteperf.inserts.room.IntegerInfo;

package co.jasonwyatt.sqliteperf.inserts.integers;




/**
 * @author jason
 */

public class IntegerRoomTestCase implements TestCase {
    private Db mDb;
    private final Random mRandom;
    private final int mInsertions;
    private final int mTestSizeIndex;

    public IntegerRoomTestCase(int insertions, int testSizeIndex) {
        mDb = Room.databaseBuilder(App.getInstance(), Db.class, "roomdb").build();
        mRandom = new Random(System.currentTimeMillis());
        mInsertions = insertions;
        mTestSizeIndex = testSizeIndex;
    }
    @Override
    public void resetCase() {
        mDb.integers().deleteAll();
    }

    @Override
    public Metrics runCase() {
        Metrics result = new Metrics(getClass().getSimpleName()+" ("+mInsertions+" insertions)", mTestSizeIndex);
        result.started();
        IntegerInfo[] data = new IntegerInfo[mInsertions];