package com.cpiekarski.fourteeners.test; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.LargeTest; import android.test.suitebuilder.annotation.MediumTest; import android.test.suitebuilder.annotation.SmallTest; import com.cpiekarski.fourteeners.register.Register; import com.cpiekarski.fourteeners.register.RegisterEntry; import com.cpiekarski.fourteeners.register.RegisterHelper; import com.cpiekarski.fourteeners.utils.Mountains; import junit.framework.Assert; import java.sql.Date; import java.text.SimpleDateFormat; import java.util.Locale; import android.util.Log; public class RegisterTest extends AndroidTestCase { private RegisterEntry mEntry; private final String TAG = "RegisterTest"; public RegisterTest() { super(); } protected void setUp() throws Exception { super.setUp(); clearAllRows(); mEntry = new RegisterEntry(getContext()); } protected void tearDown() throws Exception { super.tearDown(); clearAllRows(); mEntry = null; } private String getTimeStamp() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.US); String formatedDate = sdf.format(new Date(System.currentTimeMillis())); return formatedDate; } private String setFalseEntryData(String mtn, int i, boolean summit) { String ts = getTimeStamp(); mEntry.setMountain(Mountains.getInstance(getContext()).getMountain(mtn)); mEntry.setNotes("This is a JUnit test insert"); mEntry.setStartTime(ts); mEntry.setDistance(String.valueOf(12345+i)); mEntry.setStartElevation(10000+i); mEntry.setStartLoc(1.0+i, 1.0+i, 100+i); mEntry.setReachedSummit(summit); return ts; } private void clearAllRows() { RegisterHelper r = new RegisterHelper(getContext()); SQLiteDatabase d = r.getWritableDatabase(); d.delete(RegisterHelper.TABLE_NAME, null, null); d.close(); r.close(); } @SmallTest public void testLastEntry() { String[] tss = new String[50]; for(int i = 0; i < 50; ++i) { String ts = setFalseEntryData("Longs Peak", i, true); tss[i] = ts; Assert.assertTrue(mEntry.createEntry()); } RegisterEntry lastEntry = Register.getInstance(getContext()).getLastEntry(); Assert.assertEquals("Front", lastEntry.getMountainRange()); Assert.assertEquals("Longs Peak", lastEntry.getMountainName()); } @MediumTest public void testTotalEntries() { for(int i = 0; i < 100; ++i) { setFalseEntryData("Longs Peak", i, false); Assert.assertTrue(mEntry.createEntry()); } Assert.assertTrue("Total entries not 100", 100 == Register.getInstance(getContext()).getTotalEntries()); } @MediumTest public void testTotal100Summits() { for(int i = 0; i < 100; ++i) { setFalseEntryData("Longs Peak", i, true); Assert.assertTrue(mEntry.createEntry()); } Assert.assertTrue("Total summits not 100", 100 == Register.getInstance(getContext()).getTotalSummits()); } @LargeTest public void testTotal200SummitMix() { for(int i = 0; i < 200; ++i) { setFalseEntryData("Longs Peak", i, i % 2 == 0 ? true : false); Assert.assertTrue(mEntry.createEntry()); } Assert.assertTrue("Total summits not 200", 200 == Register.getInstance(getContext()).getTotalEntries()); Assert.assertTrue("Total summits not 100", 100 == Register.getInstance(getContext()).getTotalSummits()); Assert.assertTrue("Total unique summits not 1", 1 == Register.getInstance(getContext()).getTotalUniqueSummits()); } }