code: def test_shape_stride(self):
      t = Tensor.rand(3, 2, 0)
      assert t.shape == (3, 2, 0)
      # numpy has stride 0, 0, 0; torch has stride 2, 1, 1
      assert t.lazydata.st.real_strides() == (0, 0, 1)
  
      t = Tensor.rand(3, 0, 2)
      assert t.shape == (3, 0, 2)
      # numpy has stride 0, 0, 0; torch has stride 2, 2, 1
      assert t.lazydata.st.real_strides() == (0, 2, 1)
  
      t = Tensor.rand(0, 0, 0)
      assert t.shape == (0, 0, 0)
      # numpy has stride 0, 0, 0; torch has stride 1, 1, 1
      assert t.lazydata.st.real_strides() == (0, 0, 1)
  
imports: import numpy
  import torch
  import unittest, copy
  import mmap
  from tinygrad import Tensor, Device, dtypes
  from tinygrad.helpers import temp
  from extra.gradcheck import numerical_jacobian, jacobian, gradcheck
label_desc: Use image node_id 1 for calling the TestZeroShapeTensor obj's underlying member method code with example usage: obj.test_shape_stride() without return types