// Path: iron/src/androidTest/java/io/fabianterhorst/iron/testdata/Person.java
// public class Person {
//     private String mName;
//     private int mAge;
//     private List<String> mPhoneNumbers;
//     private String[] mBikes;
// 
//     public String getName() {
//         return mName;
//     }
// 
//     public void setName(String name) {
//         mName = name;
//     }
// 
//     public int getAge() {
//         return mAge;
//     }
// 
//     public void setAge(int age) {
//         mAge = age;
//     }
// 
//     public List<String> getPhoneNumbers() {
//         return mPhoneNumbers;
//     }
// 
//     public void setPhoneNumbers(List<String> phoneNumbers) {
//         mPhoneNumbers = phoneNumbers;
//     }
// 
//     public String[] getBikes() {
//         return mBikes;
//     }
// 
//     public void setBikes(String[] bikes) {
//         mBikes = bikes;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || Person.class != o.getClass()) return false;
//         Person person = (Person) o;
//         return mAge == person.mAge && Arrays.equals(mBikes, person.mBikes) && (mName != null ? mName.equals(person.mName) : person.mName == null && (mPhoneNumbers != null ? mPhoneNumbers.equals(person.mPhoneNumbers) : person.mPhoneNumbers == null));
//     }
// 
//     @Override
//     public int hashCode() {
//         int result = mName != null ? mName.hashCode() : 0;
//         result = 31 * result + mAge;
//         result = 31 * result + (mPhoneNumbers != null ? mPhoneNumbers.hashCode() : 0);
//         result = 31 * result + (mBikes != null ? Arrays.hashCode(mBikes) : 0);
//         return result;
//     }
// }
// 
// Path: iron/src/androidTest/java/io/fabianterhorst/iron/testdata/PersonArg.java
// public class PersonArg extends Person {
//     public PersonArg(String name) {
//         super();
//         setName("changed" + name);
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || PersonArg.class != o.getClass()) return false;
// 
//         PersonArg person = (PersonArg) o;
// 
//         if (getAge() != person.getAge()) return false;
//         if (!Arrays.equals(getBikes(), person.getBikes())) return false;
//         if (getName() != null ? !getName().equals(person.getName()) : person.getName() != null)
//             return false;
//         //noinspection RedundantIfStatement
//         if (getPhoneNumbers() != null
//                 ? !getPhoneNumbers().equals(person.getPhoneNumbers())
//                 : person.getPhoneNumbers() != null)
//             return false;
// 
//         return true;
//     }
// 
//     @Override
//     public int hashCode() {
//         return super.hashCode();
//     }
// }
// 
// Path: iron/src/androidTest/java/io/fabianterhorst/iron/testdata/TestDataGenerator.java
// @NonNull
// public static <T extends Person> T genPerson(T p, int i) {
//     p.setAge(i);
//     p.setBikes(new String[2]);
//     p.getBikes()[0] = "Kellys gen#" + i;
//     p.getBikes()[1] = "Trek gen#" + i;
//     p.setPhoneNumbers(new ArrayList<String>());
//     p.getPhoneNumbers().add("0-KEEP-CALM" + i);
//     p.getPhoneNumbers().add("0-USE-IRON" + i);
//     return p;
// }
// 
// Path: iron/src/androidTest/java/io/fabianterhorst/iron/testdata/TestDataGenerator.java
// public static List<Person> genPersonList(int size) {
//     List<Person> list = new ArrayList<>();
//     for (int i = 0; i < size; i++) {
//         Person p = genPerson(new Person(), i);
//         list.add(p);
//     }
//     return list;
// }
// 
// Path: iron/src/androidTest/java/io/fabianterhorst/iron/testdata/TestDataGenerator.java
// public static Map<Integer, Person> genPersonMap(int size) {
//     HashMap<Integer, Person> map = new HashMap<>();
//     int i = 0;
//     for (Person person : genPersonList(size)) {
//         map.put(i++, person);
//     }
//     return map;
// }


import android.support.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.GregorianCalendar;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import io.fabianterhorst.iron.testdata.Person;
import io.fabianterhorst.iron.testdata.PersonArg;
import static android.support.test.InstrumentationRegistry.getTargetContext;
import static io.fabianterhorst.iron.testdata.TestDataGenerator.genPerson;
import static io.fabianterhorst.iron.testdata.TestDataGenerator.genPersonList;
import static io.fabianterhorst.iron.testdata.TestDataGenerator.genPersonMap;
import static org.assertj.core.api.Assertions.assertThat;
package io.fabianterhorst.iron;






/**
 * Tests List write/read API
 */
@RunWith(AndroidJUnit4.class)
public class DataTest {

    @Before
    public void setUp() throws Exception {
        Iron.init(getTargetContext());
        //Iron.setCache(Cache.MEMORY);
        //Iron.chest("keys").destroy();
        Iron.chest().destroy();
        //Iron.setEncryptionExtension(new IronEncryption());
    }

    @Test
    public void testPutEmptyList() throws Exception {
        final List<Person> inserted = genPersonList(0);
        Iron.chest().write("persons", inserted);
        //Iron.chest().invalidateCache("persons");
        assertThat(Iron.chest().<List>read("persons")).isEmpty();
    }

