Index: pyyaml/trunk/tests/test_constructor.py
===================================================================
--- pyyaml/trunk/tests/test_constructor.py	(revision 136)
+++ pyyaml/trunk/tests/test_constructor.py	(revision 144)
@@ -12,5 +12,9 @@
 from yaml import *
 
+import xml.parsers
+
 class MyLoader(Loader):
+    pass
+class MyDumper(Dumper):
     pass
 
@@ -23,15 +27,22 @@
 
     def __eq__(self, other):
-        return self.__class__, self.__dict__ == other.__class__, other.__dict__
+        if isinstance(other, MyTestClass1):
+            return self.__class__, self.__dict__ == other.__class__, other.__dict__
+        else:
+            return False
 
 def construct1(constructor, node):
     mapping = constructor.construct_mapping(node)
     return MyTestClass1(**mapping)
+def represent1(representer, native):
+    return representer.represent_mapping("!tag1", native.__dict__)
 
-MyLoader.add_constructor("!tag1", construct1)
+add_constructor("!tag1", construct1, Loader=MyLoader)
+add_representer(MyTestClass1, represent1, Dumper=MyDumper)
 
 class MyTestClass2(MyTestClass1, YAMLObject):
 
     yaml_loader = MyLoader
+    yaml_dumper = MyDumper
     yaml_tag = "!tag2"
 
@@ -40,4 +51,8 @@
         return cls(x=x)
     from_yaml = classmethod(from_yaml)
+
+    def to_yaml(cls, representer, native):
+        return representer.represent_scalar(cls.yaml_tag, str(native.x))
+    to_yaml = classmethod(to_yaml)
 
 class MyTestClass3(MyTestClass2):
@@ -54,6 +69,12 @@
     from_yaml = classmethod(from_yaml)
 
+    def to_yaml(cls, representer, native):
+        return representer.represent_mapping(cls.yaml_tag, native.__dict__)
+    to_yaml = classmethod(to_yaml)
+
 class YAMLObject1(YAMLObject):
+
     yaml_loader = MyLoader
+    yaml_dumper = MyDumper
     yaml_tag = '!foo'
 
@@ -68,5 +89,30 @@
             return False
 
-class TestTypes(test_appliance.TestAppliance):
+class YAMLObject2(YAMLObject):
+
+    yaml_loader = MyLoader
+    yaml_dumper = MyDumper
+    yaml_tag = '!bar'
+
+    def __init__(self, foo=1, bar=2, baz=3):
+        self.foo = foo
+        self.bar = bar
+        self.baz = baz
+
+    def __getstate__(self):
+        return {1: self.foo, 2: self.bar, 3: self.baz}
+
+    def __setstate__(self, state):
+        self.foo = state[1]
+        self.bar = state[2]
+        self.baz = state[3]
+
+    def __eq__(self, other):
+        if isinstance(other, YAMLObject2):
+            return self.__class__, self.__dict__ == other.__class__, other.__dict__
+        else:
+            return False
+
+class TestConstructorTypes(test_appliance.TestAppliance):
 
     def _testTypes(self, test_name, data_filename, code_filename):
@@ -78,4 +124,5 @@
                 data1 = data1[0]
             data2 = eval(file(code_filename, 'rb').read())
+            self.failUnlessEqual(type(data1), type(data2))
             try:
                 self.failUnlessEqual(data1, data2)
@@ -100,4 +147,4 @@
             raise
 
-TestTypes.add_tests('testTypes', '.data', '.code')
+TestConstructorTypes.add_tests('testTypes', '.data', '.code')
 
