Example #1
0
class Arcs:
    def __init__(self, Q):
        self.coincidences = Hashtable(Q * 10)
        self.arcsByPoint = Hashtable(Q * 10)
        self.pointsByPoint = Hashtable(Q * 10)
        #self.arc_db_path=mkdtemp()+'/arc_db'
        #self.arcs= shelve.open(self.arc_db_path)
        self.arcs = {}
        self.length = 0
        #self.storage_path = mkdtemp()+'/db'
        #self.db = shelve.open(self.storage_path)
        self.db = {}

    def get_index(self, point):
        return self.pointsByPoint.get(point)

    def get_point_arcs(self, point):
        return self.arcsByPoint.get(point)

    def coincidence_lines(self, point):
        return self.coincidences.get(point)

    def peak(self, point):
        return self.coincidences.peak(point)

    def push(self, arc):
        self.arcs[str(self.length)] = arc
        self.length += 1
        return self.length

    def map(self, func):
        #self.db.close()
        #remove(self.storage_path)
        out = []
        for num in range(0, self.length):
            out.append(func(self.arcs[str(num)]))
        #self.arcs.close()
        #remove(self.arc_db_path)
        return out

    def get_hash(self, arc):
        ourhash = sha1()
        ourhash.update(str(arc))
        return ourhash.hexdigest()

    def check(self, arcs):
        a0 = arcs[0]
        a1 = arcs[-1]
        point = a0 if point_compare(a0, a1) < 0 else a1
        point_arcs = self.get_point_arcs(point)
        h = self.get_hash(arcs)
        if h in self.db:
            return int(self.db[h])
        else:
            index = self.length
            point_arcs.append(arcs)
            self.db[h] = index
            self.db[self.get_hash(list(reversed(arcs)))] = ~index
            self.push(arcs)
            return index
Example #2
0
class Arcs:

    def __init__(self, Q):
        self.coincidences = Hashtable(Q * 10)
        self.arcsByPoint = Hashtable(Q * 10)
        self.pointsByPoint = Hashtable(Q * 10)
        self.arcs = {}
        self.length = 0
        self.db = {}

    def get_index(self, point):
        return self.pointsByPoint.get(point)

    def get_point_arcs(self, point):
        return self.arcsByPoint.get(point)

    def coincidence_lines(self, point):
        return self.coincidences.get(point)

    def peak(self, point):
        return self.coincidences.peak(point)

    def push(self, arc):
        self.arcs[str(self.length)] = arc
        self.length += 1
        return self.length

    def map(self, func):
        out = []
        for num in range(0, self.length):
            out.append(func(self.arcs[str(num)]))
        return out

    def get_hash(self, arc):
        ourhash = sha1()
        ourhash.update(str(arc))
        return ourhash.hexdigest()

    def check(self, arcs):
        a0 = arcs[0]
        a1 = arcs[-1]
        point = a0 if point_compare(a0, a1) < 0 else a1
        point_arcs = self.get_point_arcs(point)
        h = self.get_hash(arcs)
        if h in self.db:
            return int(self.db[h])
        else:
            index = self.length
            point_arcs.append(arcs)
            self.db[h] = index
            self.db[self.get_hash(list(reversed(arcs)))] = ~index
            self.push(arcs)
            return index
Example #3
0
class Arcs:
    def __init__(self,Q):
        self.coincidences = Hashtable(Q * 10)
        self.arcsByPoint = Hashtable(Q * 10)
        self.pointsByPoint = Hashtable(Q * 10)
        self.arc_db_path=mkdtemp()+'/arc_db'
        self.arcs= shelve.open(self.arc_db_path)
        #self.arcs={}
        self.length=0
        self.storage_path = mkdtemp()+'/db'
        self.db = shelve.open(self.storage_path)
        #self.db={}
    def get_index(self,point):
        return self.pointsByPoint.get(point)
    def get_point_arcs(self,point):
        return self.arcsByPoint.get(point)
    def coincidence_lines(self,point):
        return self.coincidences.get(point)
    def peak(self,point):
        return self.coincidences.peak(point)
    def push(self,arc):
        self.arcs[str(self.length)]=arc
        self.length+=1
        return self.length
    def close(self):
        #pass
        self.db.close()
        remove(self.storage_path)
        self.arcs.close()
        remove(self.arc_db_path)
    def get_hash(self,arc):
        ourhash = sha1()
        ourhash.update(str(arc))
        return ourhash.hexdigest()
    def check(self,arcs):
        a0 = arcs[0]
        a1 = arcs[-1]
        point = a0 if point_compare(a0, a1) < 0 else a1
        point_arcs = self.get_point_arcs(point)
        h = self.get_hash(arcs)
        if h in self.db:
            return int(self.db[h])
        else:
            index = self.length
            point_arcs.append(arcs)
            self.db[h]=index
            self.db[self.get_hash(list(reversed(arcs)))]=~index
            self.push(arcs)
            return index
