13778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera/* 23778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera * Copyright (C) 2017 The Android Open Source Project 33778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera * 43778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera * Licensed under the Apache License, Version 2.0 (the "License"); 53778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera * you may not use this file except in compliance with the License. 63778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera * You may obtain a copy of the License at 73778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera * 83778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera * http://www.apache.org/licenses/LICENSE-2.0 93778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera * 103778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera * Unless required by applicable law or agreed to in writing, software 113778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera * distributed under the License is distributed on an "AS IS" BASIS, 123778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera * See the License for the specific language governing permissions and 143778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera * limitations under the License 153778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera */ 163778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 173778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmerapackage libcore.java.nio.file; 183778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 193778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmeraimport junit.framework.TestCase; 203778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 213778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmeraimport java.io.IOException; 223778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmeraimport java.nio.file.FileVisitResult; 233778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmeraimport java.nio.file.Path; 243778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmeraimport java.nio.file.SimpleFileVisitor; 253778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmeraimport java.nio.file.attribute.BasicFileAttributes; 263778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 273778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmeraimport static org.mockito.Mockito.mock; 283778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 293778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmerapublic class SimpleFileVisitorTest extends TestCase { 303778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 313778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera public void test_preVisitDirectory() throws IOException { 323778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera Path stubPath = mock(Path.class); 333778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera BasicFileAttributes stubAttributes = mock(BasicFileAttributes.class); 343778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera SimpleFileVisitor<Path> fileVisitor = new TestSimpleFileVisitor(); 353778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 363778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera assertEquals(FileVisitResult.CONTINUE, fileVisitor.preVisitDirectory(stubPath, 373778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera stubAttributes)); 383778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 393778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera try { 403778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera fileVisitor.preVisitDirectory(null, stubAttributes); 413778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera fail(); 423778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera } catch (NullPointerException expected) {} 433778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 443778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera try { 453778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera fileVisitor.preVisitDirectory(stubPath, null); 463778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera fail(); 473778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera } catch (NullPointerException expected) {} 483778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera } 493778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 503778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera public void test_postVisitDirectory() throws IOException { 513778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera Path stubPath = mock(Path.class); 523778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera IOException ioException = new IOException(); 533778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera SimpleFileVisitor<Path> fileVisitor = new TestSimpleFileVisitor(); 543778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 553778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera assertEquals(FileVisitResult.CONTINUE, fileVisitor.postVisitDirectory(stubPath, null)); 563778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 573778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera try { 583778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera fileVisitor.postVisitDirectory(null, ioException); 593778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera fail(); 603778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera } catch (NullPointerException expected) {} 613778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 623778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera try { 633778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera fileVisitor.postVisitDirectory(stubPath, ioException); 643778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera fail(); 653778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera } catch (IOException actual) { 663778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera assertSame(ioException, actual); 673778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera } 683778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera } 693778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 703778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera public void test_visitFile() throws IOException { 713778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera Path stubPath = mock(Path.class); 723778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera BasicFileAttributes stubAttributes = mock(BasicFileAttributes.class); 733778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera SimpleFileVisitor<Path> fileVisitor = new TestSimpleFileVisitor(); 743778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 753778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera assertEquals(FileVisitResult.CONTINUE, fileVisitor.visitFile(stubPath, stubAttributes)); 763778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 773778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera try { 783778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera fileVisitor.visitFile(null, stubAttributes); 793778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera fail(); 803778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera } catch (NullPointerException expected) {} 813778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 823778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera try { 833778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera fileVisitor.visitFile(stubPath, null); 843778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera fail(); 853778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera } catch (NullPointerException expected) {} 863778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera } 873778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 883778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera public void test_visitFileFailed() throws IOException { 893778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera Path stubPath = mock(Path.class); 903778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera IOException ioException = new IOException(); 913778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera SimpleFileVisitor<Path> fileVisitor = new TestSimpleFileVisitor(); 923778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 933778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera try { 943778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera assertEquals(FileVisitResult.CONTINUE, fileVisitor.visitFileFailed(stubPath, null)); 953778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera fail(); 963778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera } catch (NullPointerException expected) { 973778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera } 983778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 993778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera try { 1003778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera assertEquals(FileVisitResult.CONTINUE, fileVisitor.visitFileFailed(null, 1013778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera ioException)); 1023778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera fail(); 1033778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera } catch (NullPointerException expected) { 1043778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera } 1053778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 1063778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera try { 1073778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera assertEquals(FileVisitResult.CONTINUE, fileVisitor.visitFileFailed(stubPath, 1083778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera ioException)); 1093778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera fail(); 1103778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera } catch (IOException actual) { 1113778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera assertSame(ioException, actual); 1123778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera } 1133778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera } 1143778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera 1153778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera /** 1163778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera * SimpleFileVisitor only has a protected constructor so we use a basic subclass for tests. 1173778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera */ 1183778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera private static class TestSimpleFileVisitor extends SimpleFileVisitor<Path> { 1193778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera } 1203778fb61f868dced21700cf4ac2d3f92946b73abShubham Ajmera} 121