package com.iwebpp.nodeandroid;
import com.iwebpp.crypto.tests.NaclCertTest;
import com.iwebpp.crypto.tests.TweetNaclFastTest;
import com.iwebpp.middleware.test.ConnectTest;
import com.iwebpp.node.api.tests.SimpleApiTest;
import com.iwebpp.node.js.rhino.Host;
import com.iwebpp.node.js.tests.RhinoTest;
import com.iwebpp.node.tests.DnsTest;
import com.iwebpp.node.tests.EE2Test;
import com.iwebpp.node.tests.EventHandlerTest;
import com.iwebpp.node.tests.HttpParserTest;
import com.iwebpp.node.tests.HttpTest;
import com.iwebpp.node.tests.HttppTest;
import com.iwebpp.node.tests.StreamTest;
import com.iwebpp.node.tests.TcpTest;
import com.iwebpp.node.tests.UdtTest;
import com.iwebpp.node.tests.UrlTest;
import com.iwebpp.wspp.tests.SecureWebSocketServerTest;
import com.iwebpp.wspp.tests.WebSocketServerTest;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
public class MainActivity extends ActionBarActivity {
private EditText editText;
final private static String TAG = "MainActivity";
private MenuItem runScriptMenuItem;
@Override
protected void onCreate(Bundle savedInstanceState) {
// prevent getActionBar() == null
// if (android.os.Build.VERSION.SDK_INT > 11) {
// requestWindowFeature(Window.FEATURE_ACTION_BAR);
// requestWindowFeature(Window.FEATURE_NO_TITLE);
// }
super.onCreate(savedInstanceState);
Toaster.init(this);
setContentView(R.layout.activity_main);
// if (android.os.Build.VERSION.SDK_INT <= 11) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// }else
// {
// getActionBar().setDisplayHomeAsUpEnabled(true); // still nullptr, dammit. // FIXME
// }
String js = getIntent().getStringExtra("js");
editText = (EditText) findViewById(R.id.textView);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (runScriptMenuItem != null)
{
runScriptMenuItem.setEnabled(!TextUtils.isEmpty(editText.getText().toString()));
}
}
});
if (!TextUtils.isEmpty(js)) {
// TODO highlight javascript code
editText.setText(js);
}
}
/**
*
* TODO refactor tests to unit tests
*
*/
@Deprecated
private void runHardCodedTests()
{
// UVPP Unit tests
/*new VersionTest().start();
new CWDTest().start();
new TCPHandleTest().start();
new UDTHandleTest().start();
new UDPHandleTest().start();
new LoopHandleTest().start();
new IdleHandleTest().start();
new TimerHandleTest().start();
new AsyncHandleTest().start();
*/
///new PipeHandleTest().start();
///new ProcessHandleTest().start();
///new TCPHandleTest().start();
///new FileEventHandleTest().start();
// Node Unit tests
// new EE2Test().start();
// new StreamTest().start();
// new TcpTest().start();
// new UdtTest().start();
// new HttpParserTest().start();
// new DnsTest().start();
// new HttpTest().start();
// new HttppTest().start();
// new UrlTest().start();
///new WebSocketTest().start();
// new WebSocketServerTest().start();
// Connect middleware tests
// new ConnectTest().start();
// JS engine tests
// new RhinoTest().start();
// NodeApi tests
// new EventHandlerTest().start();
// new SimpleApiTest().start();
// Crypto tests
///new TweetNaclTest().start();
// new TweetNaclFastTest().start();
// new NaclCertTest().start();
// SecureWebSocket tests
// new SecureWebSocketServerTest().start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
runScriptMenuItem = menu.findItem(R.id.run_script);
runScriptMenuItem.setEnabled(!TextUtils.isEmpty(editText.getText().toString()));
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId())
{
case R.id.run_script:
if (editText != null)
{
runScript(editText.getText().toString());
}
default: return super.onOptionsItemSelected(item);
}
}
private void runScript(final String js) {
new Thread(new Runnable() {
public void run() {
Log.d(TAG, "start test");
Host host = new Host() {
@Override
public String content() {
return js;
}
};
// This hides all the defects and problems during Runtime
// but it also gives false positives for the unit tests
try {
host.execute();
} catch (Exception e) {
e.printStackTrace();
}
Log.d(TAG, "exit test");
}
}).start();
}
}