Ejemplo n.º 1
0
class XplMessageTest(unittest.TestCase):
    """ Test XplMessage class.
    """
    def setUp(self):
        """ Setup context.

        The context is setup before each call to a test method.
        """
        self.__xpl_message = XplMessage()

    def tearDown(self):
        """ clean context.

        The context is cleaned after each call of a test method.
        """
        del self.__xpl_message

    def test_set_type(self):
        """ Test XplMessage.set_type() method.
        """
        self.assertRaises(XplMessageError, self.__xpl_message.set_type, 'dummy')
        for type_ in ('xpl-cmnd', 'xpl-trig', 'xpl-stat'):
            self.__xpl_message.set_type(type_)
            self.assertEqual(self.__xpl_message.type, type_)

    def test_set_hop_count(self):
        """ Test XplMessage.set_hop_count() method.
        """
        self.assertRaises(XplMessageError, self.__xpl_message.set_hop_count, 0)
        for i in xrange(1, 10):
            self.__xpl_message.set_hop_count(i)
            self.assertEqual(self.__xpl_message.hop_count, i)
        self.assertRaises(XplMessageError, self.__xpl_message.set_hop_count, 10)

    def test_inc_hop_count(self):
        """ Test XplMessage.inc_hop_count() method.
        """
        for i in xrange(8):
            self.__xpl_message.inc_hop_count()
        self.assertRaises(XplMessageError, self.__xpl_message.inc_hop_count)

    def test_set_source(self):
        """ Test XplMessage.set_source() method.
        """

        # Check length
        self.assertRaises(XplMessageError, self.__xpl_message.set_source, "xxxxxxxxx-x.x")
        self.assertRaises(XplMessageError, self.__xpl_message.set_source, "x-xxxxxxxxx.x")
        self.assertRaises(XplMessageError, self.__xpl_message.set_source, "x-x.xxxxxxxxxxxxxxxxx")

        # Check format
        self.assertRaises(XplMessageError, self.__xpl_message.set_source, "dummy")
        self.assertRaises(XplMessageError, self.__xpl_message.set_source, "xPL-hal.myhouse")
        self.__xpl_message.set_source("xpl-xplhal.myhouse")
        self.assertEqual(self.__xpl_message.source, "xpl-xplhal.myhouse")
        self.assertEqual(self.__xpl_message.source_vendor_id, "xpl")
        self.assertEqual(self.__xpl_message.source_device_id, "xplhal")
        self.assertEqual(self.__xpl_message.source_instance_id, "myhouse")

    def test_set_target(self):
        """ Test XplMessage.set_target() method.
        """

        # Check length
        self.assertRaises(XplMessageError, self.__xpl_message.set_target, "xxxxxxxxx-xxx.xxx")
        self.assertRaises(XplMessageError, self.__xpl_message.set_target, "xxx-xxxxxxxxx.xxx")
        self.assertRaises(XplMessageError, self.__xpl_message.set_target, "xxx-xxx.xxxxxxxxxxxxxxxxx")

        # Check format
        self.assertRaises(XplMessageError, self.__xpl_message.set_target, "dummy")
        self.assertRaises(XplMessageError, self.__xpl_message.set_target, "xPL-hal.myhouse")
        self.__xpl_message.set_target("acme-cm12.server")
        self.assertEqual(self.__xpl_message.target, "acme-cm12.server")
        self.assertEqual(self.__xpl_message.target_vendor_id, "acme")
        self.assertEqual(self.__xpl_message.target_device_id, "cm12")
        self.assertEqual(self.__xpl_message.target_instance_id, "server")
        self.__xpl_message.set_target('*')
        self.assertEqual(self.__xpl_message.target, '*')
        self.assertEqual(self.__xpl_message.target_vendor_id, None)
        self.assertEqual(self.__xpl_message.target_device_id, None)
        self.assertEqual(self.__xpl_message.target_instance_id, None)

    def test_set_schema(self):
        """ Test XplMessage.set_schema() method.
        """

        # Check length
        self.assertRaises(XplMessageError, self.__xpl_message.set_schema, "xxxxxxxxx.xxx")
        self.assertRaises(XplMessageError, self.__xpl_message.set_schema, "xxx.xxxxxxxxx")
        self.assertRaises(XplMessageError, self.__xpl_message.set_target, "x10-basic")

        # Check format
        self.assertRaises(XplMessageError, self.__xpl_message.set_schema, "dummy")
        self.__xpl_message.set_schema("x10.basic")
        self.assertEqual(self.__xpl_message.schema, "x10.basic")
        self.assertEqual(self.__xpl_message.schema_class, "x10")
        self.assertEqual(self.__xpl_message.schema_type, "basic")

    def test_add_single_data(self):
        """ Test XplMessage.test_add_single_data() method.
        """

        # check lengths
        name = 'x' * 17
        value = "xxx"
        self.assertRaises(XplMessageError, self.__xpl_message.add_single_data, name, value)
        name = "xxx"
        value = 'x' * 129
        #self.assertRaises(XplMessageError, self.__xpl_message.add_single_data, name, value)

        # 

    def test_set_data(self):
        """ Test XplMessage.set_data() method.
        """
        self.__xpl_message.set_data({"command": "dim",
                                     "device": "a1",
                                     "level": "75"})
        self.assertEqual(self.__xpl_message.data, OrderedDict({"command": "dim",
                                                               "device": "a1",
                                                               "level": "75"}))

        # Check if correctly remove previous data
        self.__xpl_message.set_data({"command2": "dim",
                                     "device2": "a1",
                                     "level2": "75"})
        self.assertEqual(self.__xpl_message.data, OrderedDict({"command2": "dim",
                                                               "device2": "a1",
                                                               "level2": "75"}))

    def test_from_packet(self):
        """ Test the XplMessage.from_packet() method.
        """
        wrong_packet = \
