// Path: extensions/database/src/test/java/com/google/android/agera/database/test/matchers/HasPrivateConstructor.java
// @NonNull
// @Factory
// public static Matcher<Class<?>> hasPrivateConstructor() {
//   return INSTANCE;
// }
// 
// Path: extensions/database/src/main/java/com/google/android/agera/database/SqlRequestCompilerStates.java
// interface DBArgumentCompile<T, TC> extends DBArgument<TC>, DBCompile<T> {}
// 
// Path: extensions/database/src/main/java/com/google/android/agera/database/SqlRequestCompilerStates.java
// interface DBColumn<T> {
// 
//   /**
//    * Adds a {@code column} with a {@link String} {@code value}.
//    */
//   @NonNull
//   T column(@NonNull String column, @Nullable String value);
// 
//   /**
//    * Adds a {@code column} with a {@link Byte} {@code value}.
//    */
//   @NonNull
//   T column(@NonNull String column, @Nullable Byte value);
// 
//   /**
//    * Adds a {@code column} with a {@link Short} {@code value}.
//    */
//   @NonNull
//   T column(@NonNull String column, @Nullable Short value);
// 
//   /**
//    * Adds a {@code column} with a {@link Integer} {@code value}.
//    */
//   @NonNull
//   T column(@NonNull String column, @Nullable Integer value);
// 
//   /**
//    * Adds a {@code column} with a {@link Long} {@code value}.
//    */
//   @NonNull
//   T column(@NonNull String column, @Nullable Long value);
// 
//   /**
//    * Adds a {@code column} with a {@link Float} {@code value}.
//    */
//   @NonNull
//   T column(@NonNull String column, @Nullable Float value);
// 
//   /**
//    * Adds a {@code column} with a {@link Double} {@code value}.
//    */
//   @NonNull
//   T column(@NonNull String column, @Nullable Double value);
// 
//   /**
//    * Adds a {@code column} with a {@link Boolean} {@code value}.
//    */
//   @NonNull
//   T column(@NonNull String column, @Nullable Boolean value);
// 
//   /**
//    * Adds a {@code column} with a {@code byte} array {@code value}.
//    */
//   @NonNull
//   T column(@NonNull String column, @Nullable byte[] value);
// 
//   /**
//    * Adds an empty {@code column}.
//    */
//   @NonNull
//   T emptyColumn(@NonNull String column);
// }
// 
// Path: extensions/database/src/main/java/com/google/android/agera/database/SqlRequestCompilerStates.java
// interface DBColumnConflictCompile<T, TSelf extends DBColumnConflictCompile<T, TSelf>>
//     extends DBColumn<TSelf>, DBConflictCompile<T> {}
// 
// Path: extensions/database/src/main/java/com/google/android/agera/database/SqlRequestCompilerStates.java
// interface DBCompile<T> {
// 
//   /**
//    * Compiles a sql request that containing the previously specified data.
//    */
//   @NonNull
//   T compile();
// }
// 
// Path: extensions/database/src/main/java/com/google/android/agera/database/SqlRequestCompilerStates.java
// interface DBSql<T> {
// 
//   /**
//    * Sets sql string.
//    */
//   @NonNull
//   T sql(@NonNull String sql);
// }
// 
// Path: extensions/database/src/main/java/com/google/android/agera/database/SqlRequestCompilerStates.java
// interface DBTable<T> {
// 
//   /**
//    * Sets a table.
//    */
//   @NonNull
//   T table(@NonNull String table);
// }
// 
// Path: extensions/database/src/main/java/com/google/android/agera/database/SqlRequestCompilerStates.java
// interface DBWhereCompile<T, TAc> extends DBWhere<TAc>, DBCompile<T> {}


