def test_update_using_another_norm_dict(self):
     nd = NormalizedDict({"a": 1, "b": 1})
     nd.update(NormalizedDict({"B": 2, "C": 2}))
     for c in "bc":
         assert_equals(nd[c], 2)
         assert_equals(nd[c.upper()], 2)
     assert_true("b" in nd.keys())
     assert_true("B" not in nd.keys())
     assert_true("c" not in nd.keys())
     assert_true("C" in nd.keys())
 def test_update_using_another_norm_dict(self):
     nd = NormalizedDict({'a': 1, 'b': 1})
     nd.update(NormalizedDict({'B': 2, 'C': 2}))
     for c in 'bc':
         assert_equals(nd[c], 2)
         assert_equals(nd[c.upper()], 2)
     assert_true('b' in nd.keys())
     assert_true('B' not in nd.keys())
     assert_true('c' not in nd.keys())
     assert_true('C' in nd.keys())
 def test_update_using_another_norm_dict(self):
     nd = NormalizedDict({'a': 1, 'b': 1})
     nd.update(NormalizedDict({'B': 2, 'C': 2}))
     for c in 'bc':
         assert_equals(nd[c], 2)
         assert_equals(nd[c.upper()], 2)
     assert_true('b' in nd.keys())
     assert_true('B' not in nd.keys())
     assert_true('c' not in nd.keys())
     assert_true('C' in nd.keys())
 def test_update(self):
     nd = NormalizedDict({"a": 1, "b": 1, "c": 1})
     nd.update({"b": 2, "C": 2, "D": 2})
     for c in "bcd":
         assert_equals(nd[c], 2)
         assert_equals(nd[c.upper()], 2)
     assert_true("b" in nd.keys())
     assert_true("c" in nd.keys())
     assert_true("C" not in nd.keys())
     assert_true("d" not in nd.keys())
     assert_true("D" in nd.keys())
 def test_update(self):
     nd = NormalizedDict({'a': 1, 'b': 1, 'c': 1})
     nd.update({'b': 2, 'C': 2, 'D': 2})
     for c in 'bcd':
         assert_equals(nd[c], 2)
         assert_equals(nd[c.upper()], 2)
     assert_true('b' in nd.keys())
     assert_true('c' in nd.keys())
     assert_true('C' not in nd.keys())
     assert_true('d' not in nd.keys())
     assert_true('D' in nd.keys())
 def test_update(self):
     nd = NormalizedDict({'a': 1, 'b': 1, 'c': 1})
     nd.update({'b': 2, 'C': 2, 'D': 2})
     for c in 'bcd':
         assert_equals(nd[c], 2)
         assert_equals(nd[c.upper()], 2)
     assert_true('b' in nd.keys())
     assert_true('c' in nd.keys())
     assert_true('C' not in nd.keys())
     assert_true('d' not in nd.keys())
     assert_true('D' in nd.keys())
 def test_iterkeys_and_keys(self):
     nd = NormalizedDict({'A': 1, 'b': 3, 'C': 2})
     iterator = nd.iterkeys()
     assert_false(isinstance(iterator, list))
     assert_equal(list(iterator), ['A', 'b', 'C'])
     assert_equal(list(iterator), [])
     assert_equal(list(nd.iterkeys()), nd.keys())
 def test_iterkeys_and_keys(self):
     nd = NormalizedDict({'A': 1, 'b': 3, 'C': 2})
     iterator = nd.iterkeys()
     assert_false(isinstance(iterator, list))
     assert_equals(list(iterator), ['A', 'b', 'C'])
     assert_equals(list(iterator), [])
     assert_equals(list(nd.iterkeys()), nd.keys())
 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()))
 def test_iterkeys_and_keys(self):
     nd = NormalizedDict({"A": 1, "b": 3, "C": 2})
     iterator = nd.iterkeys()
     assert_false(isinstance(iterator, list))
     assert_equals(list(iterator), ["A", "b", "C"])
     assert_equals(list(iterator), [])
     assert_equals(list(nd.iterkeys()), nd.keys())
 def test_popitem(self):
     items = [(str(i), i) for i in range(9)]
     nd = NormalizedDict(items)
     for i in range(9):
         assert_equals(nd.popitem(), items[i])
     assert_equals(nd.data, {})
     assert_equals(nd.keys(), [])
 def test_popitem(self):
     items = [(str(i), i) for i in range(9)]
     nd = NormalizedDict(items)
     for i in range(9):
         assert_equal(nd.popitem(), items[i])
     assert_equal(nd._data, {})
     assert_equal(list(nd.keys()), [])
 def test_update_with_kwargs(self):
     nd = NormalizedDict({'a': 0, 'c': 1})
     nd.update({'b': 2, 'c': 3}, b=4, d=5)
     for k, v in [('a', 0), ('b', 4), ('c', 3), ('d', 5)]:
         assert_equals(nd[k], v)
         assert_equals(nd[k.upper()], v)
         assert_true(k in nd)
         assert_true(k.upper() in nd)
         assert_true(k in nd.keys())
 def test_update_with_kwargs(self):
     nd = NormalizedDict({'a': 0, 'c': 1})
     nd.update({'b': 2, 'c': 3}, b=4, d=5)
     for k, v in [('a', 0), ('b', 4), ('c', 3), ('d', 5)]:
         assert_equal(nd[k], v)
         assert_equal(nd[k.upper()], v)
         assert_true(k in nd)
         assert_true(k.upper() in nd)
         assert_true(k in nd.keys())
 def test_update_with_kwargs(self):
     nd = NormalizedDict({"a": 0, "c": 1})
     nd.update({"b": 2, "c": 3}, b=4, d=5)
     for k, v in [("a", 0), ("b", 4), ("c", 3), ("d", 5)]:
         assert_equals(nd[k], v)
         assert_equals(nd[k.upper()], v)
         assert_true(k in nd)
         assert_true(k.upper() in nd)
         assert_true(k in nd.keys())
 def test_pop(self):
     nd = NormalizedDict({'A': 1, 'b': 2})
     assert_equal(nd.pop('A'), 1)
     assert_equal(nd.pop('B'), 2)
     assert_equal(nd._data, {})
     assert_equal(list(nd.keys()), [])
 def test_deleting_items(self):
     nd = NormalizedDict({'A': 1, 'b': 2})
     del nd['A']
     del nd['B']
     assert_equal(nd._data, {})
     assert_equal(list(nd.keys()), [])
 def test_original_keys_are_preserved(self):
     nd = NormalizedDict({'low': 1, 'UP': 2})
     nd['up'] = nd['Spa Ce'] = 3
     assert_equal(list(nd.keys()), ['low', 'Spa Ce', 'UP'])
     assert_equal(list(nd.items()), [('low', 1), ('Spa Ce', 3), ('UP', 3)])