"""xpl-cmnd
{
target=acme-cm12.server
}
{
command=dim
device=a1
level=75
}
"""
        self.assertRaises(XplMessageError, self.__xpl_message.from_packet, wrong_packet)

        packet = \
"""xpl-cmnd
{
hop=1
source=xpl-xplhal.myhouse
target=acme-cm12.server
}
x10.basic
{
command=dim
device=a1
level=75
}
"""
        self.__xpl_message.from_packet(packet)
        self.assertEqual(self.__xpl_message.type, 'xpl-cmnd')
        self.assertEqual(self.__xpl_message.hop_count, 1)
        self.assertEqual(self.__xpl_message.source, "xpl-xplhal.myhouse")
        self.assertEqual(self.__xpl_message.source_vendor_id, "xpl")
        self.assertEqual(self.__xpl_message.source_device_id, "xplhal")
        self.assertEqual(self.__xpl_message.source_instance_id, "myhouse")
        self.assertEqual(self.__xpl_message.target, "acme-cm12.server")
        self.assertEqual(self.__xpl_message.target_vendor_id, "acme")
        self.assertEqual(self.__xpl_message.target_device_id, "cm12")
        self.assertEqual(self.__xpl_message.target_instance_id, "server")
        self.assertEqual(self.__xpl_message.schema, "x10.basic")
        self.assertEqual(self.__xpl_message.schema_class, "x10")
        self.assertEqual(self.__xpl_message.schema_type, "basic")
        self.assertEqual(self.__xpl_message.data, OrderedDict({"command": "dim",
                                                               "device": "a1",
                                                               "level": "75"}))

    def testto_packet(self):
        """ Test XplMessage.to_packet() method.
        """
        packet = \
"""xpl-cmnd
{
hop=1
source=xpl-xplhal.myhouse
target=acme-cm12.server
}
x10.basic
{
command=dim
device=a1
level=75
}
"""
        self.__xpl_message.from_packet(packet)
        self.assertEquals(self.__xpl_message.to_packet(), packet)

    def test_is_valid(self):
        """ Test XplMessage.is_valid() method.
        """
        packet = \
"""xpl-cmnd
{
hop=1
source=xpl-xplhal.myhouse
target=acme-cm12.server
}
x10.basic
{
command=dim
device=a1
level=75
}
"""
        self.assertEquals(self.__xpl_message.is_valid(), False)
        self.__xpl_message.from_packet(packet)
        self.assertEquals(self.__xpl_message.is_valid(), True)