import static com.google.android.agera.database.SqlRequests.sqlDeleteRequest;
import static com.google.android.agera.database.SqlRequests.sqlInsertRequest;
import static com.google.android.agera.database.SqlRequests.sqlRequest;
import static com.google.android.agera.database.SqlRequests.sqlUpdateRequest;
import static com.google.android.agera.database.test.matchers.HasPrivateConstructor.hasPrivateConstructor;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasToString;
import static org.hamcrest.Matchers.isEmptyOrNullString;
import static org.hamcrest.Matchers.not;
import static org.robolectric.annotation.Config.NONE;
import com.google.android.agera.database.SqlRequestCompilerStates.DBArgumentCompile;
import com.google.android.agera.database.SqlRequestCompilerStates.DBColumn;
import com.google.android.agera.database.SqlRequestCompilerStates.DBColumnConflictCompile;
import com.google.android.agera.database.SqlRequestCompilerStates.DBCompile;
import com.google.android.agera.database.SqlRequestCompilerStates.DBSql;
import com.google.android.agera.database.SqlRequestCompilerStates.DBTable;
import com.google.android.agera.database.SqlRequestCompilerStates.DBWhereCompile;
import nl.jqno.equalsverifier.EqualsVerifier;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
        .column("column", "value")
        .compile();
    sqlInsertRequest2 = sqlInsertRequest()
        .table(TABLE_2)
        .column("column", "value")
        .compile();
  }

  @Test
  public void shouldCreateStringRepresentationForRequest() {
    assertThat(sqlRequest, hasToString(not(isEmptyOrNullString())));
  }

  @Test
  public void shouldCreateStringRepresentationForDelete() {
    assertThat(sqlDeleteRequest, hasToString(not(isEmptyOrNullString())));
  }

  @Test
  public void shouldCreateStringRepresentationForInsert() {
    assertThat(sqlInsertRequest, hasToString(not(isEmptyOrNullString())));
  }

  @Test
  public void shouldCreateStringRepresentationForUpdate() {
    assertThat(sqlUpdateRequest, hasToString(not(isEmptyOrNullString())));
  }

  @Test(expected = IllegalStateException.class)
  public void shouldThrowExceptionForReuseOfCompilerOfCompile() {
// Path: extensions/database/src/test/java/com/google/android/agera/database/test/matchers/HasPrivateConstructor.java
// @NonNull
// @Factory
// public static Matcher<Class<?>> hasPrivateConstructor() {
//   return INSTANCE;
// }
// 
// Path: extensions/database/src/main/java/com/google/android/agera/database/SqlRequestCompilerStates.java
// interface DBArgumentCompile<T, TC> extends DBArgument<TC>, DBCompile<T> {}
// 
// Path: extensions/database/src/main/java/com/google/android/agera/database/SqlRequestCompilerStates.java
// interface DBColumn<T> {
// 
//   /**
//    * Adds a {@code column} with a {@link String} {@code value}.
//    */
//   @NonNull
//   T column(@NonNull String column, @Nullable String value);
// 
//   /**
//    * Adds a {@code column} with a {@link Byte} {@code value}.
//    */
//   @NonNull
//   T column(@NonNull String column, @Nullable Byte value);
// 
//   /**
//    * Adds a {@code column} with a {@link Short} {@code value}.
//    */
//   @NonNull
//   T column(@NonNull String column, @Nullable Short value);
// 
//   /**
//    * Adds a {@code column} with a {@link Integer} {@code value}.
//    */
//   @NonNull
//   T column(@NonNull String column, @Nullable Integer value);
// 
//   /**
//    * Adds a {@code column} with a {@link Long} {@code value}.
//    */
//   @NonNull
//   T column(@NonNull String column, @Nullable Long value);
// 
//   /**
//    * Adds a {@code column} with a {@link Float} {@code value}.
//    */
//   @NonNull
//   T column(@NonNull String column, @Nullable Float value);
// 
//   /**
//    * Adds a {@code column} with a {@link Double} {@code value}.
//    */
//   @NonNull
//   T column(@NonNull String column, @Nullable Double value);
// 
//   /**
//    * Adds a {@code column} with a {@link Boolean} {@code value}.
//    */
//   @NonNull
//   T column(@NonNull String column, @Nullable Boolean value);
// 
//   /**
//    * Adds a {@code column} with a {@code byte} array {@code value}.
//    */
//   @NonNull
//   T column(@NonNull String column, @Nullable byte[] value);
// 
//   /**
//    * Adds an empty {@code column}.
//    */
//   @NonNull
//   T emptyColumn(@NonNull String column);
// }
// 
// Path: extensions/database/src/main/java/com/google/android/agera/database/SqlRequestCompilerStates.java
// interface DBColumnConflictCompile<T, TSelf extends DBColumnConflictCompile<T, TSelf>>
//     extends DBColumn<TSelf>, DBConflictCompile<T> {}
// 
// Path: extensions/database/src/main/java/com/google/android/agera/database/SqlRequestCompilerStates.java
// interface DBCompile<T> {
// 
//   /**
//    * Compiles a sql request that containing the previously specified data.
//    */
//   @NonNull
//   T compile();
// }
// 
// Path: extensions/database/src/main/java/com/google/android/agera/database/SqlRequestCompilerStates.java
// interface DBSql<T> {
// 
//   /**
//    * Sets sql string.
//    */
//   @NonNull
//   T sql(@NonNull String sql);
// }
// 
// Path: extensions/database/src/main/java/com/google/android/agera/database/SqlRequestCompilerStates.java
// interface DBTable<T> {
// 
//   /**
//    * Sets a table.
//    */
//   @NonNull
//   T table(@NonNull String table);
// }
// 
// Path: extensions/database/src/main/java/com/google/android/agera/database/SqlRequestCompilerStates.java
// interface DBWhereCompile<T, TAc> extends DBWhere<TAc>, DBCompile<T> {}


// Path: extensions/database/src/test/java/com/google/android/agera/database/SqlRequestsTest.java
import static com.google.android.agera.database.SqlRequests.sqlDeleteRequest;
import static com.google.android.agera.database.SqlRequests.sqlInsertRequest;
import static com.google.android.agera.database.SqlRequests.sqlRequest;
import static com.google.android.agera.database.SqlRequests.sqlUpdateRequest;
import static com.google.android.agera.database.test.matchers.HasPrivateConstructor.hasPrivateConstructor;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasToString;
import static org.hamcrest.Matchers.isEmptyOrNullString;
import static org.hamcrest.Matchers.not;
import static org.robolectric.annotation.Config.NONE;
import com.google.android.agera.database.SqlRequestCompilerStates.DBArgumentCompile;
import com.google.android.agera.database.SqlRequestCompilerStates.DBColumn;
import com.google.android.agera.database.SqlRequestCompilerStates.DBColumnConflictCompile;
import com.google.android.agera.database.SqlRequestCompilerStates.DBCompile;
import com.google.android.agera.database.SqlRequestCompilerStates.DBSql;
import com.google.android.agera.database.SqlRequestCompilerStates.DBTable;
import com.google.android.agera.database.SqlRequestCompilerStates.DBWhereCompile;
import nl.jqno.equalsverifier.EqualsVerifier;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;

        .column("column", "value")
        .compile();
    sqlInsertRequest2 = sqlInsertRequest()
        .table(TABLE_2)
        .column("column", "value")
        .compile();
  }

  @Test
  public void shouldCreateStringRepresentationForRequest() {
    assertThat(sqlRequest, hasToString(not(isEmptyOrNullString())));
  }

  @Test
  public void shouldCreateStringRepresentationForDelete() {
    assertThat(sqlDeleteRequest, hasToString(not(isEmptyOrNullString())));
  }

  @Test
  public void shouldCreateStringRepresentationForInsert() {
    assertThat(sqlInsertRequest, hasToString(not(isEmptyOrNullString())));
  }

  @Test
  public void shouldCreateStringRepresentationForUpdate() {
    assertThat(sqlUpdateRequest, hasToString(not(isEmptyOrNullString())));
  }

  @Test(expected = IllegalStateException.class)
  public void shouldThrowExceptionForReuseOfCompilerOfCompile() {
    final DBColumnConflictCompile<SqlInsertRequest, ?> incompleteRequest =