@Test
	public void testDdDFrag2FragNotInView() throws Exception {
		// drag a fragment not in the view onto another fragment not in the
		// view.
		// verify that code units are merged
		// verify that the merged fragment are removed from the program
		// verify that the view is not affected

		// put .text in the view
		ProgramNode textNode = root.getChild(".text");
		setViewPaths(textNode);
		AddressSet set = plugin.getView();

		ProgramNode subrNode = root.getChild("Subroutines");
		visitNode(subrNode);
		ProgramNode node = subrNode.getChild("01004a15");
		setSelectionPath(node);

		ProgramNode funcNode = root.getChild("Functions");
		visitNode(funcNode);
		ProgramNode sscanfNode = funcNode.getChild("sscanf");
		AddressSet fragSet = new AddressSet(sscanfNode.getFragment());

		dragNodes_Move(node, Arrays.asList(sscanfNode));

		expandNode(root);

		assertNull(listing.getFragment("Main Tree", "sscanf"));
		assertTrue(plugin.getView().hasSameAddresses(set));
		assertTrue(node.getFragment().contains(fragSet));
		assertEquals(0, findNodes("sscanf").length);

		undo();
		expandNode(root);
		assertTrue(plugin.getView().hasSameAddresses(set));
		assertTrue(findNodes("sscanf").length > 0);

		redo();
		expandNode(root);

		assertNull(listing.getFragment("Main Tree", "sscanf"));
		assertTrue(plugin.getView().hasSameAddresses(set));

		subrNode = root.getChild("Subroutines");
		visitNode(subrNode);
		ProgramNode n = subrNode.getChild("01004a15");
		assertTrue(n.getFragment().contains(fragSet));
		assertEquals(0, findNodes("sscanf").length);

	}
Tests for drag/drop/reorder for copy and move in the program tree.
Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/programtree/ProgramTreePlugin3Test.java