code: def _TestPooling(
      self, forward_op, backward_op, pool_grad_grad_func=None
  ):
      # VALID padding
      self._VerifyValues(
          forward_op,
          backward_op,
          input_sizes=[1, 3, 3, 3],
          ksize=[1, 2, 2, 1],
          strides=[1, 2, 2, 1],
          padding="VALID",
          pool_grad_grad_func=pool_grad_grad_func,
      )
  
      # SAME padding
      self._VerifyValues(
          forward_op,
          backward_op,
          input_sizes=[1, 2, 3, 3],
          ksize=[1, 2, 2, 1],
          strides=[1, 2, 2, 1],
          padding="SAME",
          pool_grad_grad_func=pool_grad_grad_func,
      )
  
      # SAME padding, non square window
      self._VerifyValues(
          forward_op,
          backward_op,
          input_sizes=[1, 2, 2, 1],
          ksize=[1, 1, 2, 1],
          strides=[1, 1, 1, 1],
          padding="SAME",
          pool_grad_grad_func=pool_grad_grad_func,
      )
  
      # VALID padding, uneven stride
      self._VerifyValues(
          forward_op,
          backward_op,
          input_sizes=[1, 4, 4, 1],
          ksize=[1, 2, 2, 1],
          strides=[1, 1, 2, 1],
          padding="VALID",
          pool_grad_grad_func=pool_grad_grad_func,
      )
      self._VerifyValues(
          forward_op,
          backward_op,
          input_sizes=[1, 4, 4, 1],
          ksize=[1, 2, 2, 1],
          strides=[1, 2, 1, 1],
          padding="VALID",
          pool_grad_grad_func=pool_grad_grad_func,
      )
  
      # SAME padding, size 4 input
      self._VerifyValues(
          forward_op,
          backward_op,
          input_sizes=[1, 4, 4, 4],
          ksize=[1, 2, 2, 1],
          strides=[1, 2, 2, 1],
          padding="SAME",
          pool_grad_grad_func=pool_grad_grad_func,
      )
  
      # SAME padding, size 8 input
      self._VerifyValues(
          forward_op,
          backward_op,
          input_sizes=[1, 8, 8, 8],
          ksize=[1, 3, 3, 1],
          strides=[1, 2, 2, 1],
          padding="SAME",
          pool_grad_grad_func=pool_grad_grad_func,
      )
  
imports: import numpy
  from tensorflow.compiler.tests import xla_test
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import errors
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import tensor
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import gen_nn_ops
  from tensorflow.python.ops import nn_ops
  from tensorflow.python.platform import googletest
label_desc: Use image node_id 3 for calling the PoolGradTest obj's underlying member method code with example usage: obj._TestPooling(forward_op, backward_op, pool_grad_grad_func) without return types