Index: pyyaml/trunk/tests/test_structure.py
===================================================================
--- pyyaml/trunk/tests/test_structure.py	(revision 130)
+++ pyyaml/trunk/tests/test_structure.py	(revision 136)
@@ -10,12 +10,12 @@
         node2 = eval(file(structure_filename, 'rb').read())
         try:
-            parser = Parser(Scanner(Reader(file(data_filename, 'rb'))))
+            loader = Loader(file(data_filename, 'rb'))
             node1 = []
-            while not parser.check(StreamEndEvent):
-                if not parser.check(StreamStartEvent, DocumentStartEvent, DocumentEndEvent):
-                    node1.append(self._convert(parser))
+            while not loader.check_event(StreamEndEvent):
+                if not loader.check_event(StreamStartEvent, DocumentStartEvent, DocumentEndEvent):
+                    node1.append(self._convert(loader))
                 else:
-                    parser.get()
-            parser.get()
+                    loader.get_event()
+            loader.get_event()
             if len(node1) == 1:
                 node1 = node1[0]
@@ -29,32 +29,32 @@
             raise
 
-    def _convert(self, parser):
-        if parser.check(ScalarEvent):
-            event = parser.get()
+    def _convert(self, loader):
+        if loader.check_event(ScalarEvent):
+            event = loader.get_event()
             if event.tag or event.anchor or event.value:
                 return True
             else:
                 return None
-        elif parser.check(SequenceStartEvent):
-            parser.get()
+        elif loader.check_event(SequenceStartEvent):
+            loader.get_event()
             sequence = []
-            while not parser.check(SequenceEndEvent):
-                sequence.append(self._convert(parser))
-            parser.get()
+            while not loader.check_event(SequenceEndEvent):
+                sequence.append(self._convert(loader))
+            loader.get_event()
             return sequence
-        elif parser.check(MappingStartEvent):
-            parser.get()
+        elif loader.check_event(MappingStartEvent):
+            loader.get_event()
             mapping = []
-            while not parser.check(MappingEndEvent):
-                key = self._convert(parser)
-                value = self._convert(parser)
+            while not loader.check_event(MappingEndEvent):
+                key = self._convert(loader)
+                value = self._convert(loader)
                 mapping.append((key, value))
-            parser.get()
+            loader.get_event()
             return mapping
-        elif parser.check(AliasEvent):
-            parser.get()
+        elif loader.check_event(AliasEvent):
+            loader.get_event()
             return '*'
         else:
-            parser.get()
+            loader.get_event()
             return '?'
 
@@ -67,8 +67,6 @@
         events2 = None
         try:
-            parser = Parser(Scanner(Reader(file(data_filename, 'rb'))))
-            events1 = list(iter(parser))
-            canonical = test_appliance.CanonicalParser(file(canonical_filename, 'rb').read())
-            events2 = canonical.parse()
+            events1 = list(parse(file(data_filename, 'rb')))
+            events2 = list(test_appliance.canonical_parse(file(canonical_filename, 'rb')))
             self._compare(events1, events2)
         except:
@@ -106,10 +104,6 @@
         nodes2 = None
         try:
-            resolver1 = Resolver(Composer(Parser(Scanner(Reader(file(data_filename, 'rb'))))))
-            nodes1 = list(iter(resolver1))
-            canonical = test_appliance.CanonicalParser(file(canonical_filename, 'rb').read())
-            canonical.parse()
-            resolver2 = Resolver(Composer(canonical))
-            nodes2 = list(iter(resolver2))
+            nodes1 = list(compose_all(file(data_filename, 'rb')))
+            nodes2 = list(test_appliance.canonical_compose_all(file(canonical_filename, 'rb')))
             self.failUnlessEqual(len(nodes1), len(nodes2))
             for node1, node2 in zip(nodes1, nodes2):
@@ -148,5 +142,5 @@
 TestResolver.add_tests('testResolver', '.data', '.canonical')
 
-class MyConstructor(Constructor):
+class MyConstructor:
 
     def construct_sequence(self, node):
@@ -158,19 +152,24 @@
         return pairs
 
-MyConstructor.add_constructor(None, MyConstructor.construct_scalar)
+    def construct_undefined(self, node):
+        return self.construct_scalar(node)
+
+class MyLoader(MyConstructor, Loader):
+    pass
+MyLoader.add_constructor(None, MyLoader.construct_undefined)
+
+class MyCanonicalLoader(MyConstructor, test_appliance.CanonicalLoader):
+    pass
+MyCanonicalLoader.add_constructor(None, MyCanonicalLoader.construct_undefined)
 
 class TestConstructor(test_appliance.TestAppliance):
 
     def _testConstructor(self, test_name, data_filename, canonical_filename):
-        natives1 = None
-        natives2 = None
-        try:
-            constructor1 = MyConstructor(Resolver(Composer(Parser(Scanner(Reader(file(data_filename, 'rb')))))))
-            natives1 = list(iter(constructor1))
-            canonical = test_appliance.CanonicalParser(file(canonical_filename, 'rb').read())
-            canonical.parse()
-            constructor2 = MyConstructor(Resolver(Composer(canonical)))
-            natives2 = list(iter(constructor2))
-            self.failUnlessEqual(natives1, natives2)
+        data1 = None
+        data2 = None
+        try:
+            data1 = list(load_all(file(data_filename, 'rb'), Loader=MyLoader))
+            data2 = list(load_all(file(canonical_filename, 'rb'), Loader=MyCanonicalLoader))
+            self.failUnlessEqual(data1, data2)
         except:
             print
@@ -179,6 +178,6 @@
             print "DATA2:"
             print file(canonical_filename, 'rb').read()
-            print "NATIVES1:", natives1
-            print "NATIVES2:", natives2
+            print "NATIVES1:", data1
+            print "NATIVES2:", data2
             raise
 
@@ -191,8 +190,6 @@
         events2 = None
         try:
-            parser = Parser(Scanner(Reader(file(canonical_filename, 'rb'))))
-            events1 = list(iter(parser))
-            canonical = test_appliance.CanonicalParser(file(canonical_filename, 'rb').read())
-            events2 = canonical.parse()
+            events1 = list(parse(file(canonical_filename, 'rb')))
+            events2 = list(test_appliance.canonical_parse(file(canonical_filename, 'rb')))
             self._compare(events1, events2)
         except:
