### Question:
FunctionDefinitionBase implements FunctionDefinition { public DataType<O> getDataType() { return this.dataTypeReturn; } protected  FunctionDefinitionBase(Identifier idIn, DataType<O> returnDataTypeIn, DataType<I> argumentDataTypeIn, boolean returnsBagIn); String getShortFunctionId(); String getShortDataTypeId(Identifier identifier); Status getFunctionStatus(Status originalStatus); @Override Identifier getId(); @Override Identifier getDataTypeId(); DataType<O> getDataType(); DataType<I> getDataTypeArgs(); @Override boolean returnsBag();  }### Answer:
@Test public void testGetDataType() { FunctionDefinition fdstring = StdFunctions.FD_STRING_NORMALIZE_SPACE; assertEquals(XACML3.ID_DATATYPE_STRING, fdstring.getDataTypeId()); FunctionDefinition fdboolean = StdFunctions.FD_STRING_EQUAL; assertEquals(XACML3.ID_DATATYPE_BOOLEAN, fdboolean.getDataTypeId()); FunctionDefinition fdinteger = StdFunctions.FD_INTEGER_ADD; assertEquals(XACML3.ID_DATATYPE_INTEGER, fdinteger.getDataTypeId()); FunctionDefinition fddouble = StdFunctions.FD_DOUBLE_ADD; assertEquals(XACML3.ID_DATATYPE_DOUBLE, fddouble.getDataTypeId()); FunctionDefinition fddate = StdFunctions.FD_DATE_BAG; assertEquals(XACML3.ID_DATATYPE_DATE, fddate.getDataTypeId()); FunctionDefinition fdtime = StdFunctions.FD_TIME_BAG; assertEquals(XACML3.ID_DATATYPE_TIME, fdtime.getDataTypeId()); FunctionDefinition fddateTime = StdFunctions.FD_DATETIME_BAG; assertEquals(XACML3.ID_DATATYPE_DATETIME, fddateTime.getDataTypeId()); FunctionDefinition fddayTimeDuration = StdFunctions.FD_DAYTIMEDURATION_FROM_STRING; assertEquals(XACML3.ID_DATATYPE_DAYTIMEDURATION, fddayTimeDuration.getDataTypeId()); FunctionDefinition fdyearMonthDuration = StdFunctions.FD_YEARMONTHDURATION_FROM_STRING; assertEquals(XACML3.ID_DATATYPE_YEARMONTHDURATION, fdyearMonthDuration.getDataTypeId()); FunctionDefinition fdanyURI = StdFunctions.FD_ANYURI_FROM_STRING; assertEquals(XACML3.ID_DATATYPE_ANYURI, fdanyURI.getDataTypeId()); FunctionDefinition fdhexBinary = StdFunctions.FD_HEXBINARY_UNION; assertEquals(XACML3.ID_DATATYPE_HEXBINARY, fdhexBinary.getDataTypeId()); FunctionDefinition fdbase64Binary = StdFunctions.FD_BASE64BINARY_UNION; assertEquals(XACML3.ID_DATATYPE_BASE64BINARY, fdbase64Binary.getDataTypeId()); FunctionDefinition fdrfc822Name = StdFunctions.FD_RFC822NAME_FROM_STRING; assertEquals(XACML3.ID_DATATYPE_RFC822NAME, fdrfc822Name.getDataTypeId()); FunctionDefinition fdx500Name = StdFunctions.FD_X500NAME_FROM_STRING; assertEquals(XACML3.ID_DATATYPE_X500NAME, fdx500Name.getDataTypeId()); FunctionDefinition fdipAddress = StdFunctions.FD_IPADDRESS_FROM_STRING; assertEquals(XACML3.ID_DATATYPE_IPADDRESS, fdipAddress.getDataTypeId()); FunctionDefinition fddnsName = StdFunctions.FD_DNSNAME_FROM_STRING; assertEquals(XACML3.ID_DATATYPE_DNSNAME, fddnsName.getDataTypeId()); }