Changeset 2757:233fa3f5ecf5 in livinglogic.python.xist

Show
Ignore:
Timestamp:
07/04/07 17:21:59 (12 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Fix test_walk.py: walk filters must inherit from xsc.WalkFilter? now.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • test/test_walk.py

    r2664 r2757  
    1919def test_walk_coverage(): 
    2020    node = common.createfrag() 
    21     def filter(*args): 
    22         return (True, xsc.enterattrs, xsc.entercontent, True) 
     21    class Filter(xsc.WalkFilter): 
     22        def filter(self, path): 
     23            return (True, xsc.enterattrs, xsc.entercontent, True) 
    2324 
    2425    # call only for code coverage 
    25     for path in node.walk((True, xsc.entercontent, True)): 
    26         pass 
    2726    for path in node.walk(filter): 
    2827        pass 
     
    3130def test_walk_result(): 
    3231    def check(node, filter, result): 
    33         def node2str(node): 
    34             if isinstance(node, xsc.Text): 
    35                 return "#" 
    36             else: 
    37                 return node.xmlname 
     32        filter = filter() 
    3833        def path2str(path): 
    39             return ".".join(map(node2str, path)) 
     34            return ".".join("#" if isinstance(node, xsc.Text) else node.xmlname for node in path) 
    4035 
    41         assert map(path2str, node.walk(filter)) == result 
     36        assert map(path2str, node.walkpath(filter)) == result 
    4237 
    4338    node = html.div( 
     
    5045    ) 
    5146 
    52     def filtertopdown(path): 
    53         return (isinstance(path[-1], xsc.Element), xsc.entercontent) 
    54     def filterbottomup(path): 
    55         return (xsc.entercontent, isinstance(path[-1], xsc.Element)) 
    56     def filtertopdownattrs(path): 
    57         return (isinstance(path[-1], xsc.Element), xsc.enterattrs, xsc.entercontent) 
    58     def filterbottomupattrs(path): 
    59         return (xsc.enterattrs, xsc.entercontent, isinstance(path[-1], xsc.Element)) 
    60     def filtertopdowntextonlyinattr(path): 
    61         for node in path: 
    62             if isinstance(node, xsc.Attr): 
    63                 inattr = True 
    64                 break 
    65         else: 
    66             inattr = False 
    67         node = path[-1] 
    68         if isinstance(node, xsc.Element): 
    69             return (True, xsc.enterattrs, xsc.entercontent) 
    70         if inattr and isinstance(node, xsc.Text): 
    71             return (True, ) 
    72         else: 
    73             return (xsc.entercontent, ) 
     47    class filtertopdown(xsc.WalkFilter): 
     48        def filter(self, path): 
     49            return (isinstance(path[-1], xsc.Element), xsc.entercontent) 
    7450 
    75     def filtertopdownattrwithoutcontent(path): 
    76         if isinstance(path[-1], xsc.Element): 
    77             return (True, xsc.entercontent, xsc.enterattrs) 
    78         elif isinstance(path[-1], (xsc.Attr, xsc.Text)): 
    79             return (True, ) 
    80         else: 
    81             return (xsc.entercontent, ) 
     51    class filterbottomup(xsc.WalkFilter): 
     52        def filter(self, path): 
     53            return (xsc.entercontent, isinstance(path[-1], xsc.Element)) 
     54 
     55    class filtertopdownattrs(xsc.WalkFilter): 
     56        def filter(self, path): 
     57            return (isinstance(path[-1], xsc.Element), xsc.enterattrs, xsc.entercontent) 
     58 
     59    class filterbottomupattrs(xsc.WalkFilter): 
     60        def filter(self, path): 
     61            return (xsc.enterattrs, xsc.entercontent, isinstance(path[-1], xsc.Element)) 
     62 
     63    class filtertopdowntextonlyinattr(xsc.WalkFilter): 
     64        def filter(self, path): 
     65            for node in path: 
     66                if isinstance(node, xsc.Attr): 
     67                    inattr = True 
     68                    break 
     69            else: 
     70                inattr = False 
     71            node = path[-1] 
     72            if isinstance(node, xsc.Element): 
     73                return (True, xsc.enterattrs, xsc.entercontent) 
     74            if inattr and isinstance(node, xsc.Text): 
     75                return (True, ) 
     76            else: 
     77                return (xsc.entercontent, ) 
     78 
     79    class filtertopdownattrwithoutcontent(xsc.WalkFilter): 
     80        def filter(self, path): 
     81            if isinstance(path[-1], xsc.Element): 
     82                return (True, xsc.entercontent, xsc.enterattrs) 
     83            elif isinstance(path[-1], (xsc.Attr, xsc.Text)): 
     84                return (True, ) 
     85            else: 
     86                return (xsc.entercontent, ) 
    8287 
    8388    yield check, node, filtertopdown, ["div", "div.tr", "div.tr.th", "div.tr.td"]