Ejemplo n.º 2
0
class XplMessageTest(unittest.TestCase):
    """ Test XplMessage class.
    """
    def setUp(self):
        """ Setup context.

        The context is setup before each call to a test method.
        """
        self.__xpl_message = XplMessage()

    def tearDown(self):
        """ clean context.

        The context is cleaned after each call of a test method.
        """
        del self.__xpl_message

    def test_set_type(self):
        """ Test XplMessage.set_type() method.
        """
        self.assertRaises(XplMessageError, self.__xpl_message.set_type,
                          'dummy')
        for type_ in ('xpl-cmnd', 'xpl-trig', 'xpl-stat'):
            self.__xpl_message.set_type(type_)
            self.assertEqual(self.__xpl_message.type, type_)

    def test_set_hop_count(self):
        """ Test XplMessage.set_hop_count() method.
        """
        self.assertRaises(XplMessageError, self.__xpl_message.set_hop_count, 0)
        for i in xrange(1, 10):
            self.__xpl_message.set_hop_count(i)
            self.assertEqual(self.__xpl_message.hop_count, i)
        self.assertRaises(XplMessageError, self.__xpl_message.set_hop_count,
                          10)

    def test_inc_hop_count(self):
        """ Test XplMessage.inc_hop_count() method.
        """
        for i in xrange(8):
            self.__xpl_message.inc_hop_count()
        self.assertRaises(XplMessageError, self.__xpl_message.inc_hop_count)

    def test_set_source(self):
        """ Test XplMessage.set_source() method.
        """

        # Check length
        self.assertRaises(XplMessageError, self.__xpl_message.set_source,
                          "xxxxxxxxx-x.x")
        self.assertRaises(XplMessageError, self.__xpl_message.set_source,
                          "x-xxxxxxxxx.x")
        self.assertRaises(XplMessageError, self.__xpl_message.set_source,
                          "x-x.xxxxxxxxxxxxxxxxx")

        # Check format
        self.assertRaises(XplMessageError, self.__xpl_message.set_source,
                          "dummy")
        self.assertRaises(XplMessageError, self.__xpl_message.set_source,
                          "xPL-hal.myhouse")
        self.__xpl_message.set_source("xpl-xplhal.myhouse")
        self.assertEqual(self.__xpl_message.source, "xpl-xplhal.myhouse")
        self.assertEqual(self.__xpl_message.source_vendor_id, "xpl")
        self.assertEqual(self.__xpl_message.source_device_id, "xplhal")
        self.assertEqual(self.__xpl_message.source_instance_id, "myhouse")

    def test_set_target(self):
        """ Test XplMessage.set_target() method.
        """

        # Check length
        self.assertRaises(XplMessageError, self.__xpl_message.set_target,
                          "xxxxxxxxx-xxx.xxx")
        self.assertRaises(XplMessageError, self.__xpl_message.set_target,
                          "xxx-xxxxxxxxx.xxx")
        self.assertRaises(XplMessageError, self.__xpl_message.set_target,
                          "xxx-xxx.xxxxxxxxxxxxxxxxx")

        # Check format
        self.assertRaises(XplMessageError, self.__xpl_message.set_target,
                          "dummy")
        self.assertRaises(XplMessageError, self.__xpl_message.set_target,
                          "xPL-hal.myhouse")
        self.__xpl_message.set_target("acme-cm12.server")
        self.assertEqual(self.__xpl_message.target, "acme-cm12.server")
        self.assertEqual(self.__xpl_message.target_vendor_id, "acme")
        self.assertEqual(self.__xpl_message.target_device_id, "cm12")
        self.assertEqual(self.__xpl_message.target_instance_id, "server")
        self.__xpl_message.set_target('*')
        self.assertEqual(self.__xpl_message.target, '*')
        self.assertEqual(self.__xpl_message.target_vendor_id, None)
        self.assertEqual(self.__xpl_message.target_device_id, None)
        self.assertEqual(self.__xpl_message.target_instance_id, None)

    def test_set_schema(self):
        """ Test XplMessage.set_schema() method.
        """

        # Check length
        self.assertRaises(XplMessageError, self.__xpl_message.set_schema,
                          "xxxxxxxxx.xxx")
        self.assertRaises(XplMessageError, self.__xpl_message.set_schema,
                          "xxx.xxxxxxxxx")
        self.assertRaises(XplMessageError, self.__xpl_message.set_target,
                          "x10-basic")

        # Check format
        self.assertRaises(XplMessageError, self.__xpl_message.set_schema,
                          "dummy")
        self.__xpl_message.set_schema("x10.basic")
        self.assertEqual(self.__xpl_message.schema, "x10.basic")
        self.assertEqual(self.__xpl_message.schema_class, "x10")
        self.assertEqual(self.__xpl_message.schema_type, "basic")

    def test_add_single_data(self):
        """ Test XplMessage.test_add_single_data() method.
        """

        # check lengths
        name = 'x' * 17
        value = "xxx"
        self.assertRaises(XplMessageError, self.__xpl_message.add_single_data,
                          name, value)
        name = "xxx"
        value = 'x' * 129
        #self.assertRaises(XplMessageError, self.__xpl_message.add_single_data, name, value)

        #

    def test_set_data(self):
        """ Test XplMessage.set_data() method.
        """
        self.__xpl_message.set_data({
            "command": "dim",
            "device": "a1",
            "level": "75"
        })
        self.assertEqual(
            self.__xpl_message.data,
            OrderedDict({
                "command": "dim",
                "device": "a1",
                "level": "75"
            }))

        # Check if correctly remove previous data
        self.__xpl_message.set_data({
            "command2": "dim",
            "device2": "a1",
            "level2": "75"
        })
        self.assertEqual(
            self.__xpl_message.data,
            OrderedDict({
                "command2": "dim",
                "device2": "a1",
                "level2": "75"
            }))

    def test_from_packet(self):
        """ Test the XplMessage.from_packet() method.
        """
        wrong_packet = \
