3 """NuHash, by LoRd_MuldeR <MuldeR2@GMX.de>
4 This work has been released under the CC0 1.0 Universal license!"""
6 from nuhash
import NuHash
12 # ========================================================================
14 # ========================================================================
16 class NuHashTests(unittest
.TestCase
):
19 def set_term_title(text
):
20 if sys
.platform
.lower().startswith(('win32', 'msys', 'cygwin')):
21 ctypes
.windll
.kernel32
.SetConsoleTitleW(text
)
22 elif sys
.platform
.lower().startswith(('linux', 'freebsd', 'openbsd', 'netbsd', 'darwin', 'aix')):
23 sys
.stdout
.write("\33]0;{}\a".format(text
))
26 def run_testcase(self
, iterations
, expected
, input):
27 if isinstance(input, str):
28 input = input.encode(encoding
='UTF-8', errors
='strict')
30 for _iter
in range(iterations
):
32 if _iter
& 0xFFFF == 0:
33 self
.set_term_title("{:.2f}%".format(_iter
/ iterations
* 100.0))
34 digest
= nuhash
.do_final().hex()
35 self
.set_term_title("100%")
36 print("{} - ".format(digest
), end
= '', sep
= '', flush
= True)
37 self
.assertEqual(expected
.lower(), digest
.lower())
39 # ------------------------------------------------------------------------
41 # ------------------------------------------------------------------------
43 def test_function1(self
):
46 "d7964fe1bec2b5ecf21ecc88c86ce4f1e89fb1ef3669d52e34eb049d7fd6c42d4b2bbeeeb70d12c3fcaf43dd2229abc9",
49 def test_function2(self
):
52 "b3f13f534034ae8d645d410e8828673761fe2d697218879f9ea528d976ba2e15a3f7485105e612b9a46cb3988635a70f",
53 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq")
55 def test_function3(self
):
58 "63703476f4ffce4a8c758d0d3b91a857b9a2e3433ee864f931ba328fa7247b1b0ac9c2e0279243b83051aafac6a7e710",
59 "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu")
61 def test_function4(self
):
64 "c6808aeb911c8837cee2e6867e589ab28526a8153494cf35a40c4bd6e20312da33cac4a390cd3b51a2eb4226e60b53e1",
67 def test_function5(self
):
70 "bcca6bc8d113dd3fc171d743ac7ad2d3e63163ea7107d3c78517cf5b53ee0b2f4a0fe079e6a74df350c667b7cfe3cf09",
71 "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno")
73 def test_function6(self
):
76 "56770e133b9eb4205f11824ad7280f5c31bc04dd333d1844b3589ab8b94ab95dc09b77be9a8128d7f155fa73de617597",
77 "g4tB,=[TU%/|8lv_c5Y?F9Sqs1PnV#bNO6DW\\0em~p<ifJhM(2&Qo}`!-*:jrZ{KGX]$zkuLd+)xwC^.\"@AIHR;y'a>3E7")
79 def test_function7(self
):
82 "9a8579bb88112b2f3285781a61348d7b04a5632fec12a73a7e0e367a556794a24a32ca7bb14da68eaed83e99c2f8f4c0",
83 b
'\xa4,U\xa5\xb0^\xd83\xf3\x18\xfb\xa7 \xc74\xd7\x1d-F\x8d\xca\x8a\xe7\xfch[T\xda\xf9\xc3vb\xa9=9\xbf\x17\xb7\xb2\x8c\x10\xa2\x1f\xe3tjJlz\x92\xd1R\xea\x88\xbak\xd6d\x96\x9e\xe6LGB\xc5Q\xf2P\xf4{O\xe9\x87m\x94K#\xf0E\x1a\x9a\xe4\x91\x0f;\xb4q\x82\x99\xc9I\xe5\xbe(\x93\x98*\xd9seX\xc0\x83H\x8f\x03\x14@\x1b$\x1e\xa6?\xf7g\xab7\x06\xac\xf6f\xb6\xdd\x1c\n5\x9fV\x15\xec\xf1+|W]\x02\xed\xa8c\x16u\xdc\x9b\\}\r_\xfd\x05\xa0n\x90\x95\x85\xd2\x13a\x08\xa3\x01\xc8\xd3\x84\xaa\t\xf5po\xde\xb9\x04\xb5\xdb0\xbc\x07\x8e\xfe\x89`&NY\xcb6\x86\x11r\xe2\xc6\xaf:\x8b\x7f\xfaA8\xdf\xee/2\xa1\'i1)C\xc4\x9cw!D\xb8y\xd0\xad\x97\xe0\xe1\x0e\x19."\xbd\x80\xe8\xb1\xf8M>\xc2~\x0c\xb3\x81\x12\xcc\xc1S\xcfx\xce<\xd5Z\xbb\x9d\xeb\xef\xcd\xff\x0b%\xae\xd4')
85 def test_function8(self
):
88 "fbf4444b0329f508bfc6cf44920b311a718e5f4c4c1af978e78223ec3579365ff5d15c16bb5a33d69cb36f3d40564757",
89 b
'\xb5\xc8\x9b\xd1\xbaf)\x19\xd20\xed&[\xc4\x91M\x14\xf7\x165Zi\xfe\x99\xa5I\xf1\x94+\xbc\xdcL\xddO\xca\x1b\x88\x9c\xa9\xf6s/\xfd?@9\x13\xda\xb3q\xf4\xde\x7f\x02=dxz\x17\n\x93\xdf\xeb\x9f\x07\x04y\x8c\x98\xb8(\x80\xad\x1f\xf2\x96k\xbdE\xd9\xfa,V\xce\xf0\x87#"\xea\xc5\'\xd3c\xaf$\xc7\xb7\x06\xe4u\x83{\xbf.\xa4\xef\xf5\x12]`\x95\xa7S\x11t\xb4\xa0\x9e\xe3\xae\xbbUrY\xa6\x9d\xd5\x89m\x8fJ\x0c\x1d\xcd*\xfb\xee\xd7\xc3\xf3%b\x8e\xb0\xb2\xc28<joN;\x08\xd4\x866\x18\\\xe0\x1e\x81w\xf8h\xdbXT\xff\x97~a\xc0Q\xc9l\xe5\x82\xbe\xcf2C\x01:^PG\xa14\xcc\rp\xac\xc6D\x9a>\x10\x0e\xec\x03\xe2n\xaa\xfc}71K\xe6\xb6\xc1\x15\x8b\x05\x85\x8ag\xf9\xab\x8d\xe1\xa2H\x1c\xcbRev\x0f\x1a!\xa8\xa3BA\x90\x92\xd0\x84\t-3_\xd8|\xb1\xb9W\xe8\xd6\x0b \xe7F\xe9')
91 # ========================================================================
93 # ========================================================================
95 if __name__
== '__main__':
96 if sys
.hexversion
< 0x3000000:
97 print("Python version 3.0 or newer is required !!!")
99 test_suite
= unittest
.TestSuite()
100 for name
in filter(lambda s
: s
.startswith('test_function'), dir(NuHashTests
)):
101 test_suite
.addTest(NuHashTests(name
))
102 runner
= unittest
.TextTestRunner(verbosity
= 2)
103 runner
.run(test_suite
)