def METHOD_NAME(self):
    # Survey parameters
    data_type = "volt"
    end_points = np.array([-100, 50, 100, -50])
    # Create sources and data object
    source_list = []
    for stype in self.survey_type:
        source_list = source_list + utils.generate_dcip_sources_line(
            stype,
            data_type,
            "3D",
            end_points,
            self.topo,
            self.num_rx_per_src,
            self.station_spacing,
        )
    survey3D = dc.survey.Survey(source_list)
    dobs = np.random.rand(survey3D.nD)
    dunc = 1e-3 * np.ones(survey3D.nD)
    data3D = data.Data(survey3D, dobs=dobs, standard_deviation=dunc)
    # Write DCIP3D files
    io_utils.write_dcipoctree_ubc(
        self.dir_path + "/dcip3d_general.txt",
        data3D,
        "volt",
        "dobs",
        format_type="general",
        comment_lines="GENERAL FORMAT",
    )
    io_utils.write_dcipoctree_ubc(
        self.dir_path + "/dcip3d_surface.txt",
        data3D,
        "volt",
        "dobs",
        format_type="surface",
        comment_lines="SURFACE FORMAT",
    )
    # Read DCIP3D files
    data_general = io_utils.read_dcipoctree_ubc(
        self.dir_path + "/dcip3d_general.txt", "volt"
    )
    data_surface = io_utils.read_dcipoctree_ubc(
        self.dir_path + "/dcip3d_surface.txt", "volt"
    )
    # Compare
    passed = np.all(
        np.isclose(data3D.dobs, data_general.dobs)
        & np.isclose(data3D.dobs, data_surface.dobs)
    )
    self.assertTrue(passed)
    print("READ/WRITE METHODS FOR DCIP3D DATA PASSED!")