// Path: app/src/main/java/com/evgenii/aescrypto/Decrypt.java
// public class Decrypt {
// 	private final MainActivityInterface mActivity;
// 	private final JsEncryptorInterface mJsEncryptor;
// 
// 	public Decrypt(MainActivityInterface activity, JsEncryptorInterface jsEncryptor) {
// 		mActivity = activity;
// 		mJsEncryptor = jsEncryptor;
// 	}
// 
// 	public void decryptAndUpdate() {
// 		if (!isDecryptable())
// 			return;
// 
// 		mActivity.updateBusy(true);
// 		mJsEncryptor.decrypt(mActivity.trimmedMessage(), mActivity.trimmedPassword(),
// 				new JsCallback() {
// 					@Override
// 					public void onResult(final String decryptedTextFromJs) {
// 						mActivity.updateBusy(false);
// 
// 						if (decryptedTextFromJs != null && !decryptedTextFromJs.trim().isEmpty()) {
// 							mActivity.setMessage(decryptedTextFromJs);
// 						}
// 					}
// 
// 					@Override
// 					public void onError(String errorMessage) {
// 						// Process JavaScript error here.
// 						// This method is called in the UI thread.
// 					}
// 				});
// 	}
// 
// 	public boolean isDecryptable() {
// 		if (mActivity.isBusy())
// 			return false;
// 
// 		if (!mActivity.hasPassword())
// 			return false;
// 
// 		if (!mJsEncryptor.isEncrypted(mActivity.trimmedMessage()))
// 			return false;
// 
// 		return true;
// 	}
// }
// 
// Path: app/src/androidTest/java/com/evgenii/aescrypto/mocks/JsEncryptorMock.java
// public class JsEncryptorMock implements JsEncryptorInterface {
// 	public boolean mTestIsEcrypted;
// 
// 	public String mTestDecryptText;
// 	public String mTestDecryptPassword;
// 	public JsCallback mTestDecryptCallback;
// 
// 	public String mTestEncryptText;
// 	public String mTestEncryptPassword;
// 	public JsCallback mTestEncryptCallback;
// 
// 	@Override
// 	public void decrypt(String text, String password, JsCallback callback) {
// 		mTestDecryptText = text;
// 		mTestDecryptPassword = password;
// 		mTestDecryptCallback = callback;
// 	}
// 
// 	@Override
// 	public void encrypt(String text, String password, JsCallback callback) {
// 		mTestEncryptText = text;
// 		mTestEncryptPassword = password;
// 		mTestEncryptCallback = callback;
// 	}
// 
// 	@Override
// 	public boolean isEncrypted(String text) {
// 		return mTestIsEcrypted;
// 	}
// 
// }
// 
// Path: app/src/androidTest/java/com/evgenii/aescrypto/mocks/MainActivityMock.java
// public class MainActivityMock implements MainActivityInterface {
// 	public boolean mTestIsBusy;
// 	public String mTestTrimmedMessage;
// 	public String mTestTrimmedPassword;
// 	public String mTestMessage;
// 	public boolean mEncryptButtonTitleUpdated;
// 	public boolean mTestHasMessage;
// 	public boolean mTestHasPassword;
// 
// 	@Override
// 	public boolean hasMessage() {
// 		return mTestHasMessage;
// 	}
// 
// 	@Override
// 	public boolean hasPassword() {
// 		return mTestHasPassword;
// 	}
// 
// 	@Override
// 	public boolean isBusy() {
// 		return mTestIsBusy;
// 	}
// 
// 	@Override
// 	public void setMessage(String message) {
// 		mTestMessage = message;
// 	}
// 
// 	@Override
// 	public String trimmedMessage() {
// 		return mTestTrimmedMessage;
// 	}
// 
// 	@Override
// 	public String trimmedPassword() {
// 		return mTestTrimmedPassword;
// 	}
// 
// 	@Override
// 	public void updateBusy(boolean isBusy) {
// 		// TODO Auto-generated method stub
// 
// 	}
// 
// 	@Override
// 	public void updateEncryptButtonTitle() {
// 		mEncryptButtonTitleUpdated = true;
// 	}
// }


import android.test.AndroidTestCase;
import com.evgenii.aescrypto.Decrypt;
import com.evgenii.aescrypto.mocks.JsEncryptorMock;
import com.evgenii.aescrypto.mocks.MainActivityMock;
package com.evgenii.aescrypto;