"""xpl-cmnd
{
target=acme-cm12.server
}
{
command=dim
device=a1
level=75
}
"""
        self.assertRaises(XplMessageError, self.__xpl_message.from_packet,
                          wrong_packet)

        packet = \
"""xpl-cmnd
{
hop=1
source=xpl-xplhal.myhouse
target=acme-cm12.server
}
x10.basic
{
command=dim
device=a1
level=75
}
"""
        self.__xpl_message.from_packet(packet)
        self.assertEqual(self.__xpl_message.type, 'xpl-cmnd')
        self.assertEqual(self.__xpl_message.hop_count, 1)
        self.assertEqual(self.__xpl_message.source, "xpl-xplhal.myhouse")
        self.assertEqual(self.__xpl_message.source_vendor_id, "xpl")
        self.assertEqual(self.__xpl_message.source_device_id, "xplhal")
        self.assertEqual(self.__xpl_message.source_instance_id, "myhouse")
        self.assertEqual(self.__xpl_message.target, "acme-cm12.server")
        self.assertEqual(self.__xpl_message.target_vendor_id, "acme")
        self.assertEqual(self.__xpl_message.target_device_id, "cm12")
        self.assertEqual(self.__xpl_message.target_instance_id, "server")
        self.assertEqual(self.__xpl_message.schema, "x10.basic")
        self.assertEqual(self.__xpl_message.schema_class, "x10")
        self.assertEqual(self.__xpl_message.schema_type, "basic")
        self.assertEqual(
            self.__xpl_message.data,
            OrderedDict({
                "command": "dim",
                "device": "a1",
                "level": "75"
            }))

    def testto_packet(self):
        """ Test XplMessage.to_packet() method.
        """
        packet = \
"""xpl-cmnd
{
hop=1
source=xpl-xplhal.myhouse
target=acme-cm12.server
}
x10.basic
{
command=dim
device=a1
level=75
}
"""
        self.__xpl_message.from_packet(packet)
        self.assertEquals(self.__xpl_message.to_packet(), packet)

    def test_is_valid(self):
        """ Test XplMessage.is_valid() method.
        """
        packet = \
"""xpl-cmnd
{
hop=1
source=xpl-xplhal.myhouse
target=acme-cm12.server
}
x10.basic
{
command=dim
device=a1
level=75
}
"""
        self.assertEquals(self.__xpl_message.is_valid(), False)
        self.__xpl_message.from_packet(packet)
        self.assertEquals(self.__xpl_message.is_valid(), True)