Skip to content

Commit d3e0670

Browse files
committed
skeleton for support API tests; initial conversion of 8 tests
1 parent 8c9c0df commit d3e0670

15 files changed

+705
-5
lines changed

app/build.gradle

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,10 @@ dependencies {
2525
//implementation files('libs/sqlcipher.jar')
2626

2727
// For testing local AAR packages:
28-
//implementation (name: 'android-database-sqlcipher-4.0.1', ext: 'aar')
28+
// implementation (name: 'android-database-sqlcipher-4.0.1', ext: 'aar')
29+
implementation files('libs/android-database-sqlcipher-4.0.1-debug.aar')
30+
implementation "androidx.sqlite:sqlite:2.0.1"
2931

3032
// For testing on remote AAR references:
31-
implementation 'net.zetetic:android-database-sqlcipher:4.0.1@aar'
33+
//implementation 'net.zetetic:android-database-sqlcipher:4.0.1@aar'
3234
}

app/src/main/java/net/zetetic/activities/TestRunnerSelectionActivity.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ protected void onCreate(Bundle savedInstanceState) {
1616
setContentView(R.layout.test_runners);
1717
Button behaviorSuite = findViewById(R.id.run_behavior_test_suite);
1818
Button scrollingCursorSuite = findViewById(R.id.run_scrolling_test_suite);
19+
Button supportSuite = findViewById(R.id.run_support_test_suite);
1920
if(behaviorSuite != null){
2021
behaviorSuite.setOnClickListener(new View.OnClickListener() {
2122
@Override
@@ -36,5 +37,15 @@ public void onClick(View view) {
3637
}
3738
});
3839
}
40+
if(supportSuite != null){
41+
supportSuite.setOnClickListener(new View.OnClickListener() {
42+
@Override
43+
public void onClick(View view) {
44+
Intent intent = new Intent(TestRunnerSelectionActivity.this,
45+
TestSuiteBehaviorsActivity.class).putExtra(TestSuiteBehaviorsActivity.EXTRA_IS_SUPPORT, true);
46+
startActivity(intent);
47+
}
48+
});
49+
}
3950
}
4051
}

app/src/main/java/net/zetetic/activities/TestSuiteBehaviorsActivity.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,15 @@
1515
import net.zetetic.tests.ResultNotifier;
1616
import net.zetetic.tests.TestResult;
1717
import net.zetetic.tests.TestSuiteRunner;
18+
import net.zetetic.tests.support.SupportSuiteRunner;
1819

1920
import java.io.File;
2021
import java.io.FileOutputStream;
2122
import java.util.ArrayList;
2223
import java.util.List;
2324

