package kdk.android.simplydo.test;

import java.io.File;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

import com.robotium.solo.Solo;

import android.os.Bundle;
import android.os.Environment;
import android.test.ActivityInstrumentationTestCase2;
import android.util.Log;
import kdk.android.simplydo.L;
import kdk.android.simplydo.ListDesc;
import kdk.android.simplydo.ListListSorter;
import kdk.android.simplydo.RestoreActivity;
import kdk.android.simplydo.SettingsActivity;
import kdk.android.simplydo.SimplyDoActivity;

public class SimplyDoWBTest extends ActivityInstrumentationTestCase2<SimplyDoActivity> {
	private Solo solo;

	public SimplyDoWBTest() {
		super(SimplyDoActivity.class);
	}

	@Override
	protected void setUp() throws Exception {
		super.setUp();
		solo = new Solo(getInstrumentation());
	}

	protected void tearDown() throws Exception {
		solo.finishOpenedActivities();
		super.tearDown();

	}

	public void testRun1() {
		System.out.println("start");
		Method method;
		ListDesc ld = new ListDesc();
		List<ListDesc> list = new ArrayList<ListDesc>();
		list.add(ld);

		ListListSorter lls = new ListListSorter();
		lls.sort(list);
		lls.setSortingMode("ciao");
		
		

		try {
			method = lls.getClass().getDeclaredMethod("sort", List.class);
			method.invoke(lls.getClass(), "null");
		} catch (NoSuchMethodException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		SimplyDoActivity myActivity = getActivity();
		getInstrumentation().callActivityOnRestart(myActivity);
	}

	public void testRun2() {
		L l = new L();
		File file = new File(Environment.getExternalStorageState());
		File dbFile = new File(Environment.getExternalStorageState());
		getActivity();
		try {
			SettingsActivity.fileCopy(file, dbFile);
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		Method method;
		RestoreActivity ra = new RestoreActivity();
		Class RAC = ra.getClass();
		try {

			method = RAC.getDeclaredMethod("doRestore", null);
			method.setAccessible(true);
			method.invoke(RAC);
		} catch (NoSuchMethodException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

	
}