test_indexer.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_indexer.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.
# ===========================================================================

import sys, os, string, unittest, types
import Python.Test as Test


class IndexerTests(unittest.TestCase):
    """Test support for indexer properties."""

    def testPublicIndexer(self):
        """Test public indexers."""
        object = Test.PublicIndexerTest()

        object[0] = "zero"
        self.failUnless(object[0] == "zero")
        
        object[1] = "one"
        self.failUnless(object[1] == "one")

        self.failUnless(object[10] == None)


    def testProtectedIndexer(self):
        """Test protected indexers."""
        object = Test.ProtectedIndexerTest()

        object[0] = "zero"
        self.failUnless(object[0] == "zero")
        
        object[1] = "one"
        self.failUnless(object[1] == "one")

        self.failUnless(object[10] == None)


    def testInternalIndexer(self):
        """Test internal indexers."""
        object = Test.InternalIndexerTest()

        def test():
            object[0] = "zero"

        self.failUnlessRaises(TypeError, test)

        def test():
            Test.InternalIndexerTest.__getitem__(object, 0)

        self.failUnlessRaises(TypeError, test)

        def test():
            object.__getitem__(0)

        self.failUnlessRaises(TypeError, test)


    def testPrivateIndexer(self):
        """Test private indexers."""
        object = Test.PrivateIndexerTest()

        def test():
            object[0] = "zero"

        self.failUnlessRaises(TypeError, test)

        def test():
            Test.PrivateIndexerTest.__getitem__(object, 0)

        self.failUnlessRaises(TypeError, test)

        def test():
            object.__getitem__(0)

        self.failUnlessRaises(TypeError, test)


    def testBooleanIndexer(self):
        """Test boolean indexers."""
        object = Test.BooleanIndexerTest()

        self.failUnless(object[True] == None)
        self.failUnless(object[1] == None)

        object[0] = "false"
        self.failUnless(object[0] == "false")
        
        object[1] = "true"
        self.failUnless(object[1] == "true")

        object[False] = "false"
        self.failUnless(object[False] == "false")
        
        object[True] = "true"
        self.failUnless(object[True] == "true")


    def testByteIndexer(self):
        """Test byte indexers."""
        object = Test.ByteIndexerTest()
        max = 255
        min = 0

        self.failUnless(object[max] == None)

        object[max] = str(max)
        self.failUnless(object[max] == str(max))
        
        object[min] = str(min)
        self.failUnless(object[min] == str(min))

        def test():
            object = Test.ByteIndexerTest()
            object["wrong"]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.ByteIndexerTest()
            object["wrong"] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testSByteIndexer(self):
        """Test sbyte indexers."""
        object = Test.SByteIndexerTest()
        max = 127
        min = -128

        self.failUnless(object[max] == None)

        object[max] = str(max)
        self.failUnless(object[max] == str(max))
        
        object[min] = str(min)
        self.failUnless(object[min] == str(min))

        def test():
            object = Test.SByteIndexerTest()
            object["wrong"]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.SByteIndexerTest()
            object["wrong"] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testCharIndexer(self):
        """Test char indexers."""
        object = Test.CharIndexerTest()
        max = unichr(65535)
        min = unichr(0)
    
        self.failUnless(object[max] == None)

        object[max] = "max"
        self.failUnless(object[max] == "max")
        
        object[min] = "min"
        self.failUnless(object[min] == "min")

        def test():
            object = Test.CharIndexerTest()
            object["wrong"]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.CharIndexerTest()
            object["wrong"] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testInt16Indexer(self):
        """Test Int16 indexers."""
        object = Test.Int16IndexerTest()
        max = 32767
        min = -32768

        self.failUnless(object[max] == None)

        object[max] = str(max)
        self.failUnless(object[max] == str(max))
        
        object[min] = str(min)
        self.failUnless(object[min] == str(min))

        def test():
            object = Test.Int16IndexerTest()
            object["wrong"]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.Int16IndexerTest()
            object["wrong"] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testInt32Indexer(self):
        """Test Int32 indexers."""
        object = Test.Int32IndexerTest()
        max = 2147483647
        min = -2147483648

        self.failUnless(object[max] == None)

        object[max] = str(max)
        self.failUnless(object[max] == str(max))
        
        object[min] = str(min)
        self.failUnless(object[min] == str(min))

        def test():
            object = Test.Int32IndexerTest()
            object["wrong"]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.Int32IndexerTest()
            object["wrong"] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testInt64Indexer(self):
        """Test Int64 indexers."""
        object = Test.Int64IndexerTest()
        max = 9223372036854775807L
        min = -9223372036854775808L

        self.failUnless(object[max] == None)

        object[max] = str(max)
        self.failUnless(object[max] == str(max))
        
        object[min] = str(min)
        self.failUnless(object[min] == str(min))

        def test():
            object = Test.Int64IndexerTest()
            object["wrong"]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.Int64IndexerTest()
            object["wrong"] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testUInt16Indexer(self):
        """Test UInt16 indexers."""
        object = Test.UInt16IndexerTest()
        max = 65535
        min = 0

        self.failUnless(object[max] == None)

        object[max] = str(max)
        self.failUnless(object[max] == str(max))
        
        object[min] = str(min)
        self.failUnless(object[min] == str(min))

        def test():
            object = Test.UInt16IndexerTest()
            object["wrong"]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.UInt16IndexerTest()
            object["wrong"] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testUInt32Indexer(self):
        """Test UInt32 indexers."""
        object = Test.UInt32IndexerTest()
        max = 4294967295L
        min = 0

        self.failUnless(object[max] == None)

        object[max] = str(max)
        self.failUnless(object[max] == str(max))
        
        object[min] = str(min)
        self.failUnless(object[min] == str(min))

        def test():
            object = Test.UInt32IndexerTest()
            object["wrong"]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.UInt32IndexerTest()
            object["wrong"] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testUInt64Indexer(self):
        """Test UInt64 indexers."""
        object = Test.UInt64IndexerTest()
        max = 18446744073709551615L
        min = 0

        self.failUnless(object[max] == None)

        object[max] = str(max)
        self.failUnless(object[max] == str(max))
        
        object[min] = str(min)
        self.failUnless(object[min] == str(min))

        def test():
            object = Test.UInt64IndexerTest()
            object["wrong"]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.UInt64IndexerTest()
            object["wrong"] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testSingleIndexer(self):
        """Test Single indexers."""
        object = Test.SingleIndexerTest()
        max = 3.402823e38
        min = -3.402823e38

        self.failUnless(object[max] == None)

        object[max] = "max"
        self.failUnless(object[max] == "max")
        
        object[min] = "min"
        self.failUnless(object[min] == "min")

        def test():
            object = Test.SingleIndexerTest()
            object["wrong"]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.SingleIndexerTest()
            object["wrong"] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testDoubleIndexer(self):
        """Test Double indexers."""
        object = Test.DoubleIndexerTest()
        max = 1.7976931348623157e308
        min = -1.7976931348623157e308

        self.failUnless(object[max] == None)

        object[max] = "max"
        self.failUnless(object[max] == "max")
        
        object[min] = "min"
        self.failUnless(object[min] == "min")

        def test():
            object = Test.DoubleIndexerTest()
            object["wrong"]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.DoubleIndexerTest()
            object["wrong"] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testDecimalIndexer(self):
        """Test Decimal indexers."""
        object = Test.DecimalIndexerTest()

        from System import Decimal
        max_d = Decimal.Parse("79228162514264337593543950335")
        min_d = Decimal.Parse("-79228162514264337593543950335")

        self.failUnless(object[max_d] == None)

        object[max_d] = "max"
        self.failUnless(object[max_d] == "max")
        
        object[min_d] = "min"
        self.failUnless(object[min_d] == "min")

        def test():
            object = Test.DecimalIndexerTest()
            object["wrong"]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.DecimalIndexerTest()
            object["wrong"] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testStringIndexer(self):
        """Test String indexers."""
        object = Test.StringIndexerTest()

        self.failUnless(object["spam"] == None)
        self.failUnless(object[u"spam"] == None)

        object["spam"] = "spam"
        self.failUnless(object["spam"] == "spam")
        self.failUnless(object["spam"] == u"spam")
        self.failUnless(object[u"spam"] == "spam")
        self.failUnless(object[u"spam"] == u"spam")
        
        object[u"eggs"] = u"eggs"
        self.failUnless(object["eggs"] == "eggs")
        self.failUnless(object["eggs"] == u"eggs")
        self.failUnless(object[u"eggs"] == "eggs")
        self.failUnless(object[u"eggs"] == u"eggs")

        def test():
            object = Test.StringIndexerTest()
            object[1]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.StringIndexerTest()
            object[1] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testEnumIndexer(self):
        """Test enum indexers."""
        object = Test.EnumIndexerTest()

        key = Test.ShortEnum.One

        self.failUnless(object[key] == None)

        object[key] = "spam"
        self.failUnless(object[key] == "spam")
        
        object[key] = "eggs"
        self.failUnless(object[key] == "eggs")

        object[1] = "spam"
        self.failUnless(object[1] == "spam")

        def test():
            object = Test.EnumIndexerTest()
            object["wrong"]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.EnumIndexerTest()
            object["wrong"] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testObjectIndexer(self):
        """Test object indexers."""
        object = Test.ObjectIndexerTest()

        from Python.Test import Spam
        spam = Spam("spam")

        self.failUnless(object[spam] == None)
        self.failUnless(object["spam"] == None)
        self.failUnless(object[1] == None)
        self.failUnless(object[None] == None)

        object[spam] = "spam"
        self.failUnless(object[spam] == "spam")
        
        object["spam"] = "eggs"
        self.failUnless(object["spam"] == "eggs")

        object[1] = "one"
        self.failUnless(object[1] == "one")

        object[1L] = "long"
        self.failUnless(object[1L] == "long")

        def test():
            class eggs:
                pass
            key = eggs()
            object = Test.ObjectIndexerTest()
            object[key] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testInterfaceIndexer(self):
        """Test interface indexers."""
        object = Test.InterfaceIndexerTest()

        from Python.Test import Spam
        spam = Spam("spam")

        self.failUnless(object[spam] == None)

        object[spam] = "spam"
        self.failUnless(object[spam] == "spam")
        
        object[spam] = "eggs"
        self.failUnless(object[spam] == "eggs")

        def test():
            object = Test.InterfaceIndexerTest()
            object["wrong"]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.InterfaceIndexerTest()
            object["wrong"] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testTypedIndexer(self):
        """Test typed indexers."""
        object = Test.TypedIndexerTest()

        from Python.Test import Spam
        spam = Spam("spam")

        self.failUnless(object[spam] == None)

        object[spam] = "spam"
        self.failUnless(object[spam] == "spam")
        
        object[spam] = "eggs"
        self.failUnless(object[spam] == "eggs")

        def test():
            object = Test.TypedIndexerTest()
            object["wrong"]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.TypedIndexerTest()
            object["wrong"] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testMultiArgIndexer(self):
        """Test indexers that take multiple index arguments."""
        object = Test.MultiArgIndexerTest()

        object[0, 1] = "zero one"
        self.failUnless(object[0, 1] == "zero one")
        
        object[1, 9] = "one nine"
        self.failUnless(object[1, 9] == "one nine")

        self.failUnless(object[10, 50] == None)

        def test():
            object = Test.MultiArgIndexerTest()
            v = object[0, "one"]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.MultiArgIndexerTest()
            object[0, "one"] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testMultiTypeIndexer(self):
        """Test indexers that take multiple indices of different types."""
        object = Test.MultiTypeIndexerTest()
        spam = Test.Spam("spam")

        object[0, "one", spam] = "zero one spam"
        self.failUnless(object[0, "one", spam] == "zero one spam")
        
        object[1, "nine", spam] = "one nine spam"
        self.failUnless(object[1, "nine", spam] == "one nine spam")

        def test():
            object = Test.MultiTypeIndexerTest()
            v = object[0, 1, spam]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.MultiTypeIndexerTest()
            object[0, 1, spam] = "wrong"

        self.failUnlessRaises(TypeError, test)


    def testIndexerWrongKeyType(self):
        """Test calling an indexer using a key of the wrong type."""

        def test():
            object = Test.PublicIndexerTest()
            v = object["wrong"]

        self.failUnlessRaises(TypeError, test)

        def test():
            object = Test.PublicIndexerTest()
            object["wrong"] = "spam"

        self.failUnlessRaises(TypeError, test)


    def testIndexerWrongValueType(self):
        """Test calling an indexer using a value of the wrong type."""

        def test():
            object = Test.PublicIndexerTest()
            object[1] = 9993.9

        self.failUnlessRaises(TypeError, test)


    def testUnboundIndexer(self):
        """Test calling an unbound indexer."""
        object = Test.PublicIndexerTest()

        Test.PublicIndexerTest.__setitem__(object, 0, "zero")
        self.failUnless(object[0] == "zero")
        
        Test.PublicIndexerTest.__setitem__(object, 1, "one")
        self.failUnless(object[1] == "one")

        self.failUnless(object[10] == None)


    def testIndexerAbuse(self):
        """Test indexer abuse."""
        _class = Test.PublicIndexerTest
        object = Test.PublicIndexerTest()

        def test():
            del _class.__getitem__

        self.failUnlessRaises(AttributeError, test)

        def test():
            del object.__getitem__

        self.failUnlessRaises(AttributeError, test)

        def test():
            del _class.__setitem__

        self.failUnlessRaises(AttributeError, test)

        def test():
            del object.__setitem__

        self.failUnlessRaises(AttributeError, test)



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

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.