Skip to content

Commit

Permalink
Fix tests.
Browse files Browse the repository at this point in the history
First: check_hash_length test was testing only two values for the
hash_size. Changed to check all values from 2 to 20.

Second: check_hash_stored was testing only the default value for the
hash_size. Changed to check all values from 2 to 20.

Third: Add missing tests: test_whash, test_whash_length and
test_whash_stored.
  • Loading branch information
djunzu committed Nov 11, 2017
1 parent 9127ac0 commit ed13537
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 15 deletions.
26 changes: 14 additions & 12 deletions imagehash/tests/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,24 +41,26 @@ def check_hash_algorithm(self, func, image):
distance))
self.assertTrue(distance > 10, emsg)

def check_hash_length(self, func, image, sizes):
def check_hash_length(self, func, image, sizes=range(2,21)):
for hash_size in sizes:
image_hash = func(image, hash_size=hash_size)
emsg = 'hash_size={} is not respected'.format(hash_size)
self.assertEqual(image_hash.hash.size, hash_size**2, emsg)

def check_hash_stored(self, func, image):
image_hash = func(image)
other_hash = imagehash.hex_to_hash(str(image_hash))
emsg = 'stringified hash {} != original hash {}'.format(other_hash,
image_hash)
self.assertEqual(image_hash, other_hash, emsg)
distance = image_hash - other_hash
emsg = ('unexpected hamming distance {}: original hash {} '
'- stringified hash {}'.format(distance, image_hash,
other_hash))
self.assertEqual(distance, 0, emsg)
def check_hash_stored(self, func, image, sizes=range(2,21)):
for hash_size in sizes:
image_hash = func(image, hash_size)
other_hash = imagehash.hex_to_hash(str(image_hash))
emsg = 'stringified hash {} != original hash {}'.format(other_hash,
image_hash)
self.assertEqual(image_hash, other_hash, emsg)
distance = image_hash - other_hash
emsg = ('unexpected hamming distance {}: original hash {} '
'- stringified hash {}'.format(distance, image_hash,
other_hash))
self.assertEqual(distance, 0, emsg)

def check_hash_size(self, func, image, size):
with self.assertRaises(ValueError):
func(image, -1)

2 changes: 1 addition & 1 deletion imagehash/tests/test_average_hash.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def test_average_hash(self):
self.check_hash_algorithm(self.func, self.image)

def test_average_hash_length(self):
self.check_hash_length(self.func, self.image, [8, 20])
self.check_hash_length(self.func, self.image)

def test_average_hash_stored(self):
self.check_hash_stored(self.func, self.image)
Expand Down
2 changes: 1 addition & 1 deletion imagehash/tests/test_dhash.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def test_dhash(self):
self.check_hash_algorithm(self.func, self.image)

def test_dhash_length(self):
self.check_hash_length(self.func, self.image, [8, 20])
self.check_hash_length(self.func, self.image)

def test_dhash_stored(self):
self.check_hash_stored(self.func, self.image)
Expand Down
2 changes: 1 addition & 1 deletion imagehash/tests/test_phash.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def test_phash(self):
self.check_hash_algorithm(self.func, self.image)

def test_phash_length(self):
self.check_hash_length(self.func, self.image, [8, 20])
self.check_hash_length(self.func, self.image)

def test_phash_stored(self):
self.check_hash_stored(self.func, self.image)
Expand Down
18 changes: 18 additions & 0 deletions imagehash/tests/test_whash.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,23 @@
import unittest

import imagehash
import imagehash.tests as tests


class TestBasic(tests.TestImageHash):

def setUp(self):
self.image = self.get_data_image()
self.func = imagehash.whash

def test_whash(self):
self.check_hash_algorithm(self.func, self.image)

def test_whash_length(self):
self.check_hash_length(self.func, self.image, sizes=[2,4,8,16,32,64])

def test_whash_stored(self):
self.check_hash_stored(self.func, self.image, sizes=[2,4,8,16,32,64])


class Test(unittest.TestCase):
Expand Down Expand Up @@ -57,5 +74,6 @@ def test_image_scale_not_2power(self):
with six.assertRaisesRegex(self, AssertionError, emsg):
imagehash.whash(self.image, image_scale=image_scale+1)


if __name__ == '__main__':
unittest.main()

0 comments on commit ed13537

Please sign in to comment.