code: def test_equality(self):
      key1a = fake_cloud_client.FakeDatastoreKey("abc", "1")
      key1b = fake_cloud_client.FakeDatastoreKey("abc", "1")
      key2a = fake_cloud_client.FakeDatastoreKey(
          "def", "xyz", parent=key1a
      )
      key2b = fake_cloud_client.FakeDatastoreKey(
          "def", "xyz", parent=key1a
      )
      # key equal to self
      self.assertTrue(key1a == key1a)
      self.assertFalse(key1a != key1a)
      # key equal to the same key
      self.assertTrue(key1a == key1b)
      self.assertFalse(key1a != key1b)
      self.assertTrue(key2a == key2b)
      self.assertFalse(key2a != key2b)
      # key different from other key
      self.assertFalse(key1a == key2a)
      self.assertTrue(key1a != key2a)
      # key not equal to tuple
      self.assertTrue(key1a != key1a.flat_path)
      self.assertFalse(key1a == key1a.flat_path)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import copy
  from io import BytesIO
  import unittest
  from eval_lib.tests import fake_cloud_client
  from six import assertCountEqual
  from six import b
label_desc: Use image node_id 2 for calling the FakeDatastoreKeyTest obj's underlying member method code with example usage: obj.test_equality() without return types