diff options
Diffstat (limited to 'tests/src/com/cyanogenmod/filemanager/commands/shell/WriteCommandTest.java')
| -rw-r--r-- | tests/src/com/cyanogenmod/filemanager/commands/shell/WriteCommandTest.java | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/tests/src/com/cyanogenmod/filemanager/commands/shell/WriteCommandTest.java b/tests/src/com/cyanogenmod/filemanager/commands/shell/WriteCommandTest.java new file mode 100644 index 0000000..2e14a99 --- /dev/null +++ b/tests/src/com/cyanogenmod/filemanager/commands/shell/WriteCommandTest.java @@ -0,0 +1,122 @@ +/* + * Copyright (C) 2012 The CyanogenMod Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.cyanogenmod.filemanager.commands.shell; + +import java.io.OutputStream; +import java.util.Random; + +import android.os.Environment; +import android.test.suitebuilder.annotation.LargeTest; +import android.test.suitebuilder.annotation.SmallTest; + +import com.cyanogenmod.filemanager.commands.AsyncResultListener; +import com.cyanogenmod.filemanager.commands.WriteExecutable; +import com.cyanogenmod.filemanager.util.CommandHelper; + +/** + * A class for testing write command. + * + * @see WriteCommand + */ +public class WriteCommandTest extends AbstractConsoleTest { + + private static final String WRITE_FILE_SMALL = + Environment.getDataDirectory().getAbsolutePath() + "/write-test-s.txt"; //$NON-NLS-1$ + private static final String WRITE_FILE_LARGE = + Environment.getDataDirectory().getAbsolutePath() + "/write-test-l.txt"; //$NON-NLS-1$ + private static final byte[] TEST_DATA = new byte[]{(byte)33, (byte)36, '\n'}; + + private static final int DATA_SIZE = 4096; + + /** + * {@inheritDoc} + */ + @Override + public boolean isRootConsoleNeeded() { + return true; + } + + /** + * Method that performs a small write test. + * + * @throws Exception If an exception occurs while executing the test + */ + @SmallTest + public void testSmallWriteWithPartialResult() throws Exception { + try { + WriteExecutable cmd = + CommandHelper.write(getContext(), + WRITE_FILE_SMALL, new AsyncResultListener() { + public void onAsyncStart() {/**NON BLOCK**/} + public void onAsyncEnd(boolean cancelled) {/**NON BLOCK**/} + public void onAsyncExitCode(int exitCode) {/**NON BLOCK**/} + public void onException(Exception cause) { + fail(String.valueOf(cause)); + } + public void onPartialResult(Object results) {/**NON BLOCK**/} + }, getConsole()); + OutputStream os = cmd.createOutputStream(); + os.write(TEST_DATA, 0, TEST_DATA.length); + cmd.end(); + + // Wait for allow close all instrumentation data + Thread.sleep(2500L); + } finally { + try { + CommandHelper.deleteFile(getContext(), WRITE_FILE_SMALL, getConsole()); + } catch (Exception e) {/**NON BLOCK**/} + } + } + + /** + * Method that performs a large write test. + * + * @throws Exception If an exception occurs while executing the test + */ + @LargeTest + public void testLargeWriteWithPartialResult() throws Exception { + try { + WriteExecutable cmd = + CommandHelper.write(getContext(), + WRITE_FILE_LARGE, new AsyncResultListener() { + public void onAsyncStart() {/**NON BLOCK**/} + public void onAsyncEnd(boolean cancelled) {/**NON BLOCK**/} + public void onAsyncExitCode(int exitCode) {/**NON BLOCK**/} + public void onException(Exception cause) { + fail(String.valueOf(cause)); + } + public void onPartialResult(Object results) {/**NON BLOCK**/} + }, getConsole()); + OutputStream os = cmd.createOutputStream(); + Random random = new Random(); + for (int i = 0; i < 50; i++) { + byte[] data = new byte[DATA_SIZE]; + random.nextBytes(data); + os.write(data, 0, data.length); + } + cmd.end(); + + // Wait for allow close all instrumentation data + Thread.sleep(2500L); + } finally { + try { + CommandHelper.deleteFile(getContext(), WRITE_FILE_LARGE, getConsole()); + } catch (Exception e) {/**NON BLOCK**/} + } + } + +} |
