package net.cattaka.util.cathandsgendroid.test;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import net.cattaka.util.cathandsgendroid.test.model.StringKvModel;
import net.cattaka.util.cathandsgendroid.test.model.StringKvModelCatHands;
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.shadows.ShadowSQLiteDatabase;
import android.database.sqlite.SQLiteDatabase;
@RunWith(RobolectricTestRunner.class)
public class RawQueryTest {
@Test
public void testRawQuery() {
SQLiteDatabase db = ShadowSQLiteDatabase.create(null);
db.execSQL(StringKvModelCatHands.SQL_CREATE_TABLE);
{
StringKvModelCatHands.insert(db, new StringKvModel("key1", "apple"));
StringKvModelCatHands.insert(db, new StringKvModel("key2", "apple"));
StringKvModelCatHands.insert(db, new StringKvModel("key3", "banana"));
StringKvModelCatHands.insert(db, new StringKvModel("key4", "orange"));
}
{
List<StringKvModel> result = StringKvModelCatHands.findByDistinct(db);
Set<String> values = pickValues(result);
assertEquals(3, values.size());
assertTrue(values.contains("apple"));
assertTrue(values.contains("banana"));
assertTrue(values.contains("orange"));
}
{
List<StringKvModel> result = StringKvModelCatHands.findByQueryKey(db, "key3");
assertEquals(1, result.size());
assertEquals("banana", result.get(0).getValue());
}
{
List<StringKvModel> result = StringKvModelCatHands.findByQueryValue(db, "apple");
Set<String> values = pickValues(result);
assertEquals(2, values.size());
assertTrue(values.contains("key1"));
assertTrue(values.contains("key2"));
}
}
private Set<String> pickValues(List<StringKvModel> models) {
Set<String> values = new HashSet<String>();
for (StringKvModel model : models) {
values.add(model.getValue());
}
return values;
}
}