def test_itervalues_and_values(self):
     nd = NormalizedDict({'A': 1, 'b': 3, 'C': 2})
     iterator = nd.itervalues()
     assert_false(isinstance(iterator, list))
     assert_equal(list(iterator), [1, 3, 2])
     assert_equal(list(iterator), [])
     assert_equal(list(nd.itervalues()), nd.values())
 def test_itervalues_and_values(self):
     nd = NormalizedDict({'A': 1, 'b': 3, 'C': 2})
     iterator = nd.itervalues()
     assert_false(isinstance(iterator, list))
     assert_equals(list(iterator), [1, 3, 2])
     assert_equals(list(iterator), [])
     assert_equals(list(nd.itervalues()), nd.values())
 def test_itervalues_and_values(self):
     nd = NormalizedDict({"A": 1, "b": 3, "C": 2})
     iterator = nd.itervalues()
     assert_false(isinstance(iterator, list))
     assert_equals(list(iterator), [1, 3, 2])
     assert_equals(list(iterator), [])
     assert_equals(list(nd.itervalues()), nd.values())
 def test_keys_values_and_items_are_returned_in_same_order(self):
     nd = NormalizedDict()
     for i, c in enumerate('abcdefghijklmnopqrstuvwxyz0123456789!"#%&/()=?'):
         nd[c.upper()] = i
         nd[c+str(i)] = 1
     assert_equals(nd.items(), zip(nd.keys(), nd.values()))
     assert_equals(list(nd.iteritems()), zip(nd.iterkeys(), nd.itervalues()))
 def test_keys_values_and_items_are_returned_in_same_order(self):
     nd = NormalizedDict()
     for i, c in enumerate('abcdefghijklmnopqrstuvwxyz0123456789!"#%&/()=?'):
         nd[c.upper()] = i
         nd[c+str(i)] = 1
     assert_equals(nd.items(), zip(nd.keys(), nd.values()))
     assert_equals(list(nd.iteritems()), zip(nd.iterkeys(), nd.itervalues()))
Example #6
0
class HandlerStore(object):
    def __init__(self, source):
        self._source = source
        self._handlers = NormalizedDict(ignore='_')
        self._embedded = []

    def add(self, handler, embedded=False):
        self._handlers[handler.name] = handler
        if embedded:
            self._embedded.append(handler)

    def __iter__(self):
        return self._handlers.itervalues()

    def __len__(self):
        return len(self._handlers)

    def __contains__(self, name):
        if name in self._handlers:
            return True
        for template in self._embedded:
            if template.matches(name):
                return True
        return False

    def __getitem__(self, name):
        try:
            return self._handlers[name]
        except KeyError:
            return self._find_embedded(name)

    def _find_embedded(self, name):
        embedded = [
            template.create(name) for template in self._embedded
            if template.matches(name)
        ]
        if len(embedded) == 1:
            return embedded[0]
        self._raise_no_single_match(name, embedded)

    def _raise_no_single_match(self, name, found):
        if self._source is None:
            where = "Test case file"
        else:
            where = "Resource file '%s'" % self._source
        if not found:
            raise DataError("%s contains no keywords matching name '%s'." %
                            (where, name))
        names = seq2str([f.orig_name for f in found])
        # TODO: List found on separate lines like kw/var recommendations.
        # Both here and in namespace when multiple keywords match.
        raise DataError("%s contains multiple keywords matching name '%s'.\n"
                        "Found: %s" % (where, name, names))
class HandlerStore(object):
    def __init__(self, source):
        self._source = source
        self._handlers = NormalizedDict(ignore='_')
        self._embedded = []

    def add(self, handler, embedded=False):
        self._handlers[handler.name] = handler
        if embedded:
            self._embedded.append(handler)

    def __iter__(self):
        return self._handlers.itervalues()

    def __len__(self):
        return len(self._handlers)

    def __contains__(self, name):
        if name in self._handlers:
            return True
        for template in self._embedded:
            if template.matches(name):
                return True
        return False

    def __getitem__(self, name):
        try:
            return self._handlers[name]
        except KeyError:
            return self._find_embedded(name)

    def _find_embedded(self, name):
        embedded = [
            template.create(name) for template in self._embedded
            if template.matches(name)
        ]
        if len(embedded) == 1:
            return embedded[0]
        self._raise_no_single_match(name, embedded)

    def _raise_no_single_match(self, name, found):
        if self._source is None:
            where = "Test case file"
        else:
            where = "Resource file '%s'" % self._source
        if not found:
            raise DataError("%s contains no keywords matching name '%s'." %
                            (where, name))
        error = [
            "%s contains multiple keywords matching name '%s':" % (where, name)
        ]
        names = sorted(handler.orig_name for handler in found)
        raise DataError('\n    '.join(error + names))
Example #8
0
class HandlerStore(object):

    def __init__(self, source):
        self._source = source
        self._handlers = NormalizedDict(ignore='_')
        self._embedded = []

    def add(self, handler, embedded=False):
        self._handlers[handler.name] = handler
        if embedded:
            self._embedded.append(handler)

    def __iter__(self):
        return self._handlers.itervalues()

    def __len__(self):
        return len(self._handlers)

    def __contains__(self, name):
        if name in self._handlers:
            return True
        for template in self._embedded:
            if template.matches(name):
                return True
        return False

    def __getitem__(self, name):
        try:
            return self._handlers[name]
        except KeyError:
            return self._find_embedded(name)

    def _find_embedded(self, name):
        embedded = [template.create(name) for template in self._embedded
                    if template.matches(name)]
        if len(embedded) == 1:
            return embedded[0]
        self._raise_no_single_match(name, embedded)

    def _raise_no_single_match(self, name, found):
        if self._source is None:
            where = "Test case file"
        else:
            where = "Resource file '%s'" % self._source
        if not found:
            raise DataError("%s contains no keywords matching name '%s'."
                            % (where, name))
        names = seq2str([f.orig_name for f in found])
        # TODO: List found on separate lines like kw/var recommendations.
        # Both here and in namespace when multiple keywords match.
        raise DataError("%s contains multiple keywords matching name '%s'.\n"
                        "Found: %s" % (where, name, names))
Example #9
0
class HandlerStore(object):

    def __init__(self, source):
        self._source = source
        self._handlers = NormalizedDict(ignore='_')
        self._embedded = []

    def add(self, handler, embedded=False):
        self._handlers[handler.name] = handler
        if embedded:
            self._embedded.append(handler)

    def __iter__(self):
        return self._handlers.itervalues()

    def __len__(self):
        return len(self._handlers)

    def __contains__(self, name):
        if name in self._handlers:
            return True
        for template in self._embedded:
            if template.matches(name):
                return True
        return False

    def __getitem__(self, name):
        try:
            return self._handlers[name]
        except KeyError:
            return self._find_embedded(name)

    def _find_embedded(self, name):
        embedded = [template.create(name) for template in self._embedded
                    if template.matches(name)]
        if len(embedded) == 1:
            return embedded[0]
        self._raise_no_single_match(name, embedded)

    def _raise_no_single_match(self, name, found):
        if self._source is None:
            where = "Test case file"
        else:
            where = "Resource file '%s'" % self._source
        if not found:
            raise DataError("%s contains no keywords matching name '%s'."
                            % (where, name))
        error = ["%s contains multiple keywords matching name '%s':"
                 % (where, name)]
        names = sorted(handler.orig_name for handler in found)
        raise DataError('\n    '.join(error + names))