code: def test_hash_normalization(self):
      # Test for a bug encountered while changing long_hash.
      #
      # Given objects x and y, it should be possible for y's
      # __hash__ method to return hash(x) in order to ensure that
      # hash(x) == hash(y).  But hash(x) is not exactly equal to the
      # result of x.__hash__(): there's some internal normalization
      # to make sure that the result fits in a C long, and is not
      # equal to the invalid hash value -1.  This internal
      # normalization must therefore not change the result of
      # hash(x) for any x.
  
      class HalibutProxy:
          def __hash__(self):
              return hash("halibut")
  
          def __eq__(self, other):
              return other == "halibut"
  
      x = {"halibut", HalibutProxy()}
      self.assertEqual(len(x), 1)
  
imports: import unittest
  import random
  import math
  import sys
  import operator
  from decimal import Decimal
  from fractions import Fraction
label_desc: Use image node_id 8 for calling the HashTest obj's underlying member method code with example usage: obj.test_hash_normalization() and returns: hash, unknown