code: def test_validate_arrayNx3(reshape):
      arr = validate_arrayNx3((1, 2, 3))
      assert arr.shape == (1, 3)
      assert np.array_equal(arr, [[1, 2, 3]])
  
      if not reshape:
          msg = "Array has shape (3,) which is not allowed. Shape must be (-1, 3)."
          with pytest.raises(ValueError, match=escape(msg)):
              validate_arrayNx3((1, 2, 3), reshape=False)
  
      arr = validate_arrayNx3([(1, 2, 3), (4, 5, 6)], reshape=reshape)
      assert arr.shape == (2, 3)
  
      msg = (
          "Parameter 'must_have_shape' cannot be set for function `validate_arrayNx3`.\n"
          "Its value is automatically set to `[3, (-1, 3)]`."
      )
      with pytest.raises(ValueError, match=escape(msg)):
          validate_arrayNx3((1, 2, 3), must_have_shape=1)
      msg = "Array has shape () which is not allowed. Shape must be one of [3, (-1, 3)]."
      with pytest.raises(ValueError, match=escape(msg)):
          validate_arrayNx3(0)
      with pytest.raises(ValueError, match="_input"):
          validate_arrayNx3([1, 2, 3, 4], name="_input")
  
imports: from collections import namedtuple
  from re import escape
  import sys
  from typing import Union, get_args, get_origin
  import numpy
  import pytest
  from vtk import vtkTransform
  from pyvista.core import pyvista_ndarray
  from pyvista.core.input_validation.check import _validate_shape_value, check_has_length, check_has_shape, check_is_arraylike, check_is_dtypelike, check_is_finite, check_is_greater_than, check_is_in_range, check_is_instance, check_is_integerlike, check_is_iterable, check_is_iterable_of_some_type, check_is_iterable_of_strings, check_is_less_than, check_is_nonnegative, check_is_number, check_is_real, check_is_scalar, check_is_sequence, check_is_sorted, check_is_string, check_is_string_in_iterable, check_is_subdtype, check_is_type
  from pyvista.core.input_validation.validate import _set_default_kwarg_mandatory, validate_array, validate_array3, validate_arrayN, validate_arrayN_uintlike, validate_arrayNx3, validate_axes, validate_data_range, validate_dtype, validate_number, validate_transform3x3, validate_transform4x4
  from pyvista.core.utilities.arrays import cast_to_tuple_array, vtkmatrix_from_array
label_desc: Use image node_id 14 for calling a global function with example usage: test_validate_arrayNx3(reshape) without return types