class_docstr: Test def add_cyclic(data, x=None, y=None, axis=-1,
                      cyclic=360, precision=1e-4):
  - variations of data, x, and y with and without axis keyword
  - different units of x - cyclic keyword
  - detection of cyclic points - precision keyword
  - error catching
docstr: Catch wrong x size 3d
docstr_tok: ["Catch","wrong","x","size","3d"]
code: def test_invalid_x_size_3d(self):
      """Catch wrong x size 3d"""
      with pytest.raises(ValueError):
          c_data, c_lons = add_cyclic(
              self.data4d, x=self.lon3d[:, :-1, :], axis=1
          )
  
imports: import numpy
  import numpy.ma
  from numpy.testing import assert_array_equal
  import pytest
  from cartopy.util import add_cyclic, add_cyclic_point, has_cyclic
label_desc: Use image node_id 29 for calling the TestAddCyclic obj's underlying member method code with example usage: obj.test_invalid_x_size_3d() without return types