#!/usr/bin/env python
# test has been developed by Robert Harakaly and changed for SAM by Victor Galaktionov 
# get LFC current directory used by the name server (lfc_getcwd)
# meta: proxy=true
# meta: preconfig=../../LFC-config

import os, lfc, sys, errno
from testClass import _test, _ntest, _testRunner, SAM_Run, LFC_VO, TEST_HOME

class test_ok(_test):
    def info(self):
	return "lfc_getcwd OK "
    def prepare(self):
        self.path = LFC_VO
        lfc.lfc_chdir(self.path)
    def test(self):
        path = " " * 256
        ret = lfc.lfc_getcwd(path,len(path))
        return ((ret.strip(),path.strip()),0)
    def ret(self):
        return (self.path,self.path+"\0")
    def compare(self, testVal, retVal):
        ((ret1,ret2), retRetVal) = retVal
        ((test1, test2), testRetVal) = testVal
        if ((ret1 == test1) & (test2 == ret2)):
            retval = True
        else:
            retval = False
        return retval

class test_ENOENT(_ntest):
    def info(self):
        return "lfc_getcwd on non-existing directory"
    def prepare(self):
        self.name = LFC_VO + "/python_getcwd_test"
        ret = lfc.lfc_mkdir(self.name,0755)
        lfc.lfc_chdir(self.name)
        lfc.lfc_rmdir(self.name)
    def test(self):
        self.path = "                                   "
        ret = lfc.lfc_getcwd(self.path,len(self.path))
        return ((ret,self.path,lfc.cvar.serrno),0)
    def ret(self):
        return (None,self.path,errno.ENOENT)
    def compare(self, testVal, retVal):
        ((ret1,ret2,reterr), retRetVal) = retVal
        ((test1, test2, testerr), testRetVal) = testVal
	print ret1, test1
	print test2, ret2
	print reterr, testerr
        if ((ret1 == test1) & (test2 == ret2) & (reterr == testerr)):
            retval = True
        else:
            retval = False
        return retval
    def clean(self):
        lfc.lfc_rmdir(self.name)

class test_ERANGE(_ntest):
    def info(self):
        return "lfc_getcwd insufficient buffer space (ERANGE)"

    def test(self):
        self.path = " "
        ret = lfc.lfc_getcwd(self.path,len(self.path))
        return ((ret,self.path,lfc.cvar.serrno),0)

    def ret(self):
        return (None,self.path,errno.ERANGE)

    def compare(self, testVal, retVal):
        ((ret1,ret2,reterr), retRetVal) = retVal
        ((test1, test2, testerr), testRetVal) = testVal
        if ((ret1 == test1) & (test2 == ret2) & (reterr == testerr)):
            retval = True
        else:
            retval = False
        return retval

class lfc_getcwd_test(_testRunner):
    def __init__(self):
        self.name = "lfc_getcwd_test"
        self.tests=[test_ok, test_ERANGE]



#************* Interface for SAM and Python tests ***************
SAM_Run(lfc_getcwd_test)

