[ONOS-3908] YANG container translator.

Change-Id: I4e239509df747238905ca0995f41019679093627
diff --git a/src/test/java/org/onosproject/yangutils/translator/tojava/CachedJavaFileHandleTest.java b/src/test/java/org/onosproject/yangutils/translator/tojava/CachedJavaFileHandleTest.java
new file mode 100644
index 0000000..9a62458
--- /dev/null
+++ b/src/test/java/org/onosproject/yangutils/translator/tojava/CachedJavaFileHandleTest.java
@@ -0,0 +1,170 @@
+/*
+ * 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.translator.tojava;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.junit.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
+
+import org.onosproject.yangutils.datamodel.YangDataTypes;
+import org.onosproject.yangutils.datamodel.YangType;
+import org.onosproject.yangutils.translator.CachedFileHandle;
+import org.onosproject.yangutils.translator.GeneratedFileType;
+import org.onosproject.yangutils.utils.UtilConstants;
+import org.onosproject.yangutils.utils.io.impl.CopyrightHeader;
+import org.onosproject.yangutils.utils.io.impl.FileSystemUtil;
+
+/**
+ * Unit test case for cached java file handle.
+ */
+public class CachedJavaFileHandleTest {
+
+    private static final String DIR_PKG = "target/unit/cachedfile/";
+    private static final String PKG = "org.onosproject.unittest";
+    private static final String CHILD_PKG = "target/unit/cachedfile/child";
+    private static final String YANG_NAME = "Test1";
+    private static final GeneratedFileType GEN_TYPE = GeneratedFileType.ALL;
+
+    /**
+     * Unit test case for add attribute info.
+     *
+     * @throws IOException when fails to add an attribute.
+     */
+    @Test
+    public void testForAddAttributeInfo() throws IOException {
+
+        AttributeInfo attr = getAttr();
+        attr.setListAttr(false);
+        getFileHandle().addAttributeInfo(attr.getAttributeType(), attr.getAttributeName(), attr.isListAttr());
+    }
+
+    /**
+     * Unit test case for close of cached files.
+     *
+     * @throws IOException when fails to generate files.
+     */
+    @Test
+    public void testForClose() throws IOException {
+
+        CopyrightHeader.parseCopyrightHeader();
+
+        AttributeInfo attr = getAttr();
+        attr.setListAttr(false);
+        CachedFileHandle handle = getFileHandle();
+        handle.addAttributeInfo(attr.getAttributeType(), attr.getAttributeName(), attr.isListAttr());
+        handle.close();
+
+        assertThat(true, is(getStubDir().exists()));
+        assertThat(true, is(getStubPkgInfo().exists()));
+        assertThat(true, is(getStubInterfaceFile().exists()));
+        assertThat(true, is(getStubBuilderFile().exists()));
+    }
+
+    /**
+     * Unit test case for setting child's package.
+     *
+     * @throws IOException when fails to add child's package
+     */
+    @Test
+    public void testForSetChildsPackage() throws IOException {
+
+        AttributeInfo attr = getAttr();
+        attr.setListAttr(false);
+        CachedFileHandle handle = getFileHandle();
+        handle.addAttributeInfo(attr.getAttributeType(), attr.getAttributeName(), attr.isListAttr());
+
+        handle.setChildsPackage(CHILD_PKG);
+    }
+
+    /**
+     * Returns attribute info.
+     *
+     * @return attribute info
+     */
+    @SuppressWarnings("rawtypes")
+    private AttributeInfo getAttr() {
+        YangType<?> type = new YangType();
+        YangDataTypes dataType = YangDataTypes.STRING;
+
+        type.setDataTypeName("string");
+        type.setDataType(dataType);
+
+        AttributeInfo attr = new AttributeInfo();
+
+        attr.setAttributeName("testAttr");
+        attr.setAttributeType(type);
+        return attr;
+    }
+
+    /**
+     * Returns cached java file handle.
+     *
+     * @return java file handle.
+     */
+    private CachedFileHandle getFileHandle() throws IOException {
+        CopyrightHeader.parseCopyrightHeader();
+        FileSystemUtil.createPackage(DIR_PKG + File.separator + PKG, YANG_NAME);
+        CachedFileHandle fileHandle = FileSystemUtil.createSourceFiles(PKG, YANG_NAME, GEN_TYPE);
+        fileHandle.setFilePath(DIR_PKG + PKG.replace(".", "/"));
+
+        return fileHandle;
+    }
+
+    /**
+     * Returns stub directory file object.
+     *
+     * @return stub directory file
+     */
+    private File getStubDir() {
+        return new File(DIR_PKG);
+    }
+
+    /**
+     * Returns stub package-info file object.
+     *
+     * @return stub package-info file
+     */
+    private File getStubPkgInfo() {
+        return new File(DIR_PKG + PKG.replace(UtilConstants.PERIOD, UtilConstants.SLASH) + File.separator
+                + "package-info.java");
+    }
+
+    /**
+     * Returns stub interface file object.
+     *
+     * @return stub interface file
+     */
+    private File getStubInterfaceFile() {
+        return new File(DIR_PKG + PKG.replace(UtilConstants.PERIOD, UtilConstants.SLASH) + File.separator + YANG_NAME
+                + ".java");
+    }
+
+    /**
+     * Returns stub builder file.
+     *
+     * @return stub builder file
+     */
+    private File getStubBuilderFile() {
+        return new File(DIR_PKG + PKG.replace(UtilConstants.PERIOD, UtilConstants.SLASH) + File.separator + YANG_NAME
+                + "Builder.java");
+    }
+
+}