test_generic.py :  » Language-Interface » Python-for-.NET » pythonnet-2.0-alpha2 » src » tests » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Language Interface » Python for .NET 
Python for .NET » pythonnet 2.0 alpha2 » src » tests » test_generic.py
# ===========================================================================
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
# ===========================================================================

from System.Collections.Generic import Dictionary
import sys, os, string, unittest, types
import Python.Test as Test
import System


class GenericTests(unittest.TestCase):
    """Test CLR generics support."""

    def testPythonTypeAliasing(self):
        """Test python type alias support with generics."""
        dict = Dictionary[str, str]()
        self.assertEquals(dict.Count, 0)
        dict.Add("one", "one")
        self.failUnless(dict["one"] == "one")

        dict = Dictionary[System.String, System.String]()
        self.assertEquals(dict.Count, 0)
        dict.Add("one", "one")
        self.failUnless(dict["one"] == "one")

        dict = Dictionary[int, int]()
        self.assertEquals(dict.Count, 0)
        dict.Add(1, 1)
        self.failUnless(dict[1] == 1)

        dict = Dictionary[System.Int32, System.Int32]()
        self.assertEquals(dict.Count, 0)
        dict.Add(1, 1)
        self.failUnless(dict[1] == 1)       

        dict = Dictionary[long, long]()
        self.assertEquals(dict.Count, 0)
        dict.Add(1L, 1L)
        self.failUnless(dict[1L] == 1L)

        dict = Dictionary[System.Int64, System.Int64]()
        self.assertEquals(dict.Count, 0)
        dict.Add(1L, 1L)
        self.failUnless(dict[1L] == 1L)

        dict = Dictionary[float, float]()
        self.assertEquals(dict.Count, 0)
        dict.Add(1.5, 1.5)
        self.failUnless(dict[1.5] == 1.5)

        dict = Dictionary[System.Double, System.Double]()
        self.assertEquals(dict.Count, 0)
        dict.Add(1.5, 1.5)
        self.failUnless(dict[1.5] == 1.5)

        dict = Dictionary[bool, bool]()
        self.assertEquals(dict.Count, 0)
        dict.Add(True, False)
        self.failUnless(dict[True] == False)

        dict = Dictionary[System.Boolean, System.Boolean]()
        self.assertEquals(dict.Count, 0)
        dict.Add(True, False)
        self.failUnless(dict[True] == False)

    def testGenericReferenceType(self):
        """Test usage of generic reference type definitions."""
        from Python.Test import GenericTypeDefinition
        inst = GenericTypeDefinition[System.String, System.Int32]("one", 2)
        self.failUnless(inst.value1 == "one")
        self.failUnless(inst.value2 == 2)

    def testGenericValueType(self):
        """Test usage of generic value type definitions."""
        inst = System.Nullable[System.Int32](10)
        self.failUnless(inst.HasValue)
        self.failUnless(inst.Value == 10)

    def testGenericInterface(self):
        pass

    def testGenericDelegate(self):
        pass

    def testOpenGenericType(self):
        """
        Test behavior of reflected open constructed generic types.
        """
        from Python.Test import DerivedFromOpenGeneric

        OpenGenericType = DerivedFromOpenGeneric.__bases__[0]
        def test():
            inst = OpenGenericType()

        self.failUnlessRaises(TypeError, test)

        def test():
            type = OpenGenericType[System.String]
            
        self.failUnlessRaises(TypeError, test)

    def testDerivedFromOpenGenericType(self):
        """
        Test a generic type derived from an open generic type.
        """
        from Python.Test import DerivedFromOpenGeneric
        
        type = DerivedFromOpenGeneric[System.String, System.String]
        inst = type(1, 'two', 'three')

        self.failUnless(inst.value1 == 1)
        self.failUnless(inst.value2 == 'two')
        self.failUnless(inst.value3 == 'three')

    def testGenericTypeNameResolution(self):
        """
        Test the ability to disambiguate generic type names.
        """
        from Python.Test import GenericNameTest1,GenericNameTest2

        # If both a non-generic and generic type exist for a name, the
        # unadorned name always resolves to the non-generic type.
        _class = GenericNameTest1
        self.failUnless(_class().value == 0)
        self.failUnless(_class.value == 0)

        # If no non-generic type exists for a name, the unadorned name
        # cannot be instantiated. It can only be used to bind a generic.

        def test():
            inst = GenericNameTest2()

        self.failUnlessRaises(TypeError, test)

        _class = GenericNameTest2[int]
        self.failUnless(_class().value == 1)
        self.failUnless(_class.value == 1)

        _class = GenericNameTest2[int, int]
        self.failUnless(_class().value == 2)
        self.failUnless(_class.value == 2)

    def _testGenericWrapperByType(self, ptype, value, test_type=0):
        from Python.Test import GenericWrapper
        import System

        inst = GenericWrapper[ptype](value)
        self.failUnless(inst.value == value)

        atype = System.Array[ptype]
        items = atype([value, value, value])
        inst = GenericWrapper[atype](items)
        self.failUnless(len(inst.value) == 3)
        self.failUnless(inst.value[0] == value)
        self.failUnless(inst.value[1] == value)            
        
    def testGenericTypeBinding(self):
        """
        Test argument conversion / binding for generic methods.
        """
        from Python.Test import InterfaceTest,ISayHello1,ShortEnum
        import System
        
        self._testGenericWrapperByType(System.Boolean, True)
        self._testGenericWrapperByType(bool, True)
        self._testGenericWrapperByType(System.Byte, 255)
        self._testGenericWrapperByType(System.SByte, 127)
        self._testGenericWrapperByType(System.Char, u'A')
        self._testGenericWrapperByType(System.Int16, 32767)
        self._testGenericWrapperByType(System.Int32, 2147483647)
        self._testGenericWrapperByType(int, 2147483647)
        self._testGenericWrapperByType(System.Int64, 9223372036854775807L)
        self._testGenericWrapperByType(long, 9223372036854775807L)         
        self._testGenericWrapperByType(System.UInt16, 65000)
        self._testGenericWrapperByType(System.UInt32, 4294967295L)
        self._testGenericWrapperByType(System.UInt64, 18446744073709551615L)
        self._testGenericWrapperByType(System.Single, 3.402823e38)
        self._testGenericWrapperByType(System.Double, 1.7976931348623157e308)
        self._testGenericWrapperByType(float, 1.7976931348623157e308)         
        self._testGenericWrapperByType(System.Decimal, System.Decimal.One)
        self._testGenericWrapperByType(System.String, "test")
        self._testGenericWrapperByType(unicode, "test")
        self._testGenericWrapperByType(str, "test")
        self._testGenericWrapperByType(ShortEnum, ShortEnum.Zero)
        self._testGenericWrapperByType(System.Object, InterfaceTest())
        self._testGenericWrapperByType(InterfaceTest, InterfaceTest())
        self._testGenericWrapperByType(ISayHello1, InterfaceTest())

    def _testGenericMethodByType(self, ptype, value, test_type=0):
        from Python.Test import GenericMethodTest,GenericStaticMethodTest
        import System

        itype = GenericMethodTest[System.Type]
        stype = GenericStaticMethodTest[System.Type]

        # Explicit selection (static method)
        result = stype.Overloaded[ptype](value)
        if test_type: self.failUnless(result.__class__ == value.__class__)
        else:         self.failUnless(result == value)

        # Type inference (static method)
        result = stype.Overloaded(value)
        self.failUnless(result == value)
        if test_type: self.failUnless(result.__class__ == value.__class__)
        else:         self.failUnless(result == value)

        # Explicit selection (instance method)
        result = itype().Overloaded[ptype](value)
        self.failUnless(result == value)        
        if test_type: self.failUnless(result.__class__ == value.__class__)
        else:         self.failUnless(result == value)

        # Type inference (instance method)
        result = itype().Overloaded(value)
        self.failUnless(result == value)
        if test_type: self.failUnless(result.__class__ == value.__class__)
        else:         self.failUnless(result == value)

        atype = System.Array[ptype]
        items = atype([value, value, value])

        # Explicit selection (static method)
        result = stype.Overloaded[atype](items)
        if test_type:
            self.failUnless(len(result) == 3)
            self.failUnless(result[0].__class__ == value.__class__)
            self.failUnless(result[1].__class__ == value.__class__)            
        else:
            self.failUnless(len(result) == 3)
            self.failUnless(result[0] == value)
            self.failUnless(result[1] == value)            

        # Type inference (static method)
        result = stype.Overloaded(items)
        if test_type:
            self.failUnless(len(result) == 3)
            self.failUnless(result[0].__class__ == value.__class__)
            self.failUnless(result[1].__class__ == value.__class__)            
        else:
            self.failUnless(len(result) == 3)
            self.failUnless(result[0] == value)
            self.failUnless(result[1] == value)            

        # Explicit selection (instance method)
        result = itype().Overloaded[atype](items)
        if test_type:
            self.failUnless(len(result) == 3)
            self.failUnless(result[0].__class__ == value.__class__)
            self.failUnless(result[1].__class__ == value.__class__)            
        else:
            self.failUnless(len(result) == 3)
            self.failUnless(result[0] == value)
            self.failUnless(result[1] == value)            

        # Type inference (instance method)
        result = itype().Overloaded(items)
        if test_type:
            self.failUnless(len(result) == 3)
            self.failUnless(result[0].__class__ == value.__class__)
            self.failUnless(result[1].__class__ == value.__class__)            
        else:
            self.failUnless(len(result) == 3)
            self.failUnless(result[0] == value)
            self.failUnless(result[1] == value)            

    def testGenericMethodBinding(self):
        from Python.Test import GenericMethodTest,GenericStaticMethodTest
        from System import InvalidOperationException
        
        # Can invoke a static member on a closed generic type.
        value = GenericStaticMethodTest[str].Overloaded()
        self.failUnless(value == 1)

        def test():
            # Cannot invoke a static member on an open type.
            GenericStaticMethodTest.Overloaded()

        self.failUnlessRaises(InvalidOperationException, test)

        # Can invoke an instance member on a closed generic type.
        value = GenericMethodTest[str]().Overloaded()
        self.failUnless(value == 1)

        def test():
            # Cannot invoke an instance member on an open type,
            # because the open type cannot be instantiated.
            GenericMethodTest().Overloaded()

        self.failUnlessRaises(TypeError, test)

    def testGenericMethodTypeHandling(self):
        """
        Test argument conversion / binding for generic methods.
        """
        from Python.Test import InterfaceTest,ISayHello1,ShortEnum
        import System

        self._testGenericMethodByType(System.Boolean, True)
        self._testGenericMethodByType(bool, True)
        self._testGenericMethodByType(System.Byte, 255)
        self._testGenericMethodByType(System.SByte, 127)
        self._testGenericMethodByType(System.Char, u'A')
        self._testGenericMethodByType(System.Int16, 32767)
        self._testGenericMethodByType(System.Int32, 2147483647)
        self._testGenericMethodByType(int, 2147483647)
        self._testGenericMethodByType(System.Int64, 9223372036854775807L)
        self._testGenericMethodByType(long, 9223372036854775807L)         
        self._testGenericMethodByType(System.UInt16, 65000)
        self._testGenericMethodByType(System.UInt32, 4294967295L)
        self._testGenericMethodByType(System.UInt64, 1844674407370955161L)
        self._testGenericMethodByType(System.Single, 3.402823e38)
        self._testGenericMethodByType(System.Double, 1.7976931348623157e308)
        self._testGenericMethodByType(float, 1.7976931348623157e308)         
        self._testGenericMethodByType(System.Decimal, System.Decimal.One)
        self._testGenericMethodByType(System.String, "test")
        self._testGenericMethodByType(unicode, "test")
        self._testGenericMethodByType(str, "test")
        self._testGenericMethodByType(ShortEnum, ShortEnum.Zero)
        self._testGenericMethodByType(System.Object, InterfaceTest())
        self._testGenericMethodByType(InterfaceTest, InterfaceTest(), 1)
        self._testGenericMethodByType(ISayHello1, InterfaceTest(), 1)
        # XXX BUG: The value doesn't fit into Int64 and PythonNet doesn't
        # recognize it as UInt64 for unknown reasons.
        self._testGenericMethodByType(System.UInt64, 18446744073709551615L)


    def testGenericMethodOverloadSelection(self):
        """
        Test explicit overload selection with generic methods.
        """
        from Python.Test import GenericMethodTest,GenericStaticMethodTest
        type = GenericStaticMethodTest[str]
        inst = GenericMethodTest[str]()

        # public static int Overloaded()
        value = type.Overloaded()
        self.failUnless(value == 1)

        # public int Overloaded()
        value = inst.Overloaded()
        self.failUnless(value == 1)

        # public static T Overloaded(T arg) (inferred)
        value = type.Overloaded("test")
        self.failUnless(value == "test")

        # public T Overloaded(T arg) (inferred)
        value = inst.Overloaded("test")
        self.failUnless(value == "test")

        # public static T Overloaded(T arg) (explicit)
        value = type.Overloaded[str]("test")
        self.failUnless(value == "test")

        # public T Overloaded(T arg) (explicit)
        value = inst.Overloaded[str]("test")
        self.failUnless(value == "test")

        # public static Q Overloaded<Q>(Q arg)
        value = type.Overloaded[float](2.2)
        self.failUnless(value == 2.2)

        # public Q Overloaded<Q>(Q arg)
        value = inst.Overloaded[float](2.2)
        self.failUnless(value == 2.2)

        # public static Q Overloaded<Q>(Q arg)
        value = type.Overloaded[bool](True)
        self.failUnless(value == True)

        # public Q Overloaded<Q>(Q arg)
        value = inst.Overloaded[bool](True)
        self.failUnless(value == True)

        # public static U Overloaded<Q, U>(Q arg1, U arg2)
        #value = type.Overloaded[bool, str](True, "true")
        #self.failUnless(value == "true")

        # public U Overloaded<Q, U>(Q arg1, U arg2)
        value = inst.Overloaded[bool, str](True, "true")
        self.failUnless(value == "true")

        # public static U Overloaded<Q, U>(Q arg1, U arg2)
        value = type.Overloaded[str, bool]("true", True)
        self.failUnless(value == True)

        # public U Overloaded<Q, U>(Q arg1, U arg2)
        value = inst.Overloaded[str, bool]("true", True)
        self.failUnless(value == True)

        def test():
            value = type.Overloaded[str, bool, int]("true", True, 1)
        self.failUnlessRaises(TypeError, test)

        def test():
            value = inst.Overloaded[str, bool, int]("true", True, 1)

        self.failUnlessRaises(TypeError, test)

    def testMethodOverloadSelectionWithGenericTypes(self):
        """Check method overload selection using generic types."""
        from Python.Test import ISayHello1,InterfaceTest,ShortEnum
        from Python.Test import MethodTest,GenericWrapper
        inst = InterfaceTest()

        vtype = GenericWrapper[System.Boolean]
        input = vtype(True)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == True)

        vtype = GenericWrapper[bool]
        input = vtype(True)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == True)

        vtype = GenericWrapper[System.Byte]
        input = vtype(255)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == 255)

        vtype = GenericWrapper[System.SByte]
        input = vtype(127)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == 127)

        vtype = GenericWrapper[System.Char]
        input = vtype(u'A')
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == u'A')

        vtype = GenericWrapper[System.Char]
        input = vtype(65535)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == unichr(65535))

        vtype = GenericWrapper[System.Int16]
        input = vtype(32767)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == 32767)

        vtype = GenericWrapper[System.Int32]
        input = vtype(2147483647)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == 2147483647)

        vtype = GenericWrapper[int]
        input = vtype(2147483647)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == 2147483647)

        vtype = GenericWrapper[System.Int64]
        input = vtype(9223372036854775807L)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == 9223372036854775807L)

        vtype = GenericWrapper[long]
        input = vtype(9223372036854775807L)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == 9223372036854775807L)

        vtype = GenericWrapper[System.UInt16]
        input = vtype(65000)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == 65000)

        vtype = GenericWrapper[System.UInt32]
        input = vtype(4294967295L)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == 4294967295L)

        vtype = GenericWrapper[System.UInt64]
        input = vtype(18446744073709551615L)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == 18446744073709551615L)

        vtype = GenericWrapper[System.Single]
        input = vtype(3.402823e38)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == 3.402823e38)

        vtype = GenericWrapper[System.Double]
        input = vtype(1.7976931348623157e308)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == 1.7976931348623157e308)

        vtype = GenericWrapper[float]
        input = vtype(1.7976931348623157e308)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == 1.7976931348623157e308)

        vtype = GenericWrapper[System.Decimal]
        input = vtype(System.Decimal.One)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == System.Decimal.One)

        vtype = GenericWrapper[System.String]
        input = vtype("spam")
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == "spam")

        vtype = GenericWrapper[str]
        input = vtype("spam")
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == "spam")

        vtype = GenericWrapper[ShortEnum]
        input = vtype(ShortEnum.Zero)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value == ShortEnum.Zero)

        vtype = GenericWrapper[System.Object]
        input = vtype(inst)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value.__class__ == inst.__class__)

        vtype = GenericWrapper[InterfaceTest]
        input = vtype(inst)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value.__class__ == inst.__class__)

        vtype = GenericWrapper[ISayHello1]
        input = vtype(inst)
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value.value.__class__ == inst.__class__)

        vtype = System.Array[GenericWrapper[int]]
        input = vtype([GenericWrapper[int](0), GenericWrapper[int](1)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == 0)
        self.failUnless(value[1].value == 1)        

    def testOverloadSelectionWithArraysOfGenericTypes(self):
        """Check overload selection using arrays of generic types."""
        from Python.Test import ISayHello1,InterfaceTest,ShortEnum
        from Python.Test import MethodTest,GenericWrapper
        inst = InterfaceTest()

        gtype = GenericWrapper[System.Boolean]
        vtype = System.Array[gtype]
        input = vtype([gtype(True),gtype(True)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == True)
        self.failUnless(value.Length == 2)

        gtype = GenericWrapper[bool]
        vtype = System.Array[gtype]
        input = vtype([gtype(True), gtype(True)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == True)
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[System.Byte]
        vtype = System.Array[gtype]
        input = vtype([gtype(255), gtype(255)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == 255)
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[System.SByte]
        vtype = System.Array[gtype]
        input = vtype([gtype(127), gtype(127)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == 127)
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[System.Char]
        vtype = System.Array[gtype]
        input = vtype([gtype(u'A'), gtype(u'A')])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == u'A')
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[System.Char]
        vtype = System.Array[gtype]
        input = vtype([gtype(65535), gtype(65535)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == unichr(65535))
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[System.Int16]
        vtype = System.Array[gtype]
        input = vtype([gtype(32767),gtype(32767)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == 32767)
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[System.Int32]
        vtype = System.Array[gtype]
        input = vtype([gtype(2147483647), gtype(2147483647)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == 2147483647)
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[int]
        vtype = System.Array[gtype]
        input = vtype([gtype(2147483647), gtype(2147483647)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == 2147483647)
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[System.Int64]
        vtype = System.Array[gtype]
        input = vtype([gtype(9223372036854775807L),
                       gtype(9223372036854775807L)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == 9223372036854775807L)
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[long]
        vtype = System.Array[gtype]
        input = vtype([gtype(9223372036854775807L),
                       gtype(9223372036854775807L)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == 9223372036854775807L)
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[System.UInt16]
        vtype = System.Array[gtype]
        input = vtype([gtype(65000), gtype(65000)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == 65000)
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[System.UInt32]
        vtype = System.Array[gtype]
        input = vtype([gtype(4294967295L), gtype(4294967295L)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == 4294967295L)
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[System.UInt64]
        vtype = System.Array[gtype]
        input = vtype([gtype(18446744073709551615L),
                       gtype(18446744073709551615L)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == 18446744073709551615L)
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[System.Single]
        vtype = System.Array[gtype]
        input = vtype([gtype(3.402823e38), gtype(3.402823e38)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == 3.402823e38)
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[System.Double]
        vtype = System.Array[gtype]
        input = vtype([gtype(1.7976931348623157e308),
                       gtype(1.7976931348623157e308)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == 1.7976931348623157e308)
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[float]
        vtype = System.Array[gtype]
        input = vtype([gtype(1.7976931348623157e308),
                       gtype(1.7976931348623157e308)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == 1.7976931348623157e308)
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[System.Decimal]
        vtype = System.Array[gtype]
        input = vtype([gtype(System.Decimal.One),
                       gtype(System.Decimal.One)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == System.Decimal.One)
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[System.String]
        vtype = System.Array[gtype]
        input = vtype([gtype("spam"), gtype("spam")])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == "spam")
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[str]
        vtype = System.Array[gtype]
        input = vtype([gtype("spam"), gtype("spam")])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == "spam")
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[ShortEnum]
        vtype = System.Array[gtype]
        input = vtype([gtype(ShortEnum.Zero), gtype(ShortEnum.Zero)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value == ShortEnum.Zero)
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[System.Object]
        vtype = System.Array[gtype]
        input = vtype([gtype(inst), gtype(inst)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value.__class__ == inst.__class__)
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[InterfaceTest]
        vtype = System.Array[gtype]
        input = vtype([gtype(inst), gtype(inst)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value.__class__ == inst.__class__)
        self.failUnless(value.Length == 2)
        
        gtype = GenericWrapper[ISayHello1]
        vtype = System.Array[gtype]
        input = vtype([gtype(inst), gtype(inst)])
        value = MethodTest.Overloaded.__overloads__[vtype](input)
        self.failUnless(value[0].value.__class__ == inst.__class__)
        self.failUnless(value.Length == 2)

    def testGenericOverloadSelectionMagicNameOnly(self):
        """Test using only __overloads__ to select on type & sig"""
        # XXX NotImplemented
        pass

    def testNestedGenericClass(self):
        """Check nested generic classes."""
        # XXX NotImplemented
        pass
    


def test_suite():
    return unittest.makeSuite(GenericTests)

def main():
    unittest.TextTestRunner().run(test_suite())

if __name__ == '__main__':
    main()

www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.