package caldwell.ben.trolly.test;

import caldwell.ben.trolly.Trolly;
import com.robotium.solo.*;
import android.test.ActivityInstrumentationTestCase2;

public class TrollyTest extends ActivityInstrumentationTestCase2<Trolly> {
	private Solo solo;

	public TrollyTest() {
		super(Trolly.class);
	}

	public void setUp() throws Exception {
		super.setUp();
		solo = new Solo(getInstrumentation());
		getActivity();
	}

	@Override
	public void tearDown() throws Exception {
		solo.finishOpenedActivities();
		super.tearDown();
	}

	public void testRun() {
		// Wait for activity: 'caldwell.ben.trolly.Trolly'
		solo.waitForActivity(caldwell.ben.trolly.Trolly.class, 2000);
		// Click sulla barra di testo in alto
		//solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.textbox));
		// Imposta un timeout
		Timeout.setSmallTimeout(15986);
		// Inserimento del testo: 'Oggetto1'
		solo.clearEditText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox));
		solo.enterText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox), "Oggetto1");
		// Aggiunta oggetto
		solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.btn_add));
		// Inserimento del testo: 'Oggetto2'
		solo.clearEditText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox));
		solo.enterText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox), "Oggetto2");
		// Aggiunta oggetto
		solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.btn_add));
		// Inserimento del testo: 'Latte'
		solo.clearEditText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox));
		solo.enterText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox), "Latte");
		// Aggiunta oggetto
		solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.btn_add));
		// Inserimento del testo: 'Pagare Tasse'
		solo.clearEditText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox));
		solo.enterText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox), "Pagare Tasse");
		// Aggiunta oggetto
		solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.btn_add));
		// Inserimento del testo: 'Arance'
		solo.clearEditText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox));
		solo.enterText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox), "Arance");
		// Aggiunta oggetto
		solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.btn_add));

		// Segna oggetto 'Arance' come acquistato
		solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.item));
		// Segna oggetto 'Latte' come acquistato
		solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.item, 1));

		// Long click su 'Oggetto1'
		solo.clickLongOnView(solo.getView(caldwell.ben.trolly.R.id.item, 2));
		solo.waitForDialogToOpen(5000);
		// Annulla
		solo.goBack();

		// Long click su 'Oggetto1'
		solo.clickLongOnView(solo.getView(caldwell.ben.trolly.R.id.item, 2));
		solo.waitForDialogToOpen(5000);
		// Click on Off list
		solo.clickInList(2, 0);

		// Long click 'Oggetto2'
		solo.clickLongOnView(solo.getView(caldwell.ben.trolly.R.id.item, 2));
		solo.waitForDialogToOpen(5000);
		// Click su Off list
		solo.clickInList(2, 0);

		// Long click Pagare Tasse
		solo.clickLongOnView(solo.getView(caldwell.ben.trolly.R.id.item, 2));
		solo.waitForDialogToOpen(5000);
		// Click on Off list
		solo.clickInList(2, 0);

		// Click su Arance
		solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.item));

		// Enter the text: 'Pagare Tasse'
		solo.clearEditText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox));
		solo.enterText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox), "Pagare Tasse");
		// Click su Add
		solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.btn_add));

		// Long click su 'Arance'
		solo.clickLongOnView(solo.getView(caldwell.ben.trolly.R.id.item));
		solo.waitForDialogToOpen(5000);
		// Click su 'In trolley'
		solo.clickInList(1, 0);

		// Click su 'Arance', segna come attivo
		solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.item));
		// Long click su 'Arance'
		solo.clickLongOnView(solo.getView(caldwell.ben.trolly.R.id.item));
		solo.waitForDialogToOpen(5000);
		// Click su Edit
		solo.clickInList(3, 0);
		// Inserimento nuovo testo: 'Arance verdi'
		solo.clearEditText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.edit));
		solo.enterText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.edit), "Arance verdi");
		// Click su OK
		solo.clickOnButton("OK");

		solo.clickLongOnView(solo.getView(caldwell.ben.trolly.R.id.item, 1));
		solo.waitForDialogToOpen(5000);
		// Click su Edit
		solo.clickInList(3, 0);
		// Inserimento nuovo testo: 'Latte'
		solo.clearEditText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.edit));
		solo.enterText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.edit), "Latte");
		solo.clickOnView(solo.getView(android.R.id.button1));

		solo.clickLongOnView(solo.getView(caldwell.ben.trolly.R.id.item, 1));
		solo.waitForDialogToOpen(5000);
		// Click su Edit
		solo.clickInList(3, 0);
		// Click on Cancel
		solo.clickOnView(solo.getView(android.R.id.button2));

		// Long click su 'Latte'
		solo.clickLongOnView(solo.getView(caldwell.ben.trolly.R.id.item, 1));
		// Wait for dialog
		solo.waitForDialogToOpen(5000);
		// Click su Edit
		solo.clickInList(3, 0);
		// Enter the text: 'Latte blu'
		solo.clearEditText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.edit));
		solo.enterText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.edit), "Latte blu");
		// Click su OK
		solo.clickOnView(solo.getView(android.R.id.button1));

		// Long click su 'Latte blu'
		solo.clickLongOnView(solo.getView(caldwell.ben.trolly.R.id.item, 1));
		solo.waitForDialogToOpen(5000);
		// Click su 'Off list'
		solo.clickInList(2, 0);

		// Cambia modalit
		solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.btn_add));

		// Long click su 'Latte blu'
		solo.clickLongOnView(solo.getView(caldwell.ben.trolly.R.id.item, 1));
		solo.waitForDialogToOpen(5000);
		// Click su 'On list', riportandolo in lista
		solo.clickInList(1, 0);

		// Long click Latte blu
		solo.clickLongOnView(solo.getView(caldwell.ben.trolly.R.id.item, 1));
		// Wait for dialog
		solo.waitForDialogToOpen(5000);
		// Click on In trolley
		solo.clickInList(1, 0);

		// Long click su 'Oggetto1'
		solo.clickLongOnView(solo.getView(caldwell.ben.trolly.R.id.item, 2));
		solo.waitForDialogToOpen(5000);
		// Click su 'Delete'
		solo.clickInList(4, 0);
		solo.waitForDialogToOpen(5000);
		// Click on 'OK'
		solo.clickOnView(solo.getView(android.R.id.button1));

		// Click on Add torna in modalit lista della spesa
		solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.btn_add));
		// Aggiunta di una voce gi presente in lista
		solo.clearEditText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox));
		solo.enterText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox), "Latte blu");
		solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.btn_add));
		// Click su 'Latte blu' per segnarlo come acquistato
		solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.item, 1));

		// Click on Add torna in modalit lista generica
		solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.btn_add));

		// Test dello scrolling della lista
		android.widget.ListView listView0 = (android.widget.ListView) solo.getView(android.widget.ListView.class, 0);
		solo.scrollListToLine(listView0, 0);

		// Esegue checkout
		solo.clickOnActionBarItem(0x3);

		// Esegue reset
		solo.clickOnActionBarItem(0x9);
		// Click su OK
		solo.clickOnView(solo.getView(android.R.id.button1));

		// Click su action bar item Preferences
		solo.clickOnActionBarItem(0x4);
		// Click su 'List mode sort order Order of items on the list when in
		// list mode'
		solo.clickInList(1, 0);
		solo.waitForDialogToOpen(5000);
		// Click su Alphabetical Ascending
		solo.clickOnView(solo.getView(android.R.id.text1));

		solo.clickInList(1, 0);
		solo.waitForDialogToOpen(5000);
		// Click su Alphabetical Descending
		solo.clickOnView(solo.getView(android.R.id.text1, 1));

		solo.clickInList(1, 0);
		solo.waitForDialogToOpen(5000);
		// Click su Modified Ascending
		solo.clickOnView(solo.getView(android.R.id.text1, 2));

		solo.clickInList(1, 0);
		solo.waitForDialogToOpen(5000);
		// Click su Modified Descending
		solo.clickOnView(solo.getView(android.R.id.text1, 3));

		solo.clickInList(1, 0);
		solo.waitForDialogToOpen(5000);
		// Click su Cancel
		solo.clickOnButton("Cancel");

		// Click su 'Shopping mode sort order Order of items on the list when in
		// shopping mode'
		solo.clickInList(2, 0);
		solo.waitForDialogToOpen(5000);
		// Click su Alphabetical Ascending
		solo.clickOnView(solo.getView(android.R.id.text1));

		solo.clickInList(2, 0);
		solo.waitForDialogToOpen(5000);
		// Click su Alphabetical Descending
		solo.clickOnView(solo.getView(android.R.id.text1, 1));
		assertTrue("caldwell.ben.trolly.TrollyPreferences is not found!",
				solo.waitForActivity(caldwell.ben.trolly.TrollyPreferences.class));

		solo.clickInList(2, 0);
		solo.waitForDialogToOpen(5000);
		// Click su Modified Ascending
		solo.clickOnView(solo.getView(android.R.id.text1, 2));
		assertTrue("caldwell.ben.trolly.TrollyPreferences is not found!",
				solo.waitForActivity(caldwell.ben.trolly.TrollyPreferences.class));
		solo.clickInList(2, 0);

		solo.waitForDialogToOpen(5000);
		// Click su Modified Descending
		solo.clickOnView(solo.getView(android.R.id.text1, 3));
		assertTrue("caldwell.ben.trolly.TrollyPreferences is not found!",
				solo.waitForActivity(caldwell.ben.trolly.TrollyPreferences.class));

		solo.clickInList(2, 0);
		solo.waitForDialogToOpen(5000);
		// Click su Cancel
		solo.clickOnView(solo.getView(android.R.id.button2));
		// Pressione tasto disposistivo: menu back
		solo.goBack();

		solo.clearEditText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox));
		solo.enterText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox), "Oggetto1");
		solo.clickOnButton("Add");
		solo.clearEditText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox));
		solo.enterText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox), "Oggetto2");
		solo.clickOnButton("Add");

		// Long click su 'Oggetto2' e lo mette nel carrello
		solo.clickLongOnView(solo.getView(caldwell.ben.trolly.R.id.item, 2));
		solo.waitForDialogToOpen(5000);
		// Click on list
		solo.clickInList(1, 0);

		// Prova eliminazione con annullamento Oggetto2
		solo.clickLongOnView(solo.getView(caldwell.ben.trolly.R.id.item, 2));
		solo.waitForDialogToOpen(5000);
		// Click su 'Delete'
		solo.clickInList(4, 0);
		// Click su 'Cancel'
		solo.clickOnView(solo.getView(android.R.id.button2));

		// prova modifica con annullamento 'Oggetto2'
		solo.clickLongOnView(solo.getView(caldwell.ben.trolly.R.id.item, 2));
		solo.waitForDialogToOpen(5000);
		// Click su 'Edit'
		solo.clickInList(3, 0);
		// Click su 'Cancel'
		solo.clickOnView(solo.getView(android.R.id.button2));

		// checkout
		solo.clickOnActionBarItem(0x3);

		solo.clickLongOnView(solo.getView(caldwell.ben.trolly.R.id.item, 2));
		// Wait for dialog
		solo.waitForDialogToOpen(5000);
		// Click su 'In trolley'
		solo.clickInList(1, 0);

		solo.clearEditText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox));
		solo.enterText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox), "Oggetto2");
		solo.clickOnButton("Add");

		// apre menu per il reset
		solo.clickOnActionBarItem(0x9);
		// Click su 'Cancel' per annullare
		solo.clickOnView(solo.getView(android.R.id.button2));

		// apre menu per checkout
		solo.clickOnActionBarItem(0x3);

		// Click su 'clear'
		solo.clickOnActionBarItem(0xa);
		// Click su 'Cancel'
		solo.clickOnView(solo.getView(android.R.id.button2));

		// Click su 'clear'
		solo.clickOnActionBarItem(0xa);
		// Click su 'OK'
		solo.clickOnView(solo.getView(android.R.id.button1));

		// Click su Add per cambiare modalit
		solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.btn_add));

		// Aggiunge nuovo elemento 'Latte blu'
		solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.textbox));
		// inserisce il testo: 'Latte Blu'
		solo.clearEditText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox));
		solo.enterText((android.widget.EditText) solo.getView(caldwell.ben.trolly.R.id.textbox), "Latte Blu");
		// Click su Add
		solo.clickOnView(solo.getView(caldwell.ben.trolly.R.id.btn_add));

		// Click su menu per il reset
		solo.clickOnActionBarItem(0x9);
		// Click su OK
		solo.clickOnView(solo.getView(android.R.id.button1));
		// Checkout
		solo.clickOnActionBarItem(0x3);

		// Click on action bar item
		solo.clickOnActionBarItem(0x4);
		assertTrue("caldwell.ben.trolly.TrollyPreferences is not found!",
				solo.waitForActivity(caldwell.ben.trolly.TrollyPreferences.class));
		// click su menu back key
		solo.goBack();
		// click su menu back key
		solo.goBack();
		solo.sleep(1000);

		// killing all your Activities manually if it doesn't by itself anyway
		solo.finishOpenedActivities();

		// relaunch your app by calling the same Activity as in the constructor
		// of your ActivityInstrumentationTestCase2
		this.launchActivity("caldwell.ben.trolly", Trolly.class, null);

		solo.sleep(1000);

	}
}
