// Path: app/src/main/java/com/evgenii/aescrypto/JsEncryptor.java
// public class JsEncryptor implements JsEncryptorInterface {
// 	public static JsEncryptor evaluateAllScripts(Activity context) {
// 		final AssetsFileReader assetsFileReader = new AssetsFileReader(context);
// 		final JsEvaluator jsEvaluator = new JsEvaluator(context);
// 		final JsEncryptor jsEncryptor = new JsEncryptor(assetsFileReader, jsEvaluator);
// 		try {
// 			jsEncryptor.readScripts();
// 		} catch (final IOException e) {
// 			ShowFatalError.showAlertAndExit(context, "Can not read JavaScript file.", e);
// 		}
// 		return jsEncryptor;
// 	}
// 
// 	private final AssetsFileReaderInterface mAssetsFileReader;
// 	private final JsEvaluatorInterface mJsEvaluator;
// 	private final String cryptoJsFileNames = "crypto_js";
// 	private final String aesCryptoFileName = "aes_crypto";
// 	private final String jsRootDir = "javascript";
// 
// 	private static final String prefix = "AESCryptoV10";
// 
// 	private ArrayList<String> mScriptsText;
// 
// 	public JsEncryptor(AssetsFileReaderInterface assetsFileReader, JsEvaluatorInterface jsEvaluator) {
// 		mAssetsFileReader = assetsFileReader;
// 		mJsEvaluator = jsEvaluator;
// 	}
// 
// 	public String concatenateScripts() {
// 		final StringBuilder stringBuilder = new StringBuilder();
// 		final ArrayList<String> scripts = getScripts();
// 		for (final String scriptText : scripts) {
// 			stringBuilder.append(scriptText);
// 			stringBuilder.append("; ");
// 		}
// 
// 		return stringBuilder.toString();
// 	}
// 
// 	@Override
// 	public void decrypt(String text, String password, JsCallback callback) {
// 		final String libraryJsCode = concatenateScripts();
// 		mJsEvaluator.callFunction(libraryJsCode, callback, "aesCrypto.decrypt", text, password);
// 	}
// 
// 	@Override
// 	public void encrypt(String text, String password, JsCallback callback) {
// 		final String libraryJsCode = concatenateScripts();
// 		mJsEvaluator.callFunction(libraryJsCode, callback, "aesCrypto.encrypt", text, password);
// 	}
// 
// 	public ArrayList<String> getScripts() {
// 		if (mScriptsText == null) {
// 			mScriptsText = new ArrayList<String>();
// 		}
// 		return mScriptsText;
// 	}
// 
// 	@Override
// 	public boolean isEncrypted(String text) {
// 		if (text == null)
// 			return false;
// 
// 		return text.trim().startsWith(prefix);
// 	}
// 
// 	public void readScripts() throws IOException {
// 		final ArrayList<String> scriptsToLoad = new ArrayList<String>();
// 
// 		scriptsToLoad.add(jsRootDir + "/" + cryptoJsFileNames + ".js");
// 		scriptsToLoad.add(jsRootDir + "/" + aesCryptoFileName + ".js");
// 
// 		final ArrayList<String> scriptsText = getScripts();
// 
// 		for (final String scriptName : scriptsToLoad) {
// 			scriptsText.add(mAssetsFileReader.ReadFile(scriptName));
// 		}
// 	}
// }
// 
// Path: app/src/androidTest/java/com/evgenii/aescrypto/mocks/AssetsFileReaderMock.java
// public class AssetsFileReaderMock implements AssetsFileReaderInterface {
// 	@Override
// 	public String ReadFile(String fileName) throws IOException {
// 		return fileName + " script";
// 	}
// 
// }
// 
// Path: app/src/androidTest/java/com/evgenii/aescrypto/mocks/JsEvaluatorMock.java
// public class JsEvaluatorMock implements JsEvaluatorInterface {
// 	public ArrayList<String> mEvaluatedScripts = new ArrayList<String>();
// 	public ArrayList<JsCallback> mEvaluateCallbacks = new ArrayList<JsCallback>();
// 	public Object[] mEvaluateArguments = null;
// 
// 	@Override
// 	public void callFunction(String jsCode, JsCallback callabck, String script,
// 			Object... jsArguments) {
// 		mEvaluateCallbacks.add(callabck);
// 		mEvaluatedScripts.add(script);
// 		mEvaluateArguments = jsArguments;
// 	}
// 
// 	@Override
// 	public void evaluate(String script) {
// 		mEvaluatedScripts.add(script);
// 		mEvaluateCallbacks.add(null);
// 	}
// 
// 	@Override
// 	public void evaluate(String script, JsCallback callback) {
// 		mEvaluatedScripts.add(script);
// 		mEvaluateCallbacks.add(callback);
// 	}
// 
// 	@Override
// 	public void destroy() {
// 
// 	}
// 
// 	@Override
// 	public WebView getWebView() {
// 		return null;
// 	}
// 
// }


import java.io.IOException;
import java.util.ArrayList;
import android.test.AndroidTestCase;
import com.evgenii.aescrypto.JsEncryptor;
import com.evgenii.aescrypto.mocks.AssetsFileReaderMock;
import com.evgenii.aescrypto.mocks.JsEvaluatorMock;
import com.evgenii.jsevaluator.interfaces.JsCallback;
package com.evgenii.aescrypto;




