// 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/blobs/DbHelper.java
// public class DbHelper extends SQLiteOpenHelper {
//     private final int mFileSize;
//     private final int mFiles;
//     private String[] mFileNames;
// 
//     public DbHelper(Context context, String name, int fileSize, int files) {
//         super(context, name, null, 1);
//         mFileSize = fileSize;
//         mFiles = files;
//     }
// 
//     @Override
//     public void onCreate(SQLiteDatabase db) {
//         db.execSQL("CREATE TABLE files (filename TEXT PRIMARY KEY, data BLOB NOT NULL)");
// 
//         db.beginTransaction();
//         try {
//             createFiles(db);
//             db.setTransactionSuccessful();
//         } finally {
//             db.endTransaction();
//         }
//     }
// 
//     private void createFiles(SQLiteDatabase db) {
//         mFileNames = new String[mFiles];
//         byte[] rawData = new byte[mFileSize+mFiles];
//         Random random = new Random();
//         random.nextBytes(rawData);
// 
//         ByteArrayOutputStream[] streams = new ByteArrayOutputStream[mFiles];
//         for (int i = 0; i < mFiles; i++) {
//             streams[i] = new ByteArrayOutputStream(mFileSize);
//             streams[i].write(rawData, i, mFileSize);
//             mFileNames[i] = String.valueOf(i);
//         }
// 
//         SQLiteStatement insert = db.compileStatement("INSERT INTO files (filename, data) VALUES (?, ?)");
//         for (int i = 0; i < mFiles; i++) {
//             insert.bindString(1, mFileNames[i]);
//             insert.bindBlob(2, streams[i].toByteArray());
// 
//             insert.execute();
//         }
//     }
// 
//     @Override
//     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
// 
//     public String[] getFileNames() {
//         return mFileNames;
//     }
// }


import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import co.jasonwyatt.sqliteperf.App;
import co.jasonwyatt.sqliteperf.TestCase;
import co.jasonwyatt.sqliteperf.blobs.DbHelper;
package co.jasonwyatt.sqliteperf.blobs.cases;




/**
 * @author jason
 */

public class RawQueryTestCase implements TestCase {
    private final int mTestSizeIndex;
// 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/blobs/DbHelper.java
// public class DbHelper extends SQLiteOpenHelper {
//     private final int mFileSize;
//     private final int mFiles;
//     private String[] mFileNames;
// 
//     public DbHelper(Context context, String name, int fileSize, int files) {
//         super(context, name, null, 1);
//         mFileSize = fileSize;
//         mFiles = files;
//     }
// 
//     @Override
//     public void onCreate(SQLiteDatabase db) {
//         db.execSQL("CREATE TABLE files (filename TEXT PRIMARY KEY, data BLOB NOT NULL)");
// 
//         db.beginTransaction();
//         try {
//             createFiles(db);
//             db.setTransactionSuccessful();
//         } finally {
//             db.endTransaction();
//         }
//     }
// 
//     private void createFiles(SQLiteDatabase db) {
//         mFileNames = new String[mFiles];
//         byte[] rawData = new byte[mFileSize+mFiles];
//         Random random = new Random();
//         random.nextBytes(rawData);
// 
//         ByteArrayOutputStream[] streams = new ByteArrayOutputStream[mFiles];
//         for (int i = 0; i < mFiles; i++) {
//             streams[i] = new ByteArrayOutputStream(mFileSize);
//             streams[i].write(rawData, i, mFileSize);
//             mFileNames[i] = String.valueOf(i);
//         }
// 
//         SQLiteStatement insert = db.compileStatement("INSERT INTO files (filename, data) VALUES (?, ?)");
//         for (int i = 0; i < mFiles; i++) {
//             insert.bindString(1, mFileNames[i]);
//             insert.bindBlob(2, streams[i].toByteArray());
// 
//             insert.execute();
//         }
//     }
// 
//     @Override
//     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
// 
//     public String[] getFileNames() {
//         return mFileNames;
//     }
// }


// Path: app/src/main/java/co/jasonwyatt/sqliteperf/blobs/cases/RawQueryTestCase.java
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import co.jasonwyatt.sqliteperf.App;
import co.jasonwyatt.sqliteperf.TestCase;
import co.jasonwyatt.sqliteperf.blobs.DbHelper;

package co.jasonwyatt.sqliteperf.blobs.cases;




/**
 * @author jason
 */

public class RawQueryTestCase implements TestCase {
    private final int mTestSizeIndex;
    private DbHelper mDbHelper;