Ignore:
Timestamp:
04/18/06 15:33:30 (9 years ago)
Author:
xi
Message:

Add more unit tests.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pyyaml/trunk/tests/test_constructor.py

    r136 r144  
    1212from yaml import * 
    1313 
     14import xml.parsers 
     15 
    1416class MyLoader(Loader): 
     17    pass 
     18class MyDumper(Dumper): 
    1519    pass 
    1620 
     
    2327 
    2428    def __eq__(self, other): 
    25         return self.__class__, self.__dict__ == other.__class__, other.__dict__ 
     29        if isinstance(other, MyTestClass1): 
     30            return self.__class__, self.__dict__ == other.__class__, other.__dict__ 
     31        else: 
     32            return False 
    2633 
    2734def construct1(constructor, node): 
    2835    mapping = constructor.construct_mapping(node) 
    2936    return MyTestClass1(**mapping) 
     37def represent1(representer, native): 
     38    return representer.represent_mapping("!tag1", native.__dict__) 
    3039 
    31 MyLoader.add_constructor("!tag1", construct1) 
     40add_constructor("!tag1", construct1, Loader=MyLoader) 
     41add_representer(MyTestClass1, represent1, Dumper=MyDumper) 
    3242 
    3343class MyTestClass2(MyTestClass1, YAMLObject): 
    3444 
    3545    yaml_loader = MyLoader 
     46    yaml_dumper = MyDumper 
    3647    yaml_tag = "!tag2" 
    3748 
     
    4051        return cls(x=x) 
    4152    from_yaml = classmethod(from_yaml) 
     53 
     54    def to_yaml(cls, representer, native): 
     55        return representer.represent_scalar(cls.yaml_tag, str(native.x)) 
     56    to_yaml = classmethod(to_yaml) 
    4257 
    4358class MyTestClass3(MyTestClass2): 
     
    5469    from_yaml = classmethod(from_yaml) 
    5570 
     71    def to_yaml(cls, representer, native): 
     72        return representer.represent_mapping(cls.yaml_tag, native.__dict__) 
     73    to_yaml = classmethod(to_yaml) 
     74 
    5675class YAMLObject1(YAMLObject): 
     76 
    5777    yaml_loader = MyLoader 
     78    yaml_dumper = MyDumper 
    5879    yaml_tag = '!foo' 
    5980 
     
    6889            return False 
    6990 
    70 class TestTypes(test_appliance.TestAppliance): 
     91class YAMLObject2(YAMLObject): 
     92 
     93    yaml_loader = MyLoader 
     94    yaml_dumper = MyDumper 
     95    yaml_tag = '!bar' 
     96 
     97    def __init__(self, foo=1, bar=2, baz=3): 
     98        self.foo = foo 
     99        self.bar = bar 
     100        self.baz = baz 
     101 
     102    def __getstate__(self): 
     103        return {1: self.foo, 2: self.bar, 3: self.baz} 
     104 
     105    def __setstate__(self, state): 
     106        self.foo = state[1] 
     107        self.bar = state[2] 
     108        self.baz = state[3] 
     109 
     110    def __eq__(self, other): 
     111        if isinstance(other, YAMLObject2): 
     112            return self.__class__, self.__dict__ == other.__class__, other.__dict__ 
     113        else: 
     114            return False 
     115 
     116class TestConstructorTypes(test_appliance.TestAppliance): 
    71117 
    72118    def _testTypes(self, test_name, data_filename, code_filename): 
     
    78124                data1 = data1[0] 
    79125            data2 = eval(file(code_filename, 'rb').read()) 
     126            self.failUnlessEqual(type(data1), type(data2)) 
    80127            try: 
    81128                self.failUnlessEqual(data1, data2) 
     
    100147            raise 
    101148 
    102 TestTypes.add_tests('testTypes', '.data', '.code') 
     149TestConstructorTypes.add_tests('testTypes', '.data', '.code') 
    103150 
Note: See TracChangeset for help on using the changeset viewer.