コード例 #1
0
ファイル: keys.py プロジェクト: patricknevindwyer/Trieful
class StringKeyTests(unittest.TestCase):
	
	def setUp(self):
		self.trie = Trie()
		self.keys = ['bar', 'baz', 'barbell', 'foo', 'food', 'bar', 'bazbuzz', 'bazbuzz']
		
		for key in self.keys:
			self.trie.add(key, 1)
		
	def test_paths(self):
		paths = list(self.trie.paths())
		self.assertTrue(len(paths) == 6, "Trie::paths")
		
	def test_has(self):
		for key in self.keys:
			self.assertTrue(self.trie.has(key), "Trie::has")
			
	def test_in(self):
		for key in self.keys:
			self.assertTrue(key in self.trie, "Trie::__contains__")
	
	def test_get(self):
		for key in self.keys:
			self.assertTrue(self.trie.get(key) is not None, "Trie::get")
	
	def test_getItem(self):
		for key in self.keys:
			self.assertTrue(self.trie[key] is not None, "Trie::__getitem__")
			
	def test_remove(self):
		self.trie.remove('bar', 1)
		self.trie.remove('baz', 1)
		self.assertTrue(self.trie.get('bar') == 1, "Trie::remove")
		self.assertTrue(self.trie.get('baz') is None, "Trie::remove")

	
	def test_removeAll(self):
		self.trie.removeAll('bar')
		self.assertTrue(self.trie.get('bar') is None, "Trie::removeAll")
		self.assertTrue(self.trie.get('barbell') is not None, "Trie::removeAll retain leaves")
	
	def test_setItem(self):
		
		self.trie['blah'] = 1
		
		self.assertTrue(self.trie.get('blah') == 1, "Trie::__setitem__")
	
	def test_missingItems(self):
		notIn = ['bubbles', 'barb', 'bazz']
		
		for key in notIn:
			self.assertTrue(self.trie.get(key) is None, "Missing items")
		
	def test_singleItems(self):
		for item in ['baz', 'barbell', 'foo', 'food']:
			self.assertTrue(self.trie.get(item) == 1, "Trie::add non-duplicates")
	
	def test_doubleItems(self):
		for item in ['bar', 'bazbuzz']:
			self.assertTrue(self.trie.get(item) == [1, 1], "Trie::add duplicates")
コード例 #2
0
ファイル: keys.py プロジェクト: patricknevindwyer/Trieful
class KeyAsValueTests(unittest.TestCase):

	def setUp(self):
		self.trie = Trie(keyFunction = KEY_DOTTED)
		self.keys = ['com.example', 'com.baz', 'com.example.sub', 'org.example']
		for key in self.keys:
			self.trie.add(key, key)
	
	def test_values(self):
		for k in self.keys:
			self.assertTrue(self.trie.get(k) == k, "Trie::get")
コード例 #3
0
ファイル: countSubPaths.py プロジェクト: pombredanne/Trieful
class SubPathCountTests(unittest.TestCase):
    def setUp(self):
        self.trie = Trie(keyFunction=KEY_DOTTED, storeFunction=STORE_COUNT)
        self.keys = [
            'com.example', 'com.blah', 'com.example.sub1', 'com.example.sub2'
        ]
        for key in self.keys:
            self.trie.add(key, 1, atAllSubPaths=True)

    def test_paths(self):
        for k in self.keys:
            self.assertTrue(k in self.trie,
                            "Trie::paths has with atAllSubPaths")

    def test_counts(self):
        countParts = {
            'com': 4,
            'com.example': 3,
            'com.blah': 1,
            'com.example.sub1': 1,
            'com.example.sub2': 1
        }

        for countPart in countParts.items():
            val = self.trie.get(countPart[0])
            self.assertTrue(val == countPart[1],
                            "Trie::get with atAllSubPaths")

    def test_removes(self):
        self.trie.remove('com.example.sub2', atAllSubPaths=True)
        countParts = {
            'com': 3,
            'com.example': 2,
            'com.blah': 1,
            'com.example.sub1': 1
        }

        for countPart in countParts.items():
            val = self.trie.get(countPart[0])
            self.assertTrue(val == countPart[1],
                            "Trie::remove with atAllSubPaths")
