code: def test_pointing_game(
      model,
      data: dict,
      params: dict,
      expected: Union[bool, dict],
  ):
      init_params = params.get("init", {})
      call_params = params.get("call", {})
  
      scores = PointingGame(**init_params)(
          model=model,
          x_batch=data["x_batch"],
          y_batch=data["y_batch"],
          a_batch=data["a_batch"],
          s_batch=data["s_batch"],
          **call_params,
      )
      if isinstance(expected, bool):
          assert all(s == expected for s in scores), "Test failed."
      elif isinstance(expected, dict):
          assert isinstance(scores, expected["type"]), "Test failed."
      elif isinstance(expected, list):
          assert all(
              s == e for s, e in zip(scores, expected)
          ), "Test failed."
      else:
          assert all(
              s > expected["min"] for s in scores
          ), "Test failed."
          assert all(
              s < expected["max"] for s in scores
          ), "Test failed."
  
imports: from typing import Union, Optional, Dict
  import pytest
  from pytest_lazyfixture import lazy_fixture
  import numpy
  import torch
  import pickle
  from quantus.functions.explanation_func import explain
  from quantus.functions.mosaic_func import mosaic_creation
  from quantus.helpers.model.model_interface import ModelInterface
  from quantus.helpers.model.models import LeNetAdaptivePooling
  from quantus.metrics.localisation import AttributionLocalisation, AUC, Focus, PointingGame, RelevanceMassAccuracy, RelevanceRankAccuracy, TopKIntersection
label_desc: Use image node_id 26 for calling a global function with example usage: test_pointing_game(model, data, params, expected) without return types