class Applications:
    _database = DataBasePaths(True).getConnectedFile()

    def __init__(self):
        self._apps = NormalizedDict()
        self._old_apps = NormalizedDict()
        for alias, url in self._get_aliases_and_urls_from_db():
            self._old_apps[alias] = url

    def _get_aliases_and_urls_from_db(self):
        items = []
        for connection in self._read_lines():
            items.append(connection.split('\t'))
        return items

    def _read_lines(self):
        if os.path.exists(self._database):
            f = open(self._database, 'rb')
            data = f.read().splitlines()
            f.close()
            return data
        return []

    def add(self, alias, app):
        self._apps[alias] = app
        self._old_apps[alias] = app.rmi_url
        self._store()

    def _store(self):
        data = [
            '%s\t%s' % (alias, url) for alias, url in self._old_apps.items()
        ]
        self._write('\n'.join(data))
        print "*TRACE* Stored to connected applications database: ", data

    def _write(self, data):
        f = open(self._database, 'wb')
        f.write(data)
        f.close()

    def has_connected_to_application(self, alias):
        return self._apps.has_key(alias)

    def get_application(self, alias):
        return self._apps[alias]

    def get_applications(self):
        return self._apps.values()

    def get_aliases(self):
        return self._apps.keys()

    def delete(self, alias):
        del (self._apps[normalize(alias)])
        del (self._old_apps[normalize(alias)])
        self._store()

    def delete_all_connected(self):
        for alias in self._apps.keys():
            self.delete(alias)

    def get_alias_for(self, application):
        for alias, app in self._apps.items():
            if app == application:
                return alias
        return None

    def get_url(self, alias):
        for name, url in self._get_aliases_and_urls_from_db():
            if eq(name, alias):
                return url
        return None
 def test_popping_items(self):
     nd = NormalizedDict({"A": 1, "b": 2})
     assert_equals(nd.pop("A"), 1)
     assert_equals(nd.pop("B"), 2)
     assert_equals(nd.data, {})
     assert_equals(nd.keys(), [])
 def test_original_keys_are_preserved(self):
     nd = NormalizedDict({'low': 1, 'UP': 2})
     nd['up'] = nd['Spa Ce'] = 3
     assert_equals(nd.keys(), ['low', 'Spa Ce', 'UP'])
     assert_equals(nd.items(), [('low', 1), ('Spa Ce', 3), ('UP', 3)])
 def test_popping_items(self):
     nd = NormalizedDict({'A': 1, 'b': 2})
     assert_equals(nd.pop('A'), 1)
     assert_equals(nd.pop('B'), 2)
     assert_equals(nd.data, {})
     assert_equals(nd.keys(), [])
 def test_deleting_items(self):
     nd = NormalizedDict({'A': 1, 'b': 2})
     del nd['A']
     del nd['B']
     assert_equals(nd.data, {})
     assert_equals(nd.keys(), [])
 def test_keys_are_sorted(self):
     nd = NormalizedDict((c, None) for c in "aBcDeFg123XyZ___")
     assert_equals(nd.keys(), list("123_aBcDeFgXyZ"))
 def test_deleting_items(self):
     nd = NormalizedDict({"A": 1, "b": 2})
     del nd["A"]
     del nd["B"]
     assert_equals(nd.data, {})
     assert_equals(nd.keys(), [])
 def test_pop(self):
     nd = NormalizedDict({'A': 1, 'b': 2})
     assert_equals(nd.pop('A'), 1)
     assert_equals(nd.pop('B'), 2)
     assert_equals(nd.data, {})
     assert_equals(nd.keys(), [])
 def test_keys_are_sorted(self):
     nd = NormalizedDict((c, None) for c in 'aBcDeFg123XyZ___')
     assert_equal(list(nd.keys()), list('123_aBcDeFgXyZ'))
 def test_keys_are_sorted(self):
     nd = NormalizedDict((c, None) for c in 'aBcDeFg123XyZ___')
     assert_equals(nd.keys(), list('123_aBcDeFgXyZ'))