コード例 #4
0
class KeyAsValueTests(unittest.TestCase):
    def setUp(self):
        self.trie = Trie(keyFunction=KEY_DOTTED)
        self.keys = [
            'com.example', 'com.baz', 'com.example.sub', 'org.example'
        ]
        for key in self.keys:
            self.trie.add(key, key)

    def test_values(self):
        for k in self.keys:
            self.assertTrue(self.trie.get(k) == k, "Trie::get")
コード例 #5
0
class SubPathCountTests(unittest.TestCase):
	
	def setUp(self):
		self.trie = Trie(keyFunction = KEY_DOTTED, storeFunction = STORE_COUNT)
		self.keys = ['com.example', 'com.blah', 'com.example.sub1', 'com.example.sub2']
		for key in self.keys:
			self.trie.add(key, 1, atAllSubPaths = True)
	
	def test_paths(self):
		for k in self.keys:
			self.assertTrue(k in self.trie, "Trie::paths has with atAllSubPaths")
			
	def test_counts(self):
		countParts = {
			'com': 4,
			'com.example': 3,
			'com.blah': 1,
			'com.example.sub1': 1,
			'com.example.sub2': 1
		}
		
		for countPart in countParts.items():
			val = self.trie.get(countPart[0])
			self.assertTrue(val == countPart[1], "Trie::get with atAllSubPaths")
	
	def test_removes(self):
		self.trie.remove('com.example.sub2', atAllSubPaths = True)
		countParts = {
			'com': 3,
			'com.example': 2,
			'com.blah': 1,
			'com.example.sub1': 1
		}		
		
		for countPart in countParts.items():
			val = self.trie.get(countPart[0])
			self.assertTrue(val == countPart[1], "Trie::remove with atAllSubPaths")
コード例 #6
0
ファイル: store_count.py プロジェクト: pombredanne/Trieful
class StoreCountTests(unittest.TestCase):
    def setUp(self):
        self.trie = Trie(keyFunction=KEY_DOTTED, storeFunction=STORE_COUNT)
        self.keys = [
            'com.example', 'com.baz', 'com.example.sub', 'org.example',
            'com.example', 'com.example.sub', 'com.example.sub'
        ]
        for key in self.keys:
            self.trie.add(key, 1)

    def test_has(self):
        for key in self.keys:
            self.assertTrue(self.trie.has(key), "Trie::has")

    def test_paths(self):
        for path in self.trie.paths():
            self.assertTrue(path in self.keys, "Trie::paths")

        paths = list(self.trie.paths())
        self.assertTrue(len(paths) == 4, "Trie::paths length")

    def test_counts(self):
        countParts = {'com.example': 2, 'com.baz': 1, 'com.example.sub': 3}

        for countPart in countParts.items():
            val = self.trie.get(countPart[0])
            self.assertTrue(val == countPart[1], "Trie::get with STORE_COUNT")

    def test_removes(self):
        self.trie.remove('org.example')
        self.trie.remove('com.example')

        self.assertTrue(
            self.trie.get('org.example') is None, "remove single path")
        self.assertTrue(
            self.trie.get('com.example') == 1, "remove double path")
コード例 #7
0
class StoreCountTests(unittest.TestCase):
	
	def setUp(self):
		self.trie = Trie(keyFunction = KEY_DOTTED, storeFunction = STORE_COUNT)
		self.keys = ['com.example', 'com.baz', 'com.example.sub', 'org.example', 'com.example', 'com.example.sub', 'com.example.sub']
		for key in self.keys:
			self.trie.add(key, 1)
	
	def test_has(self):
		for key in self.keys:
			self.assertTrue(self.trie.has(key), "Trie::has")
	
	def test_paths(self):
		for path in self.trie.paths():
			self.assertTrue(path in self.keys, "Trie::paths")
		
		paths = list(self.trie.paths())
		self.assertTrue(len(paths) == 4, "Trie::paths length")
	
	def test_counts(self):
		countParts = {
			'com.example': 2,
			'com.baz': 1,
			'com.example.sub': 3
		}
		
		for countPart in countParts.items():
			val = self.trie.get(countPart[0])
			self.assertTrue(val == countPart[1], "Trie::get with STORE_COUNT")
	
	def test_removes(self):
		self.trie.remove('org.example')
		self.trie.remove('com.example')
		
		self.assertTrue(self.trie.get('org.example') is None, "remove single path")
		self.assertTrue(self.trie.get('com.example') == 1, "remove double path")
