"""
    Unit tests for slit_length_calculator
"""

import os.path
import unittest
from sas.sascalc.dataloader.readers.ascii_reader import Reader
from sas.sascalc.calculator.slit_length_calculator import SlitlengthCalculator \
    as calculator


def find(filename):
    return os.path.join(os.path.dirname(__file__), filename)


class SlitCalculator(unittest.TestCase):
    
    def setUp(self):
        
        self.reader = Reader()
        
    def test_slit_length_calculation(self):
        """
            Test slit_length_calculator"
        """
        list = self.reader.read(find("beam profile.DAT"))
        self.assertTrue(len(list) == 1)
        f = list[0]
        cal = calculator()
        cal.set_data(f.x,f.y)
        slit_length = cal.calculate_slit_length()
        
        # The value "5.5858" was obtained by manual calculation.
        # It turns out our slit length is FWHM/2
        self.assertAlmostEqual(slit_length, 5.5858/2, 3)
        
        
if __name__ == '__main__':
    unittest.main()
   
