protected void checkOnDefined(Set<DockingActionIf> actions, Class<?> expectedDataType) {

		if (actions == null) {
			actions = getDataPluginActions();
		}

		String dtName = expectedDataType.getName();
		int ix = dtName.lastIndexOf('.');
		if (ix >= 0) {
			dtName = dtName.substring(ix + 1);
		}

		Data d = getContextData();
		assertNotNull("Expected data type: " + dtName, d);
		assertTrue("Expected data type: " + dtName, expectedDataType.isInstance(d.getDataType()));

		DataType dt = d.getDataType();

		boolean onByteWordData = true;
		boolean onFloatDoubleData = true;
		boolean onCharData = true;

//		boolean onByteWordData = (expectedDataType.equals(ByteDataType.class)
//			|| expectedDataType.equals(WordDataType.class)
//			|| expectedDataType.equals(DWordDataType.class)
//			|| expectedDataType.equals(QWordDataType.class));
//
//		boolean onFloatDoubleData = (expectedDataType.equals(FloatDataType.class)
//			|| expectedDataType.equals(DoubleDataType.class));
//
//		boolean onCharData = (expectedDataType.equals(AsciiDataType.class)
//			|| expectedDataType.equals(StringDataType.class)
//			|| expectedDataType.equals(UnicodeDataType.class));

		boolean hasSettings = dt.getSettingsDefinitions().length != 0;

		String caseName = "On " + dtName + " at: " + getCurrentLocation();

		ProgramSelection sel = getCurrentSelection();

		boolean hasSelection = sel != null && !sel.isEmpty();
		boolean hasInteriorSelection = hasSelection && sel.getInteriorSelection() != null;
		boolean hasNormalUnitSelection = hasSelection && !hasInteriorSelection;

		Data pdata = d.getParent();

		checkAction(actions, CREATE_STRUCTURE, hasSelection, caseName);
		checkAction(actions, EDIT_DATA_TYPE,
			(pdata != null && (pdata.isStructure() || pdata.isUnion())) || (dt instanceof Enum),
			caseName);
		checkAction(actions, CREATE_ARRAY, true, caseName);
		checkAction(actions, DEFAULT_SETTINGS,
			(!hasSelection || isSelectionJustSingleDataInstance(sel, d)) && hasSettings, caseName);
		checkAction(actions, DATA_SETTINGS, hasNormalUnitSelection || hasSettings, caseName);
		checkAction(actions, CYCLE_FLOAT_DOUBLE_LONGDOUBLE, onFloatDoubleData, caseName);
		checkAction(actions, CYCLE_BYTE_WORD_DWORD_QWORD, onByteWordData, caseName);
		checkAction(actions, CYCLE_CHAR_STRING_UNICODE, onCharData, caseName);
		checkAction(actions, DEFINE_BYTE, true, caseName);
		checkAction(actions, DEFINE_WORD, true, caseName);
		checkAction(actions, DEFINE_DWORD, true, caseName);
		checkAction(actions, DEFINE_QWORD, true, caseName);
		checkAction(actions, DEFINE_FLOAT, true, caseName);
		checkAction(actions, DEFINE_DOUBLE, true, caseName);
		checkAction(actions, DEFINE_TERM_CSTRING, true, caseName);
		checkAction(actions, DEFINE_POINTER, true, caseName);
	}
Test MNEMONIC data setting
@param testDefaultSetting if true test default setting, else test instance setting for data2
@param insideStruct data are inside two structure instances
@param commonStruct data structures are the same type
@param data1 data at some location with same type as data2
@param data2 data at current location
@throws Exception
Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/data/AbstractDataActionTest.java