#! /usr/bin/env python
#*******************************************************************************
# ALMA - Atacama Large Millimiter Array
# (c) National Research Council of Canada, 2008
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# "@(#) $Id: test_Acsalarmpy.py,v 1.7 2010/06/09 00:34:44 agrimstrup Exp $"
#
# who when what
# -------- -------- ----------------------------------------------
# agrimstrup 2008-09-29 created
#
import unittest
import mock
import Acspy.Common.CDBAccess
import Acspy.Common.Log
import Acsalarmpy
import ACSAlarmSystemInterfaceProxy as ACSProxy
class TestAlarmSystemInterfaceFactory(unittest.TestCase):
@mock.patch_object(Acsalarmpy, 'CDBAccess')
@mock.patch_object(Acsalarmpy.AlarmSystemInterfaceFactory,'logger')
def test_createFaultState(self, mocklog, mockcdb):
"""AlarmSystemInterfaceFactory creates FaultState correctly"""
mockcdba = mock.Mock(spec=Acspy.Common.CDBAccess.CDBaccess)
mockcdba.getField.return_value = 'CERN'
mockcdb.CDBaccess.return_value = mockcdba
mgr = mock.Mock()
self.assertEqual(Acsalarmpy.AlarmSystemInterfaceFactory.logger, mocklog)
Acsalarmpy.AlarmSystemInterfaceFactory.init(mgr)
fs = Acsalarmpy.AlarmSystemInterfaceFactory.createFaultState()
self.assertEqual(True, isinstance(fs, Acsalarmpy.FaultState.FaultState))
Acsalarmpy.AlarmSystemInterfaceFactory.done()
def test_createSource_noinit(self):
"""AlarmSystemInterfaceFactory does not create source when not initialized"""
self.assertRaises(Acsalarmpy.ErrFactory.ACSASFactoryNotInitedExImpl, Acsalarmpy.AlarmSystemInterfaceFactory.createSource)
@mock.patch_object(Acsalarmpy, 'CDBAccess')
@mock.patch_object(Acsalarmpy.AlarmSystemInterfaceFactory,'logger')
def test_createSource_ACS(self, mocklog, mockcdb):
"""AlarmSystemInterfaceFactory creates ACS source correctly"""
mockcdba = mock.Mock(spec=Acspy.Common.CDBAccess.CDBaccess)
mockcdba.getField.return_value = 'ACS'
mockcdb.CDBaccess.return_value = mockcdba
mgr = mock.Mock()
Acsalarmpy.AlarmSystemInterfaceFactory.init(mgr)
asi = Acsalarmpy.AlarmSystemInterfaceFactory.createSource()
self.assertEqual(True, isinstance(asi, ACSProxy.ACSAlarmSystemInterfaceProxy))
Acsalarmpy.AlarmSystemInterfaceFactory.done()
@mock.patch_object(Acsalarmpy, 'CDBAccess')
@mock.patch_object(Acsalarmpy.AlarmSystemInterfaceFactory,'logger')
def test_createSource_CERN(self, mocklog, mockcdb):
"""AlarmSystemInterfaceFactory creates CERN source correctly"""
mockcdba = mock.Mock(spec=Acspy.Common.CDBAccess.CDBaccess)
mockcdba.getField.return_value = 'CERN'
mockcdb.CDBaccess.return_value = mockcdba
mgr = mock.Mock()
Acsalarmpy.AlarmSystemInterfaceFactory.init(mgr)
Acsalarmpy.AlarmSystemInterfaceFactory.registry['CERN'] = mock.Mock
asi = Acsalarmpy.AlarmSystemInterfaceFactory.createSource()
self.assertEqual(True, isinstance(asi, mock.Mock))
Acsalarmpy.AlarmSystemInterfaceFactory.done()
@mock.patch_object(Acsalarmpy.AlarmSystemInterfaceFactory,'logger')
def test_createFaultState_noinit(self, mocklog):
"""AlarmSystemInterfaceFactory does not create FaultStates when not initialized"""
self.assertRaises(Acsalarmpy.ErrFactory.ACSASFactoryNotInitedExImpl, Acsalarmpy.AlarmSystemInterfaceFactory.createFaultState)
@mock.patch_object(Acsalarmpy.AlarmSystemInterfaceFactory,'logger')
def test_done(self, mocklog):
"""AlarmSystemInterfaceFactory cleared correctly"""
Acsalarmpy.AlarmSystemInterfaceFactory.done()
self.assertEqual(True, Acsalarmpy.AlarmSystemInterfaceFactory.manager is None)
self.assertEqual(False, Acsalarmpy.AlarmSystemInterfaceFactory.initialized)
self.assertEqual(True, Acsalarmpy.AlarmSystemInterfaceFactory.systemtype is None)
@mock.patch_object(Acsalarmpy, 'CDBAccess')
@mock.patch_object(Acsalarmpy.AlarmSystemInterfaceFactory,'logger')
def test_init_cern(self, mocklog, mockcdb):
"""AlarmSystemInterfaceFactory initialized correctly with CERN configuration"""
mockcdba = mock.Mock(spec=Acspy.Common.CDBAccess.CDBaccess)
mockcdba.getField.return_value = 'CERN'
mockcdb.CDBaccess.return_value = mockcdba
mgr = mock.Mock()
Acsalarmpy.AlarmSystemInterfaceFactory.init(mgr)
self.assertEqual(mgr, Acsalarmpy.AlarmSystemInterfaceFactory.manager)
self.assertEqual(True, Acsalarmpy.AlarmSystemInterfaceFactory.initialized)
self.assertEqual('CERN', Acsalarmpy.AlarmSystemInterfaceFactory.systemtype)
Acsalarmpy.AlarmSystemInterfaceFactory.done()
@mock.patch_object(Acsalarmpy, 'CDBAccess')
@mock.patch_object(Acsalarmpy.AlarmSystemInterfaceFactory,'logger')
def test_init_acs(self, mocklog, mockcdb):
"""AlarmSystemInterfaceFactory initialized correctly with ACS configuration"""
mockcdba = mock.Mock(spec=Acspy.Common.CDBAccess.CDBaccess)
mockcdba.getField.return_value = 'ACS'
mockcdb.CDBaccess.return_value = mockcdba
mgr = mock.Mock()
Acsalarmpy.AlarmSystemInterfaceFactory.init(mgr)
self.assertEqual(mgr, Acsalarmpy.AlarmSystemInterfaceFactory.manager)
self.assertEqual(True, Acsalarmpy.AlarmSystemInterfaceFactory.initialized)
self.assertEqual('ACS', Acsalarmpy.AlarmSystemInterfaceFactory.systemtype)
Acsalarmpy.AlarmSystemInterfaceFactory.done()
if __name__ == '__main__':
unittest.main()