	@Test
	public void testYearMonthDuration_Equal_V1() {

		
		XPathYearMonthDuration dur1 = new XPathYearMonthDuration(1, 3, 5);
		XPathYearMonthDuration dur2 = new XPathYearMonthDuration(1, 3, 5);
		XPathYearMonthDuration differentDur = new XPathYearMonthDuration(-1, 4, 7);

		FunctionArgumentAttributeValue attrDur1 = null;
		FunctionArgumentAttributeValue attrDur2 = null;
		FunctionArgumentAttributeValue attrDifferentDur = null;		
		try {
			attrDur1 = new FunctionArgumentAttributeValue(DataTypes.DT_YEARMONTHDURATION.createAttributeValue(dur1));
			attrDur2 = new FunctionArgumentAttributeValue(DataTypes.DT_YEARMONTHDURATION.createAttributeValue(dur2));
			attrDifferentDur = new FunctionArgumentAttributeValue(DataTypes.DT_YEARMONTHDURATION.createAttributeValue(differentDur));
		} catch (Exception e) {
			fail("creating attribute e="+ e);
		}

		FunctionDefinitionEquality<?> fd = (FunctionDefinitionEquality<?>) StdFunctions.FD_YEARMONTHDURATION_EQUAL_VERSION1;
		
		// check identity and type of the thing created
		assertEquals(XACML1.ID_FUNCTION_YEARMONTHDURATION_EQUAL, fd.getId());
		assertEquals(DataTypes.DT_YEARMONTHDURATION.getId(), fd.getDataTypeArgs().getId());
		
		// just to be safe...  If tests take too long these can probably be eliminated
		assertEquals(DataTypes.DT_BOOLEAN.getId(), fd.getDataTypeId());
		assertFalse(fd.returnsBag());
		assertEquals(new Integer(2), fd.getNumArgs());
		
		// test normal equals and non-equals
		// check separate objects with the same value
		arguments.add(attrDur1);
		arguments.add(attrDur2);
		ExpressionResult res = fd.evaluate(null, arguments);
		assertTrue(res.isOk());
		Boolean resValue = (Boolean)res.getValue().getValue();
		assertTrue(resValue);

		// check not same
		arguments.clear();
		arguments.add(attrDur1);
		arguments.add(attrDifferentDur);
		res = fd.evaluate(null, arguments);
		assertTrue(res.isOk());
		resValue = (Boolean)res.getValue().getValue();
		assertFalse(resValue);

		// test bad args data types?  Not needed?
		arguments.clear();
		arguments.add(stringAttr1);
		arguments.add(intAttr1);
		res = fd.evaluate(null, arguments);
		assertFalse(res.isOk());

	}