def test_setitem(self):
        print('Test: test_setitem')
        hash_map = HashMap(10)

        print('Test: general case')
        hash_map[0] = 'hello'
        hash_map[1] = 'world'
        hash_map[15] = 'foo'
        hash_map[28] = 'bar'
        self.assertEqual(hash_map[0], 'hello')
        self.assertEqual(hash_map[1], 'world')
        self.assertEqual(hash_map[15], 'foo')
        self.assertEqual(hash_map[28], 'bar')

        print('Test: set item in filled hashmap')
        hash_map = HashMap(3)
        hash_map[0] = 'hello'
        hash_map[1] = 'world'
        hash_map[15] = 'foo'
        self.assertRaises(NotEnoughCells, hash_map.__setitem__, 28, 'bar')

        print('Test: update item value')
        hash_map[1] = 'World'
        self.assertEqual(hash_map[1], 'World')
        print('Success: test_setitem')
Esempio n. 2
0
    def test_set(self):
        m = HashMap()
        for x in range(30):
            key = 'my_key_{}'.format(x)
            value = 'my value {}'.format(x)

            m.set(key, value)
Esempio n. 3
0
    def test_len(self):
        m = HashMap()

        self.assertEqual(0, len(m))

        for x in range(30):
            key = 'my_key_{}'.format(x)
            value = 'my value {}'.format(x)

            m.set(key, value)

            self.assertEqual(x + 1, len(m))
    def test_expand(self):
        print('Test: test_expand')
        hash_map = HashMap(2)

        print('Test: incorrect input')
        hash_map[0] = 'foo'
        hash_map[1] = 'bar'
        self.assertRaises(NotEnoughCells, hash_map.__setitem__, 2, 'hello')
        self.assertRaises(ValueError, hash_map.expand, 1)

        print('Test: general case')
        hash_map.expand(5)
        hash_map[2] = 'hello'
        self.assertEqual(len(hash_map._table), 5)
        self.assertEqual(hash_map[0], 'foo')
        self.assertEqual(hash_map[1], 'bar')
        self.assertEqual(hash_map[2], 'hello')
        print('Success: test_expand')
 def test_contains(self):
     print('Test: test_contains')
     hash_map = HashMap(10)
     self.assertEqual(0 in hash_map, False)
     hash_map[0] = 'foo'
     self.assertEqual(0 in hash_map, True)
     del hash_map[0]
     self.assertEqual(0 in hash_map, False)
     print('Success: test_contains')
Esempio n. 6
0
    def test_iterator(self):
        m = HashMap()

        m['key_1'] = 'value 1'
        m['key_2'] = 'value 2'
        m['key_3'] = 'value 3'

        self.assertEqual({'key_1', 'key_2', 'key_3'}, {k for k, _ in m})
        self.assertEqual({'value 1', 'value 2', 'value 3'}, {v for _, v in m})
Esempio n. 7
0
    def test_contains(self):
        m = HashMap()

        m['key_1'] = 'value 1'
        m['key_2'] = 'value 2'
        m['key_3'] = 'value 3'

        self.assertEqual(True, 'key_1' in m)
        self.assertEqual(True, 'key_2' in m)
        self.assertEqual(True, 'key_3' in m)
        self.assertEqual(False, 'key_4' in m)
        self.assertEqual(False, 'key_5' in m)
        self.assertEqual(False, 'key_6' in m)
Esempio n. 8
0
    def test_values(self):
        m = HashMap()
        for x in range(30):
            key = 'my_key_{}'.format(x)
            value = 'my value {}'.format(x)

            m.set(key, value)

        self.assertEqual(30, len(list(m.values())))
        self.assertEqual(set('my value {}'.format(x) for x in range(30)),
                         set(m.values()))
    def test_getitem(self):
        print('Test: test_getitem')
        hash_map = HashMap(10)

        print('Test: get a non-existent item')
        self.assertRaises(KeyError, hash_map.__getitem__, 0)

        print('Test: general case')
        hash_map[0] = 'hello'
        hash_map[1] = 'world'
        hash_map[15] = 'foo'
        hash_map[28] = 'bar'
        self.assertEqual(hash_map[0], 'hello')
        self.assertEqual(hash_map[1], 'world')
        self.assertEqual(hash_map[15], 'foo')
        self.assertEqual(hash_map[28], 'bar')

        print('Test: get deleted item')
        del hash_map[15]
        self.assertRaises(KeyError, hash_map.__getitem__, 15)
        print('Success: test_getitem')
