#!/usr/bin/python2
# -*- Mode:python; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
#
# Copyright (C) 2014 Washington University in St. Louis
# Copyright (C) 2017 Arizona Board of Regents.
# Author: Hila Ben Abraham <hila@wustl.edu>
# See COPYING for copyright and distribution information.
#

import os
import unittest
import subprocess

class test_nfdc(unittest.TestCase):
    """Test case for testing nfdc"""

    def setUp(self):
        print "\nTesting nfdc"
        print "*****************************"
        os.chdir("test_nfdc")
        os.system("mkdir -p logs")

    def tearDown(self):
        print "********************************"
        os.chdir("..")

    def test_nfdc(self):
        ret = subprocess.call(["./nfdc-test.sh"], shell=True)
        if ret != 0:
            self.fail(" >> TEST FAILED")
        else:
            print ">> TEST PASSED SUCCESSFULLY"
