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