Esempio n. 10
0
    def test_descriptors(self):
        m = HashMap()

        m['key_1'] = 'value 1'
        m['key_2'] = 'value 2'
        m['key_3'] = 'value 3'

        self.assertEqual(m['key_1'], 'value 1')
        self.assertEqual(m['key_2'], 'value 2')
        self.assertEqual(m['key_3'], 'value 3')

        del m['key_1']
        self.assertEqual(m['key_1'], None)
        self.assertEqual(m['key_2'], 'value 2')
        self.assertEqual(m['key_3'], 'value 3')

        del m['key_2']
        del m['key_3']

        self.assertEqual(m['key_1'], None)
        self.assertEqual(m['key_2'], None)
        self.assertEqual(m['key_3'], None)
    def test_delitem(self):
        print('Test: test_delitem')
        hash_map = HashMap(10)

        print('Test: general case')
        hash_map[0] = 'hello'
        hash_map[1] = 'world'
        hash_map[15] = 'foo'
        hash_map[28] = 'bar'

        del hash_map[1]
        self.assertRaises(KeyError, hash_map.__getitem__, 1)
        del hash_map[28]
        self.assertRaises(KeyError, hash_map.__getitem__, 28)

        print('Test: delete a non-existent item')
        self.assertRaises(KeyError, hash_map.__delitem__, 80)

        print('Test: delete previously deleted item')
        hash_map[50] = 'item'
        del hash_map[50]
        self.assertRaises(KeyError, hash_map.__delitem__, 50)
        print('Success: test_delitem')
Esempio n. 12
0
    def test_get(self):
        m = HashMap()

        for x in range(30):
            key = 'my_key_{}'.format(x)

            self.assertEqual('No value', m.get(key, default='No value'))

        for x in range(30):
            key = 'my_key_{}'.format(x)
            value = 'my value {}'.format(x)

            m.set(key, value)

        for x in range(30):
            key = 'my_key_{}'.format(x)
            value = 'my value {}'.format(x)

            self.assertEqual(value, m.get(key))
Esempio n. 13
0
    def test_capacity(self):
        m = HashMap()

        self.assertEqual(None, m.get('test'))

        m.set('my_key_1', 'my value 1')
        self.assertEqual(2, m.capacity)
        m.set('my_key_2', 'my value 2')
        self.assertEqual(2, m.capacity)
        m.set('my_key_3', 'my value 3')
        self.assertEqual(4, m.capacity)
        m.set('my_key_4', 'my value 4')
        self.assertEqual(8, m.capacity)
        m.set('my_key_5', 'my value 5')
        self.assertEqual(8, m.capacity)
        m.set('my_key_6', 'my value 6')
        self.assertEqual(16, m.capacity)
        m.set('my_key_7', 'my value 7')
        self.assertEqual(16, m.capacity)
        m.set('my_key_8', 'my value 8')
        self.assertEqual(16, m.capacity)
        m.set('my_key_9', 'my value 9')
        self.assertEqual(16, m.capacity)
        m.set('my_key_10', 'my value 10')
        self.assertEqual(32, m.capacity)
        m.set('my_key_11', 'my value 11')
        self.assertEqual(32, m.capacity)

        m.delete('my_key_11')
        self.assertEqual(32, m.capacity)
        m.delete('my_key_10')
        self.assertEqual(32, m.capacity)
        m.delete('my_key_9')
        self.assertEqual(32, m.capacity)
        m.delete('my_key_8')
        self.assertEqual(32, m.capacity)
        m.delete('my_key_8')
        self.assertEqual(16, m.capacity)
        m.delete('my_key_7')
        self.assertEqual(16, m.capacity)
        m.delete('my_key_6')
        self.assertEqual(16, m.capacity)
        m.delete('my_key_5')
        self.assertEqual(16, m.capacity)
        m.delete('my_key_4')
        self.assertEqual(16, m.capacity)
        m.delete('my_key_3')
        self.assertEqual(8, m.capacity)
        m.delete('my_key_2')
        self.assertEqual(8, m.capacity)
        m.delete('my_key_1')
        self.assertEqual(4, m.capacity)
Esempio n. 14
0
    def test_delete(self):
        m = HashMap()

        self.assertEqual(None, m.get('test'))

        for x in range(30):
            key = 'my_key_{}'.format(x)
            value = 'my value {}'.format(x)

            m.set(key, value)

        for x in range(30):
            key = 'my_key_{}'.format(x)
            value = 'my value {}'.format(x)

            self.assertEqual(value, m.get(key))

        m.delete('my_key_2')
        m.delete('my_key_7')
        m.delete('my_key_10')
        m.delete('my_key_18')
        m.delete('my_key_20')

        self.assertEqual(None, m.get('my_key_2'))
        self.assertEqual(None, m.get('my_key_7'))
        self.assertEqual(None, m.get('my_key_10'))
        self.assertEqual(None, m.get('my_key_18'))
        self.assertEqual(None, m.get('my_key_20'))