2425
public class TestSuiteBehaviorsActivity extends Activity implements ResultNotifier {
25-
26+
static final String EXTRA_IS_SUPPORT = "isSupport";
2627
private String TAG = this.getClass().getSimpleName();
2728
ListView resultsView;
2829
List<TestResult> results;
@@ -50,7 +51,13 @@ public void onButtonClick(View view) {
5051
findViewById(R.id.executeSuite).setEnabled(false);
5152
resultsView = (ListView) findViewById(R.id.test_suite_results);
5253
ZeteticApplication.getInstance().setCurrentActivity(this);
53-
new TestSuiteRunner(this).execute(this);
54+
55+
if (getIntent().getBooleanExtra(EXTRA_IS_SUPPORT, false)) {
56+
new SupportSuiteRunner(this).execute(this);
57+
}
58+
else {
59+
new TestSuiteRunner(this).execute(this);
60+
}
5461
}
5562

5663
@Override

app/src/main/java/net/zetetic/tests/RowColumnBuilder.java renamed to app/src/main/java/net/zetetic/tests/RowColumnValueBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
package net.zetetic.tests;
22

3-
interface RowColumnValueBuilder {
3+
public interface RowColumnValueBuilder {
44
Object buildRowColumnValue(String[] columns, int row, int column);
55
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package net.zetetic.tests.support;
2+
3+
import net.sqlcipher.database.SQLiteDatabase;
4+
import net.zetetic.QueryHelper;
5+
import net.zetetic.tests.SQLCipherTest;
6+
7+
public class FIPSTest extends SupportTest {
8+
@Override
9+
public boolean execute(SQLiteDatabase database) {
10+
11+
String version = QueryHelper.singleValueFromQuery(database, "PRAGMA cipher_version;");
12+
setMessage(String.format("SQLCipher version:%s", version));
13+
int expectedValue = version.contains("FIPS") ? 1 : 0;
14+
15+
int status = QueryHelper.singleIntegerValueFromQuery(database, "PRAGMA cipher_fips_status;");
16+
return status == expectedValue;
17+
}
18+
19+
@Override
20+
public String getName() {
21+
return "FIPS Test";
22+
}
23+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package net.zetetic.tests.support;
2+
3+
import net.sqlcipher.database.SQLiteDatabase;
4+
import net.zetetic.tests.SQLCipherTest;
5+
6+
public class JavaClientLibraryVersionTest extends SupportTest {
7+
8+
String expectedClientLibraryVersion = "4.0.1";
9+
10+
@Override
11+
public boolean execute(SQLiteDatabase database) {
12+
setMessage(String.format("Report:%s", SQLiteDatabase.SQLCIPHER_ANDROID_VERSION));
13+
return SQLiteDatabase.SQLCIPHER_ANDROID_VERSION.equals(expectedClientLibraryVersion);
14+
}
15+
16+
@Override
17+
public String getName() {
18+
return "Java Client Library Version Test";
19+
}
20+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package net.zetetic.tests.support;
2+
3+
import android.util.Log;
4+
import net.sqlcipher.database.SQLiteDatabase;
5+
import net.zetetic.tests.SQLCipherTest;
6+
7+
public class LoopingInsertTest extends SupportTest {
8+
@Override
9+
public boolean execute(SQLiteDatabase database) {
10+
database.execSQL("CREATE TABLE some_table(name TEXT, surname TEXT);");
11+
long startTime = System.currentTimeMillis();
12+
database.execSQL("begin;");
13+
for(int index = 0; index < 10000; index++){
14+
database.execSQL("insert into some_table(name, surname) values(?, ?)",
15+
new Object[]{"one for the money", "two for the show"});
16+
}
17+
database.execSQL("commit;");
18+
long diff = System.currentTimeMillis() - startTime;
19+
Log.e(TAG, String.format("Inserted in: %d ms", diff));
20+
return true;
21+
}
22+
23+
@Override
24+
public String getName() {
25+
return "Looping Insert Test";
26+
}
27+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package net.zetetic.tests.support;
2+
3+
import android.database.Cursor;
4+
import android.util.Log;
5+
import net.sqlcipher.database.SQLiteDatabase;
6+
import net.zetetic.tests.SQLCipherTest;
7+
8+
public class PragmaCipherVersionTest extends SupportTest {
9+
10+
private final String CURRENT_CIPHER_VERSION = "4.0.1";
11+
12+
@Override
13+
public boolean execute(SQLiteDatabase database) {
14+
15+
Log.i(TAG, "Before rawQuery");
16+
Cursor cursor = database.rawQuery("PRAGMA cipher_version", new String[]{});
17+
Log.i(TAG, "After rawQuery");
18+
if(cursor != null){
19+
Log.i(TAG, "Before cursor.moveToNext()");
20+
cursor.moveToNext();
21+
Log.i(TAG, "Before cursor.getString(0)");
22+
String cipherVersion = cursor.getString(0);
23+
Log.i(TAG, "Before cursor.close");
24+
cursor.close();
25+
setMessage(String.format("Reported:%s", cipherVersion));
26+
return cipherVersion.contains(CURRENT_CIPHER_VERSION);
27+
}
28+
return false;
29+
}
30+
31+
@Override
32+
public String getName() {
33+
return "PRAGMA cipher_version Test";
34+
}
35+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package net.zetetic.tests.support;
2+
3+
import net.sqlcipher.database.SQLiteDatabase;
4+
import net.sqlcipher.database.SQLiteQueryStats;
5+
import net.zetetic.tests.SQLCipherTest;
6+
7+
public class QueryDataSizeTest extends SupportTest {
8+
@Override
9+
public boolean execute(SQLiteDatabase database) {
10+
database.execSQL("CREATE TABLE t1(a,b);");
11+
database.execSQL("INSERT INTO t1(a,b) VALUES(?, ?);",
12+
new Object[]{generateRandomByteArray(256), generateRandomByteArray(256)});
13+
database.execSQL("INSERT INTO t1(a,b) VALUES(?, ?);",
14+
new Object[]{generateRandomByteArray(1024), generateRandomByteArray(64)});
15+
SQLiteQueryStats result = database.getQueryStats("SELECT * FROM t1;", new Object[]{});
16+
return result.getTotalQueryResultSize() > 0 && result.getLargestIndividualRowSize() > 0;
17+
}
18+
19+
@Override
20+
public String getName() {
21+
return "Query Data Size Test";
22+
}
23+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package net.zetetic.tests.support;
2+
3+
import net.sqlcipher.database.SQLiteDatabase;
4+
import net.zetetic.tests.SQLCipherTest;
5+
6+
public class ReadWriteUserVersionTest extends SupportTest {
7+
@Override
8+
public boolean execute(SQLiteDatabase database) {
9+
int version = 4;
10+
database.setVersion(version);
11+
int readVersion = database.getVersion();
12+
return version == readVersion;
13+
}
14+
15+
@Override
16+
public String getName() {
17+
return "Read/write user_version";
18+
}
19+
}

0 commit comments

Comments
 (0)