code: def _check_features_are_permuted(
      self, inp: Tensor, perm_inp: Tensor, mask: Tensor
  ) -> None:
      permuted_features = mask.expand_as(inp[0])
      unpermuted_features = permuted_features.bitwise_not()
  
      self.assertTrue(inp.dtype == perm_inp.dtype)
      self.assertTrue(inp.shape == perm_inp.shape)
      self.assertTrue(
          (
              inp[:, permuted_features]
              != perm_inp[:, permuted_features]
          ).any()
      )
      self.assertTrue(
          (
              inp[:, unpermuted_features]
              == perm_inp[:, unpermuted_features]
          ).all()
      )
  
file_path: captum/tests/attr/test_feature_permutation.py
imports: from typing import List, Tuple
  import torch
  from captum.attr._core.feature_permutation import _permute_feature, FeaturePermutation
  from tests.helpers.basic import assertTensorAlmostEqual, BaseTest
  from tests.helpers.basic_models import BasicModelWithSparseInputs
  from torch import Tensor
label_desc: Use image node_id 1 for calling the Test obj's underlying member method code with example usage: obj._check_features_are_permuted(inp, perm_inp, mask) without return types