Example #4
0
def test_unknown_key():
    ht = Hashtable()
    ht.add("banana", 9)
    actual = ht.get("cucumber")
    expected = None

    assert actual == expected
Example #5
0
def test_get_silent_and_listen():
    hashtable = Hashtable()
    hashtable.set('listen', 'to me')
    hashtable.set('silent', 'so quiet')

    assert hashtable.get('listen') == 'to me'
    assert hashtable.get('silent') == 'so quiet'
Example #6
0
def test_hashtable_add():
    hashtable = Hashtable()
    hashtable.set('glisten',3)

    actual = hashtable.get('glisten')

    expected = 3

    assert actual == expected
Example #7
0
 def twoSumWithHash(self, nums, target):
     hashtable = Hashtable()
     for i in range(len(nums)):
         # Check if complement exists.
         if hashtable.contains(target - nums[i]):
             # Return it if it does.
             return [hashtable.get(target - nums[i]), i]
         else:
             hashtable.put(nums[i], i)
Example #8
0
def test_hashtable_returns_null():
    hashtable = Hashtable()
    hashtable.set('glisten',3)

    actual = hashtable.get('cat')

    expected = False

    assert actual == expected
def test_hashtable_lookup_collision():
    hashtable = Hashtable()
    hashtable.set('listen', 1)
    hashtable.set('silent', 2)

    actual = hashtable.get('listen')

    expected = 1

    assert actual == expected
Example #10
0
class TestHashtable(unittest.TestCase):

    def setUp(self):
        self.ht = Hashtable()

    def test_put(self):
        self.assertEqual(self.ht._size(), 0)
        self.ht.put('foo', 100)
        self.assertEqual(self.ht._size(), 1)

    def test_put_with_str_and_int(self):
        self.ht.put('foo', 100)
        self.ht.put(5, 'bar')
        self.assertEqual(self.ht.get('foo'), 100)
        self.assertEqual(self.ht.get(5), 'bar')

    def test_put_type_checking(self):
        self.assertRaises(TypeError, self.ht.put, [], 100)

    def test_put_overwrite(self):
        self.ht.put('foo', 100)
        self.ht.put('foo', 200)
        self.assertEqual(self.ht._size(), 1)
        val = self.ht.get('foo')
        self.assertEqual(val, 200)

    def test_put_resize(self):
        self.ht._resize = MagicMock()
        self.ht.put('foo', 100)
        self.ht.put('bar', 200)
        self.assertTrue(self.ht._resize.called)

    def test_get(self):
        self.ht.put('foo', 100)
        val = self.ht.get('foo')
        self.assertEqual(val, 100)
Example #11
0
def test_add():
    test_table = Hashtable()
    test_table.add('Home', 'Kansas City')
    assert test_table.get('Home') == 'Kansas City'
Example #12
0
def test_get_empty():
    hashtable = Hashtable()
    assert hashtable.get(None) == KeyError
Example #13
0
def test_get_in_list():
    new_hashtable = Hashtable()
    new_hashtable.add('Candy', 'Crunch')
    assert new_hashtable.get('Candy') == 'Crunch'
Example #14
0
def test_get_three_of_same_key():
    ht = Hashtable()
    ht.add('test', 'object')
    ht.add('test', 'thingy')
    ht.add('test', 'bobcat')
    assert ht.get('test') == 'object | thingy | bobcat'
Example #15
0
def test_get_three_of_same_key_integer_values():
    ht = Hashtable()
    ht.add('test', 1)
    ht.add('test', 2)
    ht.add('test', 3)
    assert ht.get('test') == '1 | 2 | 3'
Example #16
0
def test_get_apple():
    ht = Hashtable()
    ht.add("apple", 42)
    actual = ht.get("apple")
    expected = 42
    assert actual == expected
Example #17
0
def test_single_hash_fail():
    hashtable = Hashtable()
    hashtable.add('roger', 45)
    actual = hashtable.get('roger')
    expected = 44
    assert actual != expected
Example #18
0
def test_single_hash_pass():
    hashtable = Hashtable()
    hashtable.add('roger', 45)
    actual = hashtable.get('roger')
    expected = 45
    assert actual == expected
Example #19
0
def test_get_banana():
    ht = Hashtable()
    ht.add("banana", 9)
    actual = ht.get("banana")
    expected = 9
    assert actual == expected
Example #20
0
def test_get_one_key():
    ht = Hashtable()
    ht.add('test', 'object')
    assert ht.get('test') == 'object'
Example #21
0
def test_get_apple():
    hashtable = Hashtable()
    hashtable.set("apple", "Used for apple sauce")
    actual = hashtable.get("apple")
    expected = "Used for apple sauce"
    assert actual == expected