class Applications:
    _database = DataBasePaths(True).getConnectedFile()

    def __init__(self):
        self._apps = NormalizedDict()
        self._old_apps = NormalizedDict()
        for alias, url in self._get_aliases_and_urls_from_db():
            self._old_apps[alias] = url

    def _get_aliases_and_urls_from_db(self):
        items = []
        for connection in self._read_lines():
            items.append(connection.rsplit('\t', 1))
        return items

    def _read_lines(self):
        if os.path.exists(self._database):
            f = open(self._database, 'rb')
            data = f.read().splitlines()
            f.close()
            return [line for line in data if self._is_valid_connection(line)]
        return []

    def _is_valid_connection(self, line):
        return len(line.rsplit('\t', 1)) == 2

    def add(self, alias, app):
        self._apps[alias] = app
        self._old_apps[alias] = app.rmi_url
        self._store()

    def _store(self):
        data = ['%s\t%s' % (alias, url) for alias, url in self._old_apps.items()]
        data_txt = '\n'.join(data)
        self._write(data_txt)
        print "*TRACE* Stored to connected applications database: \n%s" % data_txt

    def _write(self, data):
        f = open(self._database, 'wb')
        f.write(data)
        f.close()

    def has_connected_to_application(self, alias):
        return self._apps.has_key(alias)

    def get_application(self, alias):
        return self._apps[alias]

    def get_applications(self):
        return self._apps.values()

    def get_aliases(self):
        return self._apps.keys()

    def delete(self, alias):
        del(self._apps[normalize(alias)])
        del(self._old_apps[normalize(alias)])
        self._store()

    def delete_all_connected(self):
        for alias in self._apps.keys():
            self.delete(alias)

    def get_alias_for(self, application):
        for alias, app in self._apps.items():
            if app == application:
                return alias
        return None

    def get_url(self, alias):
        for name, url in self._get_aliases_and_urls_from_db():
            if eq(name, alias):
                return url
        return None
 def test_original_keys_are_preserved(self):
     nd = NormalizedDict({"low": 1, "UP": 2})
     nd["up"] = nd["Spa Ce"] = 3
     assert_equals(nd.keys(), ["low", "Spa Ce", "UP"])
     assert_equals(nd.items(), [("low", 1), ("Spa Ce", 3), ("UP", 3)])