• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2015 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.documentsui.services;
18 
19 import static com.android.documentsui.services.FileOperationService.OPERATION_MOVE;
20 import static com.google.common.collect.Lists.newArrayList;
21 
22 import android.net.Uri;
23 import android.provider.DocumentsContract.Document;
24 import android.support.test.filters.MediumTest;
25 
26 @MediumTest
27 public class MoveJobTest extends AbstractCopyJobTest<MoveJob> {
28 
MoveJobTest()29     public MoveJobTest() {
30         super(OPERATION_MOVE);
31     }
32 
testMoveFiles()33     public void testMoveFiles() throws Exception {
34         runCopyFilesTest();
35 
36         mDocs.assertChildCount(mSrcRoot, 0);
37     }
38 
testMoveFiles_NoSrcParent()39     public void testMoveFiles_NoSrcParent() throws Exception {
40         Uri testFile1 = mDocs.createDocument(mSrcRoot, "text/plain", "test1.txt");
41         mDocs.writeDocument(testFile1, HAM_BYTES);
42 
43         Uri testFile2 = mDocs.createDocument(mSrcRoot, "text/plain", "test2.txt");
44         mDocs.writeDocument(testFile2, FRUITY_BYTES);
45 
46         createJob(newArrayList(testFile1, testFile2), null).run();
47         waitForJobFinished();
48 
49         mDocs.assertChildCount(mDestRoot, 2);
50         mDocs.assertHasFile(mDestRoot, "test1.txt");
51         mDocs.assertHasFile(mDestRoot, "test2.txt");
52         mDocs.assertFileContents(mDestRoot.documentId, "test1.txt", HAM_BYTES);
53         mDocs.assertFileContents(mDestRoot.documentId, "test2.txt", FRUITY_BYTES);
54     }
55 
testMoveVirtualTypedFile()56     public void testMoveVirtualTypedFile() throws Exception {
57         mDocs.createFolder(mSrcRoot, "hello");
58         Uri testFile = mDocs.createVirtualFile(
59                 mSrcRoot, "/hello/virtual.sth", "virtual/mime-type",
60                 FRUITY_BYTES, "application/pdf", "text/html");
61         createJob(newArrayList(testFile)).run();
62 
63         waitForJobFinished();
64 
65         // Should have failed, source not deleted. Moving by bytes for virtual files
66         // is not supported.
67         mDocs.assertChildCount(mDestRoot, 0);
68         mDocs.assertChildCount(mSrcRoot, 1);
69     }
70 
testMoveVirtualNonTypedFile()71     public void testMoveVirtualNonTypedFile() throws Exception {
72         runCopyVirtualNonTypedFileTest();
73 
74         // Should have failed, source not deleted.
75         mDocs.assertChildCount(mSrcRoot, 1);
76     }
77 
testMove_BackendSideVirtualTypedFile_Fallback()78     public void testMove_BackendSideVirtualTypedFile_Fallback() throws Exception {
79         Uri testFile = mDocs.createDocumentWithFlags(
80                 mSrcRoot.documentId, "virtual/mime-type", "tokyo.sth",
81                 Document.FLAG_VIRTUAL_DOCUMENT | Document.FLAG_SUPPORTS_COPY
82                         | Document.FLAG_SUPPORTS_MOVE, "application/pdf");
83 
84         createJob(newArrayList(testFile)).run();
85         waitForJobFinished();
86 
87         // Should have failed, source not deleted. Moving by bytes for virtual files
88         // is not supported.
89         mDocs.assertChildCount(mDestRoot, 0);
90         mDocs.assertChildCount(mSrcRoot, 1);
91     }
92 
testMoveEmptyDir()93     public void testMoveEmptyDir() throws Exception {
94         runCopyEmptyDirTest();
95 
96         mDocs.assertChildCount(mSrcRoot, 0);
97     }
98 
testMoveDirRecursively()99     public void testMoveDirRecursively() throws Exception {
100         runCopyDirRecursivelyTest();
101 
102         mDocs.assertChildCount(mSrcRoot, 0);
103     }
104 
testMoveDirRecursively_loadingInFirstCursor()105     public void testMoveDirRecursively_loadingInFirstCursor() throws Exception {
106         mDocs.setLoadingDuration(500);
107         testMoveDirRecursively();
108     }
109 
testNoMoveDirToSelf()110     public void testNoMoveDirToSelf() throws Exception {
111         runNoCopyDirToSelfTest();
112 
113         // should have failed, source not deleted
114         mDocs.assertChildCount(mSrcRoot, 1);
115     }
116 
testNoMoveDirToDescendent()117     public void testNoMoveDirToDescendent() throws Exception {
118         runNoCopyDirToDescendentTest();
119 
120         // should have failed, source not deleted
121         mDocs.assertChildCount(mSrcRoot, 1);
122     }
123 
testMoveFileWithReadErrors()124     public void testMoveFileWithReadErrors() throws Exception {
125         runCopyFileWithReadErrorsTest();
126 
127         // should have failed, source not deleted
128         mDocs.assertChildCount(mSrcRoot, 1);
129     }
130 
131     // TODO: Add test cases for moving when multi-parented.
132 }
133