[ONOS-3906],[ONOS-3910] Implementation of YANG module and leaf/leaf-list translator.

Change-Id: If1a8a991ffafa14b51211f97c435176ee1bf856f
diff --git a/utils/yangutils/src/test/java/org/onosproject/yangutils/utils/io/impl/YangFileScannerTest.java b/utils/yangutils/src/test/java/org/onosproject/yangutils/utils/io/impl/YangFileScannerTest.java
new file mode 100644
index 0000000..6ead5e3
--- /dev/null
+++ b/utils/yangutils/src/test/java/org/onosproject/yangutils/utils/io/impl/YangFileScannerTest.java
@@ -0,0 +1,222 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * 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 org.onosproject.yangutils.utils.io.impl;
+
+import java.io.IOException;
+
+import org.junit.Test;
+import java.io.File;
+import java.util.List;
+import org.slf4j.Logger;
+import static org.slf4j.LoggerFactory.getLogger;
+
+/**
+ * Unit tests for searching yang files.
+ */
+public class YangFileScannerTest {
+
+    private final Logger log = getLogger(getClass());
+
+    private static final String BASEDIR = "target/UnitTestCase";
+
+    /**
+     * Checks an empty directory.
+     */
+    @Test
+    public void testWithSingleEmptyDirectoryInRoot() {
+        try {
+            File dir = new File(BASEDIR);
+            dir.mkdirs();
+            List<String> list = YangFileScanner.getYangFiles(BASEDIR.toString());
+        } catch (IOException e) {
+            log.info("IO Exception throwed");
+        }
+    }
+
+    /**
+     * Checks multiple empty directories in root directory.
+     */
+    @Test
+    public void testWithMultiEmptyDirectoriesInRoot() {
+        try {
+            String dir = "emptyDir";
+            String dir1 = "emptyDir1";
+            String dir2 = "emptyDir2";
+            String dir3 = "emptyDir3";
+            String dir4 = "emptyDir4";
+            File firstpath = createDirectory(dir);
+            File firstpath1 = createDirectory(dir1);
+            File firstpath2 = createDirectory(dir2);
+            File firstpath3 = createDirectory(dir3);
+            File firstpath4 = createDirectory(dir4);
+            List<String> list = YangFileScanner.getYangFiles(BASEDIR.toString());
+        } catch (IOException e) {
+            log.info("IO Exception throwed");
+        }
+    }
+
+    /**
+     * Checks one directory with one .yang file.
+     */
+    @Test
+    public void testWithSingleDirectorySingleFileInRoot() {
+        try {
+            String dir1 = "level1";
+            String firstFileName1 = "secondFile.yang";
+            File firstpath1 = createDirectory(dir1);
+            createFile(firstpath1, firstFileName1);
+            List<String> list = YangFileScanner.getYangFiles(BASEDIR.toString());
+        } catch (IOException e) {
+            log.info("IO Exception throwed");
+        }
+    }
+
+    /**
+     * Checks one directory with many .yang file.
+     */
+    @Test
+    public void testWithSingleDirectoryMultiFilesInRoot() {
+        try {
+            String dir2 = "level2";
+            String firstFileName2 = "thirdFile.yang";
+            String firstFileName3 = "fourthFile.yang";
+            String firstFileName4 = "fifthFile.yang";
+            String firstFileName5 = "sixthFile.yang";
+            File firstpath2 = createDirectory(dir2);
+            createFile(firstpath2, firstFileName2);
+            createFile(firstpath2, firstFileName3);
+            createFile(firstpath2, firstFileName4);
+            createFile(firstpath2, firstFileName5);
+            List<String> list = YangFileScanner.getYangFiles(BASEDIR.toString());
+        } catch (IOException e) {
+            log.info("IO Exception throwed");
+        }
+    }
+
+    /**
+     * Checks multi directories with many .yang file.
+     */
+    @Test
+    public void testWithMultiDirectoriesMultiFiles() {
+        try {
+            String dir2 = "newDir1/newDir2/newDir3/newDir4";
+            File dir3 = new File("target/UnitTestCase/newDir1");
+            File dir4 = new File("target/UnitTestCase/newDir1/newDir2");
+            File dir5 = new File("target/UnitTestCase/newDir1/newDir2/newDir3");
+            File dir6 = new File("target/UnitTestCase/newDir1/newDir2/newDir3/newDir4");
+            String firstFileName2 = "thirdFile.yang";
+            String firstFileName3 = "fourthFile.yang";
+            String firstFileName4 = "fifthFile.yang";
+            String firstFileName5 = "sixthFile.yang";
+            File firstpath2 = createDirectory(dir2);
+            createFile(firstpath2, firstFileName2);
+            createFile(firstpath2, firstFileName3);
+            createFile(firstpath2, firstFileName4);
+            createFile(dir3, firstFileName5);
+            createFile(dir3, firstFileName2);
+            createFile(dir3, firstFileName3);
+            createFile(dir3, firstFileName4);
+            createFile(dir3, firstFileName5);
+            createFile(dir4, firstFileName2);
+            createFile(dir4, firstFileName3);
+            createFile(dir4, firstFileName4);
+            createFile(dir4, firstFileName5);
+            createFile(dir5, firstFileName2);
+            createFile(dir5, firstFileName3);
+            createFile(dir5, firstFileName4);
+            createFile(dir5, firstFileName5);
+            createFile(dir6, firstFileName2);
+            createFile(dir6, firstFileName3);
+            createFile(dir6, firstFileName4);
+            createFile(dir6, firstFileName5);
+            List<String> list = YangFileScanner.getYangFiles(BASEDIR.toString());
+        } catch (IOException e) {
+            log.info("IO Exception throwed");
+        }
+    }
+
+    /**
+     * Checks multi directories with many .java file.
+     */
+    @Test
+    public void testWithMultiDirectoriesMultiJavaFiles() {
+        try {
+            String dir2 = "newDir1/newDir2/newDir3/newDir4";
+            File dir3 = new File("target/UnitTestCase/newDir1");
+            File dir4 = new File("target/UnitTestCase/newDir1/newDir2");
+            File dir5 = new File("target/UnitTestCase/newDir1/newDir2/newDir3");
+            File dir6 = new File("target/UnitTestCase/newDir1/newDir2/newDir3/newDir4");
+            String firstFileName2 = "thirdFile.java";
+            String firstFileName3 = "fourthFile.java";
+            String firstFileName4 = "fifthFile.java";
+            String firstFileName5 = "sixthFile.java";
+            File firstpath2 = createDirectory(dir2);
+            createFile(firstpath2, firstFileName2);
+            createFile(firstpath2, firstFileName3);
+            createFile(firstpath2, firstFileName4);
+            createFile(dir3, firstFileName5);
+            createFile(dir3, firstFileName2);
+            createFile(dir3, firstFileName3);
+            createFile(dir3, firstFileName4);
+            createFile(dir3, firstFileName5);
+            createFile(dir4, firstFileName2);
+            createFile(dir4, firstFileName3);
+            createFile(dir4, firstFileName4);
+            createFile(dir4, firstFileName5);
+            createFile(dir5, firstFileName2);
+            createFile(dir5, firstFileName3);
+            createFile(dir5, firstFileName4);
+            createFile(dir5, firstFileName5);
+            createFile(dir6, firstFileName2);
+            createFile(dir6, firstFileName3);
+            createFile(dir6, firstFileName4);
+            createFile(dir6, firstFileName5);
+            List<String> list = YangFileScanner.getJavaFiles(BASEDIR.toString());
+        } catch (IOException e) {
+            log.info("IO Exception throwed");
+        }
+    }
+
+    /**
+     * Method used for creating multiple directories inside the target file.
+     *
+     * @param path directory path
+     * @return directory path
+     */
+    public File createDirectory(String path) {
+        File myDir = new File(BASEDIR + File.separator + path);
+        myDir.mkdirs();
+        return myDir;
+    }
+
+    /**
+     * Method used for creating file inside the specified directory.
+     *
+     * @param myDir my current dirctory
+     * @param fileName file name
+     * @throws IOException io exception when fails to create a file.
+     */
+    public void createFile(File myDir, String fileName) throws IOException {
+        File file = null;
+        try {
+            file = new File(myDir + File.separator + fileName);
+            file.createNewFile();
+        } catch (final IOException e) {
+            throw new IOException("IOException occured");
+        }
+    }
+}