1from PyObjCTools.TestSupport import *
2from CoreFoundation import *
3
4
5try:
6    long
7except NameError:
8    long = int
9
10
11class TestXMLNode (TestCase):
12    # NOTE: This doesn't actually test the API
13
14    def testTypes(self):
15        self.assertIsCFType(CFXMLNodeRef)
16
17    def testConstants(self):
18        self.assertEqual(kCFXMLNodeCurrentVersion , 1 )
19
20        self.assertEqual(kCFXMLNodeTypeDocument , 1 )
21        self.assertEqual(kCFXMLNodeTypeElement , 2 )
22        self.assertEqual(kCFXMLNodeTypeAttribute , 3 )
23        self.assertEqual(kCFXMLNodeTypeProcessingInstruction , 4 )
24        self.assertEqual(kCFXMLNodeTypeComment , 5 )
25        self.assertEqual(kCFXMLNodeTypeText , 6 )
26        self.assertEqual(kCFXMLNodeTypeCDATASection , 7 )
27        self.assertEqual(kCFXMLNodeTypeDocumentFragment , 8 )
28        self.assertEqual(kCFXMLNodeTypeEntity , 9 )
29        self.assertEqual(kCFXMLNodeTypeEntityReference , 10 )
30        self.assertEqual(kCFXMLNodeTypeDocumentType , 11 )
31        self.assertEqual(kCFXMLNodeTypeWhitespace , 12 )
32        self.assertEqual(kCFXMLNodeTypeNotation , 13 )
33        self.assertEqual(kCFXMLNodeTypeElementTypeDeclaration , 14 )
34        self.assertEqual(kCFXMLNodeTypeAttributeListDeclaration , 15 )
35
36        self.assertEqual(kCFXMLEntityTypeParameter , 0 )
37        self.assertEqual(kCFXMLEntityTypeParsedInternal , 1 )
38        self.assertEqual(kCFXMLEntityTypeParsedExternal , 2 )
39        self.assertEqual(kCFXMLEntityTypeUnparsed , 3 )
40        self.assertEqual(kCFXMLEntityTypeCharacter , 4 )
41
42    def testStructs(self):
43        return
44
45        o = CFXMLElementInfo()
46        self.assertHasAttr(o, 'attributes')
47        self.assertHasAttr(o, 'attributeOrder')
48        self.assertHasAttr(o, 'isEmpty')
49        self.assertHasAttr(o, '_reserved')
50        o = CFXMLProcessingInstructionInfo()
51        self.assertHasAttr(o, 'dataString')
52        o = CFXMLDocumentInfo()
53        self.assertHasAttr(o, 'sourceURL')
54        self.assertHasAttr(o, 'encoding')
55        o = CFXMLExternalID()
56        self.assertHasAttr(o, 'systemID')
57        self.assertHasAttr(o, 'publicID')
58        o = CFXMLDocumentTypeInfo()
59        self.assertHasAttr(o, 'externalID')
60        o = CFXMLNotationInfo()
61        self.assertHasAttr(o, 'externalID')
62        o = CFXMLElementTypeDeclarationInfo()
63        self.assertHasAttr(o, 'contentDescription')
64        o = CFXMLAttributeDeclarationInfo()
65        self.assertHasAttr(o, 'attributeName')
66        self.assertHasAttr(o, 'typeString')
67        self.assertHasAttr(o, 'defaultString')
68        o = CFXMLAttributeListDeclarationInfo()
69        self.assertHasAttr(o, 'numberOfAttributes')
70        self.assertHasAttr(o, 'attributes')
71        o = CFXMLEntityInfo()
72        self.assertHasAttr(o, 'entityType')
73        self.assertHasAttr(o, 'replacementText')
74        self.assertHasAttr(o, 'entityID')
75        self.assertHasAttr(o, 'notationName')
76        o = CFXMLEntityReferenceInfo()
77        self.assertHasAttr(o, 'entityType')
78
79    def testFunctions(self):
80        self.assertIsInstance(CFXMLNodeGetTypeID(), (int, long))
81
82        # CFXMLNodeCreate: requires manual binding
83        # CFXMLNodeGetInfoPtr: likewise
84        # Add tests that create all valid types of nodes with there additional info and
85        # try to extract the information.
86
87        self.assertResultIsCFRetained(CFXMLNodeCreateCopy)
88        self.assertResultIsCFRetained(CFXMLTreeCreateWithNode)
89
90    @expectedFailure
91    def testMissingWrappers(self):
92        self.fail("CFXML requires manual wrappers (low prio)")
93
94if __name__ == "__main__":
95    main()
96