// Path: app/src/main/java/com/evgenii/aescrypto/Encrypt.java
// public class Encrypt {
// 	private final MainActivityInterface mActivity;
// 	private final JsEncryptorInterface mJsEncryptor;
// 	private final ClipboardInterface mClipboard;
// 	private boolean mJustCopied;
// 
// 	public Encrypt(MainActivityInterface activity, JsEncryptorInterface jsEncryptor,
// 			ClipboardInterface clipboard) {
// 		mActivity = activity;
// 		mJsEncryptor = jsEncryptor;
// 		mClipboard = clipboard;
// 	}
// 
// 	public void encryptAndUpdate() {
// 		if (!isEncryptable())
// 			return;
// 
// 		mActivity.updateBusy(true);
// 		mJsEncryptor.encrypt(mActivity.trimmedMessage(), mActivity.trimmedPassword(),
// 				new JsCallback() {
// 					@Override
// 					public void onResult(final String encryptedMessage) {
// 						storeMessageInClipboard(encryptedMessage);
// 						mActivity.setMessage(encryptedMessage);
// 						mActivity.updateEncryptButtonTitle();
// 						mActivity.updateBusy(false);
// 					}
// 
// 					@Override
// 					public void onError(String errorMessage) {
// 						// Process JavaScript error here.
// 						// This method is called in the UI thread.
// 					}
// 				});
// 	}
// 
// 	public boolean getJustCopied() {
// 		return mJustCopied;
// 	}
// 
// 	public boolean isEncryptable() {
// 		return mActivity.hasMessage() && mActivity.hasPassword() && !mActivity.isBusy();
// 	}
// 
// 	private void storeMessageInClipboard(String message) {
// 		mClipboard.set(message);
// 		updateJustCopied(true);
// 	}
// 
// 	public void updateJustCopied(boolean justCopied) {
// 		mJustCopied = justCopied;
// 	}
// 
// }
// 
// Path: app/src/androidTest/java/com/evgenii/aescrypto/mocks/ClipboardMock.java
// public class ClipboardMock implements ClipboardInterface {
// 	public String mTestClipboardContent;
// 
// 	@Override
// 	public String get() {
// 		return mTestClipboardContent;
// 	}
// 
// 	@Override
// 	public void set(String text) {
// 		mTestClipboardContent = text;
// 	}
// 
// }
// 
// 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.Encrypt;
import com.evgenii.aescrypto.mocks.ClipboardMock;
import com.evgenii.aescrypto.mocks.JsEncryptorMock;
import com.evgenii.aescrypto.mocks.MainActivityMock;
package com.evgenii.aescrypto;



public class EncryptTests extends AndroidTestCase {
	protected Encrypt mEncrypt;
	protected MainActivityMock mMainActivityMock;
	protected JsEncryptorMock mJsEncryptorMock;
	protected ClipboardMock mClipboardMock;

	private void makeEncryptable() {
		mMainActivityMock.mTestHasMessage = true;
		mMainActivityMock.mTestHasPassword = true;
		mMainActivityMock.mTestIsBusy = false;
	}

	@Override
	protected void setUp() throws Exception {
		super.setUp();

		mMainActivityMock = new MainActivityMock();
		mJsEncryptorMock = new JsEncryptorMock();
		mClipboardMock = new ClipboardMock();

		mEncrypt = new Encrypt(mMainActivityMock, mJsEncryptorMock, mClipboardMock);
	}

	public void testEncryptAndUpdate_copiesEncryptedMessageToClipboard() {
// Path: app/src/main/java/com/evgenii/aescrypto/Encrypt.java
// public class Encrypt {
// 	private final MainActivityInterface mActivity;
// 	private final JsEncryptorInterface mJsEncryptor;
// 	private final ClipboardInterface mClipboard;
// 	private boolean mJustCopied;
// 
// 	public Encrypt(MainActivityInterface activity, JsEncryptorInterface jsEncryptor,
// 			ClipboardInterface clipboard) {
// 		mActivity = activity;
// 		mJsEncryptor = jsEncryptor;
// 		mClipboard = clipboard;
// 	}
// 
// 	public void encryptAndUpdate() {
// 		if (!isEncryptable())
// 			return;
// 
// 		mActivity.updateBusy(true);
// 		mJsEncryptor.encrypt(mActivity.trimmedMessage(), mActivity.trimmedPassword(),
// 				new JsCallback() {
// 					@Override
// 					public void onResult(final String encryptedMessage) {
// 						storeMessageInClipboard(encryptedMessage);
// 						mActivity.setMessage(encryptedMessage);
// 						mActivity.updateEncryptButtonTitle();
// 						mActivity.updateBusy(false);
// 					}
// 
// 					@Override
// 					public void onError(String errorMessage) {
// 						// Process JavaScript error here.
// 						// This method is called in the UI thread.
// 					}
// 				});
// 	}
// 
// 	public boolean getJustCopied() {
// 		return mJustCopied;
// 	}
// 
// 	public boolean isEncryptable() {
// 		return mActivity.hasMessage() && mActivity.hasPassword() && !mActivity.isBusy();
// 	}
// 
// 	private void storeMessageInClipboard(String message) {
// 		mClipboard.set(message);
// 		updateJustCopied(true);
// 	}
// 
// 	public void updateJustCopied(boolean justCopied) {
// 		mJustCopied = justCopied;
// 	}
// 
// }
// 
// Path: app/src/androidTest/java/com/evgenii/aescrypto/mocks/ClipboardMock.java
// public class ClipboardMock implements ClipboardInterface {
// 	public String mTestClipboardContent;
// 
// 	@Override
// 	public String get() {
// 		return mTestClipboardContent;
// 	}
// 
// 	@Override
// 	public void set(String text) {
// 		mTestClipboardContent = text;
// 	}
// 
// }
// 
// 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/EncryptTests.java
import android.test.AndroidTestCase;
import com.evgenii.aescrypto.Encrypt;
import com.evgenii.aescrypto.mocks.ClipboardMock;
import com.evgenii.aescrypto.mocks.JsEncryptorMock;
import com.evgenii.aescrypto.mocks.MainActivityMock;

package com.evgenii.aescrypto;



public class EncryptTests extends AndroidTestCase {
	protected Encrypt mEncrypt;
	protected MainActivityMock mMainActivityMock;
	protected JsEncryptorMock mJsEncryptorMock;
	protected ClipboardMock mClipboardMock;

	private void makeEncryptable() {
		mMainActivityMock.mTestHasMessage = true;
		mMainActivityMock.mTestHasPassword = true;
		mMainActivityMock.mTestIsBusy = false;
	}

	@Override
	protected void setUp() throws Exception {
		super.setUp();

		mMainActivityMock = new MainActivityMock();
		mJsEncryptorMock = new JsEncryptorMock();
		mClipboardMock = new ClipboardMock();

		mEncrypt = new Encrypt(mMainActivityMock, mJsEncryptorMock, mClipboardMock);
	}

	public void testEncryptAndUpdate_copiesEncryptedMessageToClipboard() {
		makeEncryptable();