1.9 XMulTypes

class XMulTypes( *args)
Use this if a value can be of one of the xtypes defined in *args
# --
# Copyright (C) CEA, EDF
# Author : Erwan ADAM (CEA)
# --

import unittest

from xdata import *

class XMulTypesTestCase(unittest.TestCase):
    def test(self):
        self.failUnlessRaises(XValueError, XMulTypes, "toto")
        #
        x = XMulTypes(XInt(min=3), XFloat(max=-12))
        self.failUnlessRaises(XValueError, x, 0)
        self.failUnlessEqual(x("14"), 14)
        self.failUnlessEqual(x("-44.56"), -44.56)
        #
        x = XMulTypes(XInt(), XList(sequence=XInt()))
        self.failUnlessRaises(XValueError, x, "toto")
        self.failUnlessRaises(XValueError, x, ["toto"])
        self.failUnlessEqual(x("1"), 1)
        self.failUnlessEqual(x([1, 2, 3]), [1, 2, 3])
        #
        x = XMulTypes(XInt(), XList(sequence=[XString(),XInt()]))
        self.failUnlessEqual(x(1), 1)
        self.failUnlessEqual(x(["a", "1", "b", "2"]), ["a", 1, "b", 2])
        self.failUnlessRaises(XValueError, x, "toto")
        self.failUnlessRaises(XValueError, x, ["a", "1", "b"])
        self.failUnlessRaises(XValueError, x, ["a", "1", "b", "toto"])
        return
    pass

if __name__ == '__main__':
    unittest.main()
    pass