code: def test_ndc_raysampler_n_ray_total_is_none(self):
      sampler = NearFarRaySampler()
      message = (
          "If you introduce the support of `n_rays_total` for {0}, please handle the "
          "packing and unpacking logic for the radii and lengths computation."
      )
      self.assertIsNone(
          sampler._training_raysampler._n_rays_total,
          message.format(type(sampler)),
      )
      self.assertIsNone(
          sampler._evaluation_raysampler._n_rays_total,
          message.format(type(sampler)),
      )
  
      sampler = AdaptiveRaySampler()
      self.assertIsNone(
          sampler._training_raysampler._n_rays_total,
          message.format(type(sampler)),
      )
      self.assertIsNone(
          sampler._evaluation_raysampler._n_rays_total,
          message.format(type(sampler)),
      )
  
imports: import unittest
  from itertools import product
  from typing import Tuple
  from unittest.mock import patch
  import torch
  from pytorch3d.common.compat import meshgrid_ij
  from pytorch3d.implicitron.models.renderer.base import EvaluationMode
  from pytorch3d.implicitron.models.renderer.ray_sampler import AdaptiveRaySampler, compute_radii, NearFarRaySampler
  from pytorch3d.renderer.cameras import CamerasBase, FoVOrthographicCameras, FoVPerspectiveCameras, OrthographicCameras, PerspectiveCameras
  from pytorch3d.renderer.implicit.utils import HeterogeneousRayBundle
  from tests.common_camera_utils import init_random_cameras
  from tests.common_testing import TestCaseMixin
label_desc: Use image node_id 1 for calling the TestRaysampler obj's underlying member method code with example usage: obj.test_ndc_raysampler_n_ray_total_is_none() without return types