public class JSEncryptorTests extends AndroidTestCase {
	JsEncryptor mJsEncryptor;
	AssetsFileReaderMock mAssetsFileReaderMock;
// Path: app/src/main/java/com/evgenii/aescrypto/JsEncryptor.java
// public class JsEncryptor implements JsEncryptorInterface {
// 	public static JsEncryptor evaluateAllScripts(Activity context) {
// 		final AssetsFileReader assetsFileReader = new AssetsFileReader(context);
// 		final JsEvaluator jsEvaluator = new JsEvaluator(context);
// 		final JsEncryptor jsEncryptor = new JsEncryptor(assetsFileReader, jsEvaluator);
// 		try {
// 			jsEncryptor.readScripts();
// 		} catch (final IOException e) {
// 			ShowFatalError.showAlertAndExit(context, "Can not read JavaScript file.", e);
// 		}
// 		return jsEncryptor;
// 	}
// 
// 	private final AssetsFileReaderInterface mAssetsFileReader;
// 	private final JsEvaluatorInterface mJsEvaluator;
// 	private final String cryptoJsFileNames = "crypto_js";
// 	private final String aesCryptoFileName = "aes_crypto";
// 	private final String jsRootDir = "javascript";
// 
// 	private static final String prefix = "AESCryptoV10";
// 
// 	private ArrayList<String> mScriptsText;
// 
// 	public JsEncryptor(AssetsFileReaderInterface assetsFileReader, JsEvaluatorInterface jsEvaluator) {
// 		mAssetsFileReader = assetsFileReader;
// 		mJsEvaluator = jsEvaluator;
// 	}
// 
// 	public String concatenateScripts() {
// 		final StringBuilder stringBuilder = new StringBuilder();
// 		final ArrayList<String> scripts = getScripts();
// 		for (final String scriptText : scripts) {
// 			stringBuilder.append(scriptText);
// 			stringBuilder.append("; ");
// 		}
// 
// 		return stringBuilder.toString();
// 	}
// 
// 	@Override
// 	public void decrypt(String text, String password, JsCallback callback) {
// 		final String libraryJsCode = concatenateScripts();
// 		mJsEvaluator.callFunction(libraryJsCode, callback, "aesCrypto.decrypt", text, password);
// 	}
// 
// 	@Override
// 	public void encrypt(String text, String password, JsCallback callback) {
// 		final String libraryJsCode = concatenateScripts();
// 		mJsEvaluator.callFunction(libraryJsCode, callback, "aesCrypto.encrypt", text, password);
// 	}
// 
// 	public ArrayList<String> getScripts() {
// 		if (mScriptsText == null) {
// 			mScriptsText = new ArrayList<String>();
// 		}
// 		return mScriptsText;
// 	}
// 
// 	@Override
// 	public boolean isEncrypted(String text) {
// 		if (text == null)
// 			return false;
// 
// 		return text.trim().startsWith(prefix);
// 	}
// 
// 	public void readScripts() throws IOException {
// 		final ArrayList<String> scriptsToLoad = new ArrayList<String>();
// 
// 		scriptsToLoad.add(jsRootDir + "/" + cryptoJsFileNames + ".js");
// 		scriptsToLoad.add(jsRootDir + "/" + aesCryptoFileName + ".js");
// 
// 		final ArrayList<String> scriptsText = getScripts();
// 
// 		for (final String scriptName : scriptsToLoad) {
// 			scriptsText.add(mAssetsFileReader.ReadFile(scriptName));
// 		}
// 	}
// }
// 
// Path: app/src/androidTest/java/com/evgenii/aescrypto/mocks/AssetsFileReaderMock.java
// public class AssetsFileReaderMock implements AssetsFileReaderInterface {
// 	@Override
// 	public String ReadFile(String fileName) throws IOException {
// 		return fileName + " script";
// 	}
// 
// }
// 
// Path: app/src/androidTest/java/com/evgenii/aescrypto/mocks/JsEvaluatorMock.java
// public class JsEvaluatorMock implements JsEvaluatorInterface {
// 	public ArrayList<String> mEvaluatedScripts = new ArrayList<String>();
// 	public ArrayList<JsCallback> mEvaluateCallbacks = new ArrayList<JsCallback>();
// 	public Object[] mEvaluateArguments = null;
// 
// 	@Override
// 	public void callFunction(String jsCode, JsCallback callabck, String script,
// 			Object... jsArguments) {
// 		mEvaluateCallbacks.add(callabck);
// 		mEvaluatedScripts.add(script);
// 		mEvaluateArguments = jsArguments;
// 	}
// 
// 	@Override
// 	public void evaluate(String script) {
// 		mEvaluatedScripts.add(script);
// 		mEvaluateCallbacks.add(null);
// 	}
// 
// 	@Override
// 	public void evaluate(String script, JsCallback callback) {
// 		mEvaluatedScripts.add(script);
// 		mEvaluateCallbacks.add(callback);
// 	}
// 
// 	@Override
// 	public void destroy() {
// 
// 	}
// 
// 	@Override
// 	public WebView getWebView() {
// 		return null;
// 	}
// 
// }


// Path: app/src/androidTest/java/com/evgenii/aescrypto/JSEncryptorTests.java
import java.io.IOException;
import java.util.ArrayList;
import android.test.AndroidTestCase;
import com.evgenii.aescrypto.JsEncryptor;
import com.evgenii.aescrypto.mocks.AssetsFileReaderMock;
import com.evgenii.aescrypto.mocks.JsEvaluatorMock;
import com.evgenii.jsevaluator.interfaces.JsCallback;

package com.evgenii.aescrypto;




public class JSEncryptorTests extends AndroidTestCase {
	JsEncryptor mJsEncryptor;
	AssetsFileReaderMock mAssetsFileReaderMock;
	JsEvaluatorMock mJsEvaluatorMock;