@Test
	public void testSetInvalidWordModel() throws Exception {
		dialog = getDialog();
		Container container = dialog.getComponent();

		// set word model to an invalid model
		JTextField tf = (JTextField) findComponentByName(container, "modelDefault");
		tf.setText("DoesNotExist.sng");

		pressButtonByText(dialog.getComponent(), "Search");
		String statusText = dialog.getStatusText();
		assertEquals("Select a valid model file (e.g., 'StringModel.sng') or leave blank.",
			statusText);

		// Setting the model file to blank (or spaces) indicates we don't want a model
		// file to be used and we don't care about filtering by high-confidence words.
		tf.setText("  ");

		StringTableProvider provider = performSearch();

		ToggleDockingAction showIsWordAction =
			(ToggleDockingAction) getInstanceField("showIsWordAction", provider);
		assertNull(showIsWordAction);

		StringTableModel model = (StringTableModel) getInstanceField("stringModel", provider);
		waitForTableModel(model);

		// There won't be an "Is Word" column because we don't have a valid model.
		// Also verify that "Ascii" column should be there.
		assertEquals(-1, model.findColumn("Is Word"));
		assertEquals(4, model.findColumn("String View"));
	}
*****************************************************
		//***********TEST SELECTING ROW IN TABLE*******************
		// ********* test that selecting a row does the following:
		//**********************************************************
		selectRow(table, 0);

		// test that the row is really selected
		int[] ts = table.getSelectedRows();
		assertEquals(1, ts.length);
		assertEquals(0, ts[0]);

		// is the make string button enabled (should be)
		JButton makeStringButton = (JButton) findButton(provider.getComponent(), "Make String");
		assertTrue(makeStringButton.isEnabled());

		// is the make ascii button enabled
		JButton makeAsciiButton = (JButton) findButton(provider.getComponent(), "Make Char Array");
		assertTrue(makeAsciiButton.isEnabled());

		DockingAction makeStringAction =
			(DockingAction) getInstanceField("makeStringAction", provider);

		toggleDefinedStateButtons(provider, true, true, false, false);
		waitForTableModel(model);
		int selectedRow = table.getSelectedRow();

		performAction(makeStringAction, model);

		// test that the string was actually made correctly
		Data d = listing.getDataAt(addr(0x404f10));
		DataType dt = d.getBaseDataType();
		assertTrue(dt instanceof PascalUnicodeDataType);

		// test that the string len is correct to get the end of chars
		assertEquals(22, d.getLength());

		// test that the label was made
		Symbol sym = program.getSymbolTable().getPrimarySymbol(addr(0x404f10));
		assertEquals("pu_String9", sym.getName());

		AddressBasedLocation location =
			(AddressBasedLocation) getModelValue(model, selectedRow, addressColumnIndex);
		Address address = location.getAddress();
		if (address.getOffset() != 0x404f10) {
			TableSortState tableSortState = model.getTableSortState();
			Msg.debug(this, "sort state = " + tableSortState); // should be address column
			List<FoundString> modelData = model.getModelData();
			Msg.debug(this,
				"selected model row address is " + address.getOffset() + " expected " + 0x404f10);
			for (int i = 0; i < modelData.size(); i++) {
				Msg.debug(this,
					"row " + i + "  addr = " + getModelValue(model, i, addressColumnIndex));
			}
			Assert.fail();
		}

		// test that the table was updated with the label and preview
		assertEquals("pu_String9", getModelValue(model, selectedRow, labelColumnIndex).toString());

		data = (CodeUnitTableCellData) getModelValue(model, selectedRow, previewColumnIndex);
		assertEquals("p_unicode u\"\\rString9\\n\\r\"", data.getDisplayString());

		stringData = (String) getModelValue(model, selectedRow, isWordColumnIndex);
		assertEquals("true", stringData);

		// test that the String Type is correct
		assertEquals("PascalUnicode",
			getModelValue(model, selectedRow, stringTypeColumnIndex).toString());

		// check that the selected row in the table moves to the next row
		ts = table.getSelectedRows();
		assertEquals(1, ts.length);
		assertEquals(selectedRow + 1, ts[0]);

		// Test Pascal 255
		// select the fourth row
		selectRows(table, addr(0x0405d80));
		selectedRow = table.getSelectedRow();
		performAction(makeStringAction, model);

		// test that the pascal 255 string was actually made correctly
		d = listing.getDataAt(addr(0x405d80));
		dt = d.getBaseDataType();
		assertTrue(dt instanceof PascalString255DataType);

		// test that the string len is correct to get the end of chars
		assertEquals(6, d.getLength());

		// test that the label was made
		sym = program.getSymbolTable().getPrimarySymbol(addr(0x405d80));
		assertEquals("p_Test1", sym.getName());

		// test that the table was updated with the label and preview
		assertEquals("p_Test1", getModelValue(model, selectedRow, labelColumnIndex).toString());

		data = (CodeUnitTableCellData) getModelValue(model, selectedRow, previewColumnIndex);
		assertEquals("p_string255 \"Test1\"", data.getDisplayString());

		stringData = (String) getModelValue(model, selectedRow, isWordColumnIndex);
		assertEquals("true", stringData);

		// test that the String Type is correct
		assertEquals("PascalString255",
			getModelValue(model, selectedRow, stringTypeColumnIndex).toString());

		// Test Pascal
		// select the sixth row
		selectRows(table, addr(0x405d91));
		selectedRow = table.getSelectedRow();
		performAction(makeStringAction, model);

		// test the dialog message once the run is finished
		// test that the pascal string was actually made correctly
		d = listing.getDataAt(addr(0x405d91));
		dt = d.getBaseDataType();
		assertTrue(dt instanceof PascalStringDataType);

		// test that the string len is correct to get the end of chars
		assertEquals(9, d.getLength());

		// test that the label was made
		sym = program.getSymbolTable().getPrimarySymbol(addr(0x405d91));
		assertEquals("p_p2Test1", sym.getName());

		// test that the table was updated with the label and preview
		assertEquals("p_p2Test1", getModelValue(model, selectedRow, labelColumnIndex).toString());

		data = (CodeUnitTableCellData) getModelValue(model, selectedRow, previewColumnIndex);
		assertEquals("p_string \"p2Test1\"", data.getDisplayString());

		stringData = (String) getModelValue(model, selectedRow, isWordColumnIndex);
		assertEquals("false", stringData);

		// test that the String Type is correct
		assertEquals("PascalString",
			getModelValue(model, selectedRow, stringTypeColumnIndex).toString());

	}

	/*
Try to run a search with first an invalid string model, then no model, to ensure that
the filter and columns related to high-confidence words are not shown.
Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/string/StringTableSearchTest.java