class_docstr: Tests of HinSAGELinkGenerator class
code: def test_HinSAGELinkGenerator_shuffle(self):
      def test_edge_consistency(shuffle):
          G = example_hin_1({"B": 1, "A": 1})
          edges = [
              (1, 4),
              (1, 5),
              (0, 4),
              (0, 5),
          ]  # selected ('movie', 'user') links
          data_size = len(edges)
          edge_labels = np.arange(data_size)
  
          mapper = HinSAGELinkGenerator(
              G,
              batch_size=2,
              num_samples=[0],
              head_node_types=["A", "B"],
          ).flow(edges, edge_labels, shuffle=shuffle)
  
          assert len(mapper) == 2
          for batch in range(len(mapper)):
              nf, nl = mapper[batch]
              e1 = edges[nl[0]]
              e2 = edges[nl[1]]
              assert nf[0][0, 0, 0] == e1[0]
              assert nf[1][0, 0, 0] == e1[1]
              assert nf[0][1, 0, 0] == e2[0]
              assert nf[1][1, 0, 0] == e2[1]
  
      test_edge_consistency(True)
      test_edge_consistency(False)
  
imports: import numpy
  import networkx
  import pytest
  import random
  from stellargraph.mapper import *
  from stellargraph.core.graph import *
  from stellargraph.data.unsupervised_sampler import *
  from ..test_utils.graphs import example_graph, example_graph_random, example_hin_1, repeated_features, weighted_tree
  from ..None import test_utils
label_desc: Use image node_id 5 for calling the Test_HinSAGELinkGenerator obj's underlying member method code with example usage: obj.test_HinSAGELinkGenerator_shuffle() without return types