code: def testSlidingWindowResolverFn_E2E(self):
      mlmd_artifacts = self._insert_artifacts_into_mlmd(
          [0, 1, 2], [0, 0, 0]
      )
  
      with for_each.ForEach(
          canned_resolver_functions.sliding_window(
              channel_utils.artifact_query(
                  artifact_type=test_utils.DummyArtifact
              ),
              window_size=2,
          )
      ) as artifact_pair:
          inputs = {"x": artifact_pair}
      pipeline_node = test_utils.compile_inputs(inputs)
  
      resolved = inputs_utils.resolve_input_artifacts(
          pipeline_node=pipeline_node, metadata_handle=self.mlmd_handle
      )
      self.assertLen(resolved, 2)
  
      expected_spans = [[0, 1], [1, 2]]
      for i, artifacts in enumerate(resolved):
          actual_artifacts = [r.mlmd_artifact for r in artifacts["x"]]
          expected_artifacts = [
              mlmd_artifacts[j] for j in expected_spans[i]
          ]
          self.assertResolvedAndMLMDArtifactListEqual(
              actual_artifacts, expected_artifacts
          )
  
imports: from typing import Sequence
  import tensorflow
  from tfx import types
  from tfx.dsl.control_flow import for_each
  from tfx.dsl.input_resolution import canned_resolver_functions
  from tfx.dsl.input_resolution import resolver_op
  from tfx.dsl.input_resolution.ops import test_utils
  from tfx.orchestration import pipeline
  from tfx.orchestration.portable import inputs_utils
  from tfx.orchestration.portable.input_resolution import exceptions
  from tfx.types import channel_utils
  from tfx.types import resolved_channel
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 23 for calling the CannedResolverFunctionsTest obj's underlying member method code with example usage: obj.testSlidingWindowResolverFn_E2E() without return types