package com.reactivecascade.systemtest; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.ListView; import com.reactivecascade.Async; import com.reactivecascade.AsyncBuilder; import com.reactivecascade.reactive.ReactiveValue; import com.reactivecascade.reactive.ui.AltArrayAdapter; import com.reactivecascade.reactive.ui.ReactiveTextView; import java.util.ArrayList; import static com.reactivecascade.Async.*; public class MainActivity extends Activity { private static Async async; private static ReactiveValue<String> progress; private static ReactiveValue<String> result; private SystemTestRunner systemTestRunner; private static AltArrayAdapter<String> systemTestResultsListAdapter; private final static ArrayList<String> testResultModel = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (async == null) { async = new AsyncBuilder(this) .setFailFast(false) .build(); // Fail fast on first exception is a bad idea when running tests which intentionally throw exceptions } setContentView(R.layout.activity_main); if (systemTestRunner == null) { systemTestRunner = new SystemTestRunner(); progress = new ReactiveValue<>("MainActivity Progress", "Progress.."); result = new ReactiveValue<>("MainActivity Result", "Result.."); systemTestResultsListAdapter = new AltArrayAdapter<>(this, R.layout.list_item_layout, R.id.list_item, testResultModel); } ((ListView) findViewById(R.id.test_results_list)).setAdapter(systemTestResultsListAdapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @Override protected void onStart() { final ArrayList<Class> classes = new ArrayList<>(); // classes.add(UIThreadTypeTest.class); classes.add(WorkerThreadTypeTest.class); // classes.add(SerialWorkerThreadTypeTest.class); // classes.add(TwoThreadThreadTypeTest.class); // classes.add(FixedThreadPoolTwoThreadThreadTypeTest.class); // classes.add(InOrderThreadTypeTest.class); // systemTestRunner.start(classes, systemTestResultsListAdapter, progress, result); systemTestRunner.start( classes, systemTestResultsListAdapter, ((ReactiveTextView) findViewById(R.id.test_progress_textview)).getReactiveValue(), ((ReactiveTextView) findViewById(R.id.test_result_textview)).getReactiveValue()); // progress.subscribe(((ReactiveTextView) findViewById(R.id.test_progress_textview)).getReactiveValue()); // result.subscribe(((ReactiveTextView) findViewById(R.id.test_result_textview)).getReactiveValue()); super.onStart(); } }