File: test_murmurhash3.py

package info (click to toggle)
python-azure 20250603%2Bgit-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 851,724 kB
  • sloc: python: 7,362,925; ansic: 804; javascript: 287; makefile: 195; sh: 145; xml: 109
file content (43 lines) | stat: -rw-r--r-- 1,401 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# The MIT License (MIT)
# Copyright (c) Microsoft Corporation. All rights reserved.

import struct
import unittest

import pytest

from azure.cosmos._cosmos_integers import _UInt128
from azure.cosmos._cosmos_murmurhash3 import murmurhash3_128


@pytest.mark.cosmosEmulator
class TestMurmurHash3(unittest.TestCase):
    """Python Murmurhash3 Tests and its compatibility with backend implementation..
        """
    string_low_value = 2792699143512860960
    string_high_value = 15069672278200047189
    test_seed = _UInt128(0, 0)
    float_low_value = 16628891264555680919
    float_high_value = 12953474369317462

    def test_float_hash(self):
        ba = bytearray(struct.pack("d", 374.0))
        ret = murmurhash3_128(ba, self.test_seed)
        self.assertEqual(self.float_low_value, ret.get_low().value)
        self.assertEqual(self.float_high_value, ret.get_high().value)

    def test_string_hash(self):
        s = "afdgdd"  # cspell:disable-line
        ba = bytearray()
        ba.extend(s.encode('utf-8'))
        ret = murmurhash3_128(ba, self.test_seed)
        self.assertEqual(self.string_low_value, ret.get_low().value)
        self.assertEqual(self.string_high_value, ret.get_high().value)


if __name__ == '__main__':
    try:
        unittest.main()
    except SystemExit as inst:
        if inst.args[0] is True:  # raised by sys.exit(True) when tests failed
            raise