    @Test
    public void testPutGetList() {
// Path: iron/src/androidTest/java/io/fabianterhorst/iron/testdata/Person.java
// public class Person {
//     private String mName;
//     private int mAge;
//     private List<String> mPhoneNumbers;
//     private String[] mBikes;
// 
//     public String getName() {
//         return mName;
//     }
// 
//     public void setName(String name) {
//         mName = name;
//     }
// 
//     public int getAge() {
//         return mAge;
//     }
// 
//     public void setAge(int age) {
//         mAge = age;
//     }
// 
//     public List<String> getPhoneNumbers() {
//         return mPhoneNumbers;
//     }
// 
//     public void setPhoneNumbers(List<String> phoneNumbers) {
//         mPhoneNumbers = phoneNumbers;
//     }
// 
//     public String[] getBikes() {
//         return mBikes;
//     }
// 
//     public void setBikes(String[] bikes) {
//         mBikes = bikes;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || Person.class != o.getClass()) return false;
//         Person person = (Person) o;
//         return mAge == person.mAge && Arrays.equals(mBikes, person.mBikes) && (mName != null ? mName.equals(person.mName) : person.mName == null && (mPhoneNumbers != null ? mPhoneNumbers.equals(person.mPhoneNumbers) : person.mPhoneNumbers == null));
//     }
// 
//     @Override
//     public int hashCode() {
//         int result = mName != null ? mName.hashCode() : 0;
//         result = 31 * result + mAge;
//         result = 31 * result + (mPhoneNumbers != null ? mPhoneNumbers.hashCode() : 0);
//         result = 31 * result + (mBikes != null ? Arrays.hashCode(mBikes) : 0);
//         return result;
//     }
// }
// 
// Path: iron/src/androidTest/java/io/fabianterhorst/iron/testdata/PersonArg.java
// public class PersonArg extends Person {
//     public PersonArg(String name) {
//         super();
//         setName("changed" + name);
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || PersonArg.class != o.getClass()) return false;
// 
//         PersonArg person = (PersonArg) o;
// 
//         if (getAge() != person.getAge()) return false;
//         if (!Arrays.equals(getBikes(), person.getBikes())) return false;
//         if (getName() != null ? !getName().equals(person.getName()) : person.getName() != null)
//             return false;
//         //noinspection RedundantIfStatement
//         if (getPhoneNumbers() != null
//                 ? !getPhoneNumbers().equals(person.getPhoneNumbers())
//                 : person.getPhoneNumbers() != null)
//             return false;
// 
//         return true;
//     }
// 
//     @Override
//     public int hashCode() {
//         return super.hashCode();
//     }
// }
// 
// Path: iron/src/androidTest/java/io/fabianterhorst/iron/testdata/TestDataGenerator.java
// @NonNull
// public static <T extends Person> T genPerson(T p, int i) {
//     p.setAge(i);
//     p.setBikes(new String[2]);
//     p.getBikes()[0] = "Kellys gen#" + i;
//     p.getBikes()[1] = "Trek gen#" + i;
//     p.setPhoneNumbers(new ArrayList<String>());
//     p.getPhoneNumbers().add("0-KEEP-CALM" + i);
//     p.getPhoneNumbers().add("0-USE-IRON" + i);
//     return p;
// }
// 
// Path: iron/src/androidTest/java/io/fabianterhorst/iron/testdata/TestDataGenerator.java
// public static List<Person> genPersonList(int size) {
//     List<Person> list = new ArrayList<>();
//     for (int i = 0; i < size; i++) {
//         Person p = genPerson(new Person(), i);
//         list.add(p);
//     }
//     return list;
// }
// 
// Path: iron/src/androidTest/java/io/fabianterhorst/iron/testdata/TestDataGenerator.java
// public static Map<Integer, Person> genPersonMap(int size) {
//     HashMap<Integer, Person> map = new HashMap<>();
//     int i = 0;
//     for (Person person : genPersonList(size)) {
//         map.put(i++, person);
//     }
//     return map;
// }


// Path: iron/src/androidTest/java/io/fabianterhorst/iron/DataTest.java
import android.support.test.runner.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.GregorianCalendar;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import io.fabianterhorst.iron.testdata.Person;
import io.fabianterhorst.iron.testdata.PersonArg;
import static android.support.test.InstrumentationRegistry.getTargetContext;
import static io.fabianterhorst.iron.testdata.TestDataGenerator.genPerson;
import static io.fabianterhorst.iron.testdata.TestDataGenerator.genPersonList;
import static io.fabianterhorst.iron.testdata.TestDataGenerator.genPersonMap;
import static org.assertj.core.api.Assertions.assertThat;

package io.fabianterhorst.iron;






/**
 * Tests List write/read API
 */
@RunWith(AndroidJUnit4.class)
public class DataTest {

    @Before
    public void setUp() throws Exception {
        Iron.init(getTargetContext());
        //Iron.setCache(Cache.MEMORY);
        //Iron.chest("keys").destroy();
        Iron.chest().destroy();
        //Iron.setEncryptionExtension(new IronEncryption());
    }

    @Test
    public void testPutEmptyList() throws Exception {
        final List<Person> inserted = genPersonList(0);
        Iron.chest().write("persons", inserted);
        //Iron.chest().invalidateCache("persons");
        assertThat(Iron.chest().<List>read("persons")).isEmpty();
    }

    @Test
    public void testPutGetList() {
        final List<Person> inserted = genPersonList(10000);