public class DecryptTests extends AndroidTestCase {
	protected Decrypt mDecrypt;
// Path: app/src/main/java/com/evgenii/aescrypto/Decrypt.java
// public class Decrypt {
// 	private final MainActivityInterface mActivity;
// 	private final JsEncryptorInterface mJsEncryptor;
// 
// 	public Decrypt(MainActivityInterface activity, JsEncryptorInterface jsEncryptor) {
// 		mActivity = activity;
// 		mJsEncryptor = jsEncryptor;
// 	}
// 
// 	public void decryptAndUpdate() {
// 		if (!isDecryptable())
// 			return;
// 
// 		mActivity.updateBusy(true);
// 		mJsEncryptor.decrypt(mActivity.trimmedMessage(), mActivity.trimmedPassword(),
// 				new JsCallback() {
// 					@Override
// 					public void onResult(final String decryptedTextFromJs) {
// 						mActivity.updateBusy(false);
// 
// 						if (decryptedTextFromJs != null && !decryptedTextFromJs.trim().isEmpty()) {
// 							mActivity.setMessage(decryptedTextFromJs);
// 						}
// 					}
// 
// 					@Override
// 					public void onError(String errorMessage) {
// 						// Process JavaScript error here.
// 						// This method is called in the UI thread.
// 					}
// 				});
// 	}
// 
// 	public boolean isDecryptable() {
// 		if (mActivity.isBusy())
// 			return false;
// 
// 		if (!mActivity.hasPassword())
// 			return false;
// 
// 		if (!mJsEncryptor.isEncrypted(mActivity.trimmedMessage()))
// 			return false;
// 
// 		return true;
// 	}
// }
// 
// Path: app/src/androidTest/java/com/evgenii/aescrypto/mocks/JsEncryptorMock.java
// public class JsEncryptorMock implements JsEncryptorInterface {
// 	public boolean mTestIsEcrypted;
// 
// 	public String mTestDecryptText;
// 	public String mTestDecryptPassword;
// 	public JsCallback mTestDecryptCallback;
// 
// 	public String mTestEncryptText;
// 	public String mTestEncryptPassword;
// 	public JsCallback mTestEncryptCallback;
// 
// 	@Override
// 	public void decrypt(String text, String password, JsCallback callback) {
// 		mTestDecryptText = text;
// 		mTestDecryptPassword = password;
// 		mTestDecryptCallback = callback;
// 	}
// 
// 	@Override
// 	public void encrypt(String text, String password, JsCallback callback) {
// 		mTestEncryptText = text;
// 		mTestEncryptPassword = password;
// 		mTestEncryptCallback = callback;
// 	}
// 
// 	@Override
// 	public boolean isEncrypted(String text) {
// 		return mTestIsEcrypted;
// 	}
// 
// }
// 
// Path: app/src/androidTest/java/com/evgenii/aescrypto/mocks/MainActivityMock.java
// public class MainActivityMock implements MainActivityInterface {
// 	public boolean mTestIsBusy;
// 	public String mTestTrimmedMessage;
// 	public String mTestTrimmedPassword;
// 	public String mTestMessage;
// 	public boolean mEncryptButtonTitleUpdated;
// 	public boolean mTestHasMessage;
// 	public boolean mTestHasPassword;
// 
// 	@Override
// 	public boolean hasMessage() {
// 		return mTestHasMessage;
// 	}
// 
// 	@Override
// 	public boolean hasPassword() {
// 		return mTestHasPassword;
// 	}
// 
// 	@Override
// 	public boolean isBusy() {
// 		return mTestIsBusy;
// 	}
// 
// 	@Override
// 	public void setMessage(String message) {
// 		mTestMessage = message;
// 	}
// 
// 	@Override
// 	public String trimmedMessage() {
// 		return mTestTrimmedMessage;
// 	}
// 
// 	@Override
// 	public String trimmedPassword() {
// 		return mTestTrimmedPassword;
// 	}
// 
// 	@Override
// 	public void updateBusy(boolean isBusy) {
// 		// TODO Auto-generated method stub
// 
// 	}
// 
// 	@Override
// 	public void updateEncryptButtonTitle() {
// 		mEncryptButtonTitleUpdated = true;
// 	}
// }


// Path: app/src/androidTest/java/com/evgenii/aescrypto/DecryptTests.java
import android.test.AndroidTestCase;
import com.evgenii.aescrypto.Decrypt;
import com.evgenii.aescrypto.mocks.JsEncryptorMock;
import com.evgenii.aescrypto.mocks.MainActivityMock;

package com.evgenii.aescrypto;



public class DecryptTests extends AndroidTestCase {
	protected Decrypt mDecrypt;
	protected MainActivityMock mMainActivityMock;