Skip to content

Commit 82b4217

Browse files
Running Support API (Room) tests in suite
1 parent 671a956 commit 82b4217

File tree

6 files changed

+150
-127
lines changed

6 files changed

+150
-127
lines changed

sqlcipher/build.gradle

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -49,26 +49,16 @@ android {
4949

5050
dependencies {
5151
implementation fileTree(include: ['*.jar'], dir: 'libs')
52-
implementation 'androidx.sqlite:sqlite:2.1.0'
53-
54-
// androidTestImplementation 'androidx.room:room-common:2.3.0'
55-
// androidTestImplementation 'androidx.room:room-runtime:2.3.0'
56-
// annotationProcessor 'androidx.room:room-compiler:2.3.0'
57-
58-
def room_version = "2.3.0"
59-
androidTestImplementation "androidx.room:room-runtime:$room_version"
60-
annotationProcessor "androidx.room:room-compiler:$room_version"
61-
androidTestImplementation "androidx.room:room-testing:$room_version"
6252

63-
testImplementation "androidx.arch.core:core-testing:room_version"
64-
65-
// For Room tests:
66-
// androidTestImplementation "androidx.room:room-runtime:2.1.0"
67-
// androidTestImplementation "androidx.room:room-testing:2.1.0"
68-
// annotationProcessor "androidx.room:room-compiler:2.1.0"
53+
// Needed for the Support API interfaces
54+
implementation 'androidx.sqlite:sqlite:2.1.0'
6955

70-
//androidTestImplementation 'androidx.annotation:annotation:1.2.0'
56+
// Needed for the Support API in tests
57+
androidTestImplementation 'androidx.room:room-common:2.3.0'
58+
androidTestImplementation 'androidx.room:room-runtime:2.3.0'
59+
androidTestAnnotationProcessor 'androidx.room:room-compiler:2.3.0'
7160

61+
// Needed for supporting tests
7262
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
7363
androidTestImplementation 'androidx.test:rules:1.4.0'
7464
androidTestImplementation 'androidx.test:core:1.4.0'
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
package net.zetetic.database.sqlcipher_cts;
2+
3+
import static org.hamcrest.CoreMatchers.not;
4+
import static org.hamcrest.CoreMatchers.notNullValue;
5+
import static org.hamcrest.Matchers.is;
6+
import static org.junit.Assert.assertThat;
7+
8+
import android.content.Context;
9+
import android.database.Cursor;
10+
11+
import androidx.room.ColumnInfo;
12+
import androidx.room.Dao;
13+
import androidx.room.Database;
14+
import androidx.room.Delete;
15+
import androidx.room.Entity;
16+
import androidx.room.Insert;
17+
import androidx.room.OnConflictStrategy;
18+
import androidx.room.PrimaryKey;
19+
import androidx.room.Query;
20+
import androidx.room.Room;
21+
import androidx.room.RoomDatabase;
22+
import androidx.sqlite.db.SupportSQLiteDatabase;
23+
import androidx.sqlite.db.SupportSQLiteOpenHelper;
24+
import androidx.test.core.app.ApplicationProvider;
25+
import androidx.test.ext.junit.runners.AndroidJUnit4;
26+
27+
import net.zetetic.database.sqlcipher.SupportOpenHelperFactory;
28+
29+
import org.junit.After;
30+
import org.junit.Before;
31+
import org.junit.Test;
32+
import org.junit.runner.RunWith;
33+
34+
import java.nio.charset.StandardCharsets;
35+
import java.util.List;
36+
37+
@RunWith(AndroidJUnit4.class)
38+
public class SupportAPIRoomTest {
39+
40+
private AppDatabase db;
41+
private UserDao userDao;
42+
43+
@Before
44+
public void before(){
45+
Context context = ApplicationProvider.getApplicationContext();
46+
System.loadLibrary("sqlcipher");
47+
SupportOpenHelperFactory factory = new SupportOpenHelperFactory("user".getBytes(StandardCharsets.UTF_8));
48+
db = Room.databaseBuilder(context, AppDatabase.class, "users.db")
49+
.openHelperFactory(factory).build();
50+
db.clearAllTables();
51+
userDao = db.userDao();
52+
}
53+
54+
@Test
55+
public void shouldInsertDataViaDao(){
56+
User user = new User("John", "Doe");
57+
user.uid = userDao.insert(user);
58+
assertThat(user.uid, is(not(0)));
59+
}
60+
61+
@Test
62+
public void shouldDeleteDataViaDao(){
63+
User user = new User("foo", "bar");
64+
user.uid = 1;
65+
SupportSQLiteOpenHelper helper = db.getOpenHelper();
66+
SupportSQLiteDatabase database = helper.getWritableDatabase();
67+
database.execSQL("insert into user values(?,?,?);",
68+
new Object[]{user.uid, user.firstName, user.lastName});
69+
Cursor cursor = database.query("select count(*) from user;");
70+
cursor.moveToFirst();
71+
boolean userInserted = cursor.getInt(0) > 0;
72+
assertThat(userInserted, is(true));
73+
userDao.delete(user);
74+
cursor = database.query("select count(*) from user;");
75+
cursor.moveToFirst();
76+
int existingUsers = cursor.getInt(0);
77+
cursor.close();
78+
assertThat(existingUsers, is(0));
79+
}
80+
81+
@Test
82+
public void shouldQueryDataByParametersViaDao(){
83+
User user = new User("foo", "bar");
84+
user.uid = 1;
85+
SupportSQLiteOpenHelper helper = db.getOpenHelper();
86+
SupportSQLiteDatabase database = helper.getWritableDatabase();
87+
database.execSQL("insert into user values(?,?,?);",
88+
new Object[]{user.uid, user.firstName, user.lastName});
89+
User foundUser = userDao.findByName(user.firstName, user.lastName);
90+
assertThat(foundUser.uid, is(user.uid));
91+
assertThat(foundUser.firstName, is(user.firstName));
92+
assertThat(foundUser.lastName, is(user.lastName));
93+
}
94+
95+
@After
96+
public void after(){
97+
if(db != null){
98+
db.close();
99+
}
100+
}
101+
102+
@Database(entities = {User.class}, version = 1)
103+
public abstract static class AppDatabase extends RoomDatabase {
104+
public abstract UserDao userDao();
105+
}
106+
107+
@Entity
108+
public static class User {
109+
@PrimaryKey(autoGenerate = true)
110+
public long uid;
111+
@ColumnInfo(name = "first_name")
112+
public String firstName;
113+
@ColumnInfo(name = "last_name")
114+
public String lastName;
115+
116+
public User(String firstName, String lastName) {
117+
this.firstName = firstName;
118+
this.lastName = lastName;
119+
}
120+
}
121+
122+
@Dao
123+
public interface UserDao {
124+
@Query("SELECT * FROM user")
125+
List<User> getAll();
126+
127+
@Query("SELECT * FROM user WHERE uid IN (:userIds)")
128+
List<User> loadAllByIds(int[] userIds);
129+
130+
@Query("SELECT * FROM user WHERE first_name LIKE :first AND " +
131+
"last_name LIKE :last LIMIT 1")
132+
User findByName(String first, String last);
133+
134+
@Insert(onConflict = OnConflictStrategy.REPLACE)
135+
long insert(User user);
136+
137+
@Delete
138+
void delete(User user);
139+
140+
@Query("DELETE FROM user;")
141+
void deleteAll();
142+
}
143+
}

sqlcipher/src/androidTest/java/net/zetetic/database/sqlcipher_cts/support/AppDatabase.java

Lines changed: 0 additions & 9 deletions
This file was deleted.

sqlcipher/src/androidTest/java/net/zetetic/database/sqlcipher_cts/support/SupportAPIRoomTest.java

Lines changed: 0 additions & 54 deletions
This file was deleted.

sqlcipher/src/androidTest/java/net/zetetic/database/sqlcipher_cts/support/User.java

Lines changed: 0 additions & 20 deletions
This file was deleted.

sqlcipher/src/androidTest/java/net/zetetic/database/sqlcipher_cts/support/UserDao.java

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)