コード例 #8
0
    print "\tBuilt Trie of %i words in %s (%0.2f words / second)" % (
        len(t), str(timedelta(seconds=ed - st)), (len(t) * 1.0) / (ed - st))

    print "Prefix graph:\n"

    # the prefix graph is just a simple double loop to find each prefix combination
    prefixes = "abcdefghijklmnopqrstuvwxyz"

    st = time.time()

    print "  %s" % (prefixes)
    print " +" + "-" * 26 + "+"

    for rowPrefix in prefixes:
        rowData = [rowPrefix, "|"]
        for colPrefix in prefixes:
            if t.get(rowPrefix + colPrefix, defaultValue=0) > 0:
                rowData.append('+')
            else:
                rowData.append(" ")
        rowData += ['|', rowPrefix]
        print "".join(rowData)

    print " +" + "-" * 26 + "+"
    print "  %s" % (prefixes)

    ed = time.time()

    print "\nPrefix graph took %s" % (str(timedelta(seconds=ed - st)))
コード例 #9
0
	dictfile.close()
	
	print "\tBuilt Trie of %i words in %s (%0.2f words / second)" % (len(t), str(timedelta(seconds = ed - st)), (len(t) * 1.0) / (ed - st))
	
	print "Prefix graph:\n"
	
	# the prefix graph is just a simple double loop to find each prefix combination
	prefixes = "abcdefghijklmnopqrstuvwxyz"
	
	st = time.time()
	
	print "  %s" % (prefixes)
	print " +" + "-" * 26 + "+"
	
	for rowPrefix in prefixes:
		rowData = [rowPrefix, "|"]
		for colPrefix in prefixes:
			if t.get(rowPrefix + colPrefix, defaultValue = 0) > 0:
				rowData.append('+')
			else:
				rowData.append(" ")
		rowData += ['|', rowPrefix]
		print "".join(rowData)

	print " +" + "-" * 26 + "+"
	print "  %s" % (prefixes)
	
	ed = time.time()
	
	print "\nPrefix graph took %s" % (str(timedelta(seconds = ed - st)))
コード例 #10
0
class StringKeyTests(unittest.TestCase):
    def setUp(self):
        self.trie = Trie()
        self.keys = [
            'bar', 'baz', 'barbell', 'foo', 'food', 'bar', 'bazbuzz', 'bazbuzz'
        ]

        for key in self.keys:
            self.trie.add(key, 1)

    def test_paths(self):
        paths = list(self.trie.paths())
        self.assertTrue(len(paths) == 6, "Trie::paths")

    def test_has(self):
        for key in self.keys:
            self.assertTrue(self.trie.has(key), "Trie::has")

    def test_in(self):
        for key in self.keys:
            self.assertTrue(key in self.trie, "Trie::__contains__")

    def test_get(self):
        for key in self.keys:
            self.assertTrue(self.trie.get(key) is not None, "Trie::get")

    def test_getItem(self):
        for key in self.keys:
            self.assertTrue(self.trie[key] is not None, "Trie::__getitem__")

    def test_remove(self):
        self.trie.remove('bar', 1)
        self.trie.remove('baz', 1)
        self.assertTrue(self.trie.get('bar') == 1, "Trie::remove")
        self.assertTrue(self.trie.get('baz') is None, "Trie::remove")

    def test_removeAll(self):
        self.trie.removeAll('bar')
        self.assertTrue(self.trie.get('bar') is None, "Trie::removeAll")
        self.assertTrue(
            self.trie.get('barbell') is not None,
            "Trie::removeAll retain leaves")

    def test_setItem(self):

        self.trie['blah'] = 1

        self.assertTrue(self.trie.get('blah') == 1, "Trie::__setitem__")

    def test_missingItems(self):
        notIn = ['bubbles', 'barb', 'bazz']

        for key in notIn:
            self.assertTrue(self.trie.get(key) is None, "Missing items")

    def test_singleItems(self):
        for item in ['baz', 'barbell', 'foo', 'food']:
            self.assertTrue(
                self.trie.get(item) == 1, "Trie::add non-duplicates")

    def test_doubleItems(self):
        for item in ['bar', 'bazbuzz']:
            self.assertTrue(
                self.trie.get(item) == [1, 1], "Trie::add duplicates")