Changeset 144


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

Add more unit tests.

Location:
pyyaml/trunk/tests
Files:
28 added
2 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 
  • pyyaml/trunk/tests/test_representer.py

    r136 r144  
    11 
    22import test_appliance 
    3  
    4 try: 
    5     import datetime 
    6 except ImportError: 
    7     pass 
    8 try: 
    9     set 
    10 except NameError: 
    11     from sets import Set as set 
     3from test_constructor import * 
    124 
    135from yaml import * 
    146 
    15 class MyLoader(Loader): 
    16     pass 
    17 class MyDumper(Dumper): 
    18     pass 
    19  
    20 class MyTestClass1(object): 
    21  
    22     def __init__(self, x, y=0, z=0): 
    23         self.x = x 
    24         self.y = y 
    25         self.z = z 
    26  
    27     def __eq__(self, other): 
    28         if isinstance(other, MyTestClass1): 
    29             return self.__class__, self.__dict__ == other.__class__, other.__dict__ 
    30         else: 
    31             return False 
    32  
    33 def construct1(constructor, node): 
    34     mapping = constructor.construct_mapping(node) 
    35     return MyTestClass1(**mapping) 
    36 def represent1(representer, native): 
    37     return representer.represent_mapping("!tag1", native.__dict__) 
    38  
    39 class MyTestClass2(MyTestClass1, YAMLObject): 
    40  
    41     yaml_loader = MyLoader 
    42     yaml_dumper = MyDumper 
    43     yaml_tag = "!tag2" 
    44  
    45     def from_yaml(cls, constructor, node): 
    46         x = constructor.construct_yaml_int(node) 
    47         return cls(x=x) 
    48     from_yaml = classmethod(from_yaml) 
    49  
    50     def to_yaml(cls, representer, native): 
    51         return representer.represent_scalar(cls.yaml_tag, str(native.x)) 
    52     to_yaml = classmethod(to_yaml) 
    53  
    54 class MyTestClass3(MyTestClass2): 
    55  
    56     yaml_tag = "!tag3" 
    57  
    58     def from_yaml(cls, constructor, node): 
    59         mapping = constructor.construct_mapping(node) 
    60         if '=' in mapping: 
    61             x = mapping['='] 
    62             del mapping['='] 
    63             mapping['x'] = x 
    64         return cls(**mapping) 
    65     from_yaml = classmethod(from_yaml) 
    66  
    67     def to_yaml(cls, representer, native): 
    68         return representer.represent_mapping(cls.yaml_tag, native.__dict__) 
    69     to_yaml = classmethod(to_yaml) 
    70  
    71 MyLoader.add_constructor("!tag1", construct1) 
    72 MyDumper.add_representer(MyTestClass1, represent1) 
    73  
    74 class YAMLObject1(YAMLObject): 
    75     yaml_loader = MyLoader 
    76     yaml_dumper = MyDumper 
    77     yaml_tag = '!foo' 
    78     yaml_flow_style = True 
    79  
    80     def __init__(self, my_parameter=None, my_another_parameter=None): 
    81         self.my_parameter = my_parameter 
    82         self.my_another_parameter = my_another_parameter 
    83  
    84     def __eq__(self, other): 
    85         if isinstance(other, YAMLObject1): 
    86             return self.__class__, self.__dict__ == other.__class__, other.__dict__ 
    87         else: 
    88             return False 
    89  
    90 class TestTypeRepresenter(test_appliance.TestAppliance): 
     7class TestRepresenterTypes(test_appliance.TestAppliance): 
    918 
    929    def _testTypes(self, test_name, data_filename, code_filename): 
     
    9714            output = dump(data1, Dumper=MyDumper) 
    9815            data2 = load(output, Loader=MyLoader) 
     16            self.failUnlessEqual(type(data1), type(data2)) 
    9917            try: 
    10018                self.failUnlessEqual(data1, data2) 
     
    11735            raise 
    11836 
    119 TestTypeRepresenter.add_tests('testTypes', '.data', '.code') 
     37TestRepresenterTypes.add_tests('testTypes', '.data', '.code') 
    12038 
Note: See TracChangeset for help on using the changeset viewer.