@Test
	public void verifyExpressionWithExpression() {
		Context context = new Context();
		DataFactory factory = new DataFactory();
		IVPNumber a = factory.createIVPNumber();
		IVPNumber b = factory.createIVPNumber();
		IVPNumber c = factory.createIVPNumber();
		IVPNumber d = factory.createIVPNumber();

		a.setValueType(IVPValue.INTEGER_TYPE);
		b.setValueType(IVPValue.INTEGER_TYPE);
		c.setValueType(IVPValue.INTEGER_TYPE);
		d.setValueType(IVPValue.INTEGER_TYPE);

		context.addInt(a.getUniqueID(), 7);
		context.addInt(b.getUniqueID(), 10);
		context.addInt(c.getUniqueID(), 2);
		context.addInt(d.getUniqueID(), 2);

		Subtraction subtraction1 = factory.createSubtraction();
		subtraction1.setExpressionA(a.getUniqueID());
		subtraction1.setExpressionB(b.getUniqueID());

		Subtraction subtraction2 = factory.createSubtraction();
		subtraction2.setExpressionA(c.getUniqueID());
		subtraction2.setExpressionB(d.getUniqueID());

		Subtraction subtraction3 = factory.createSubtraction();
		subtraction3.setExpressionA(subtraction1.getUniqueID());
		subtraction3.setExpressionB(subtraction2.getUniqueID());

		HashMap map = new HashMap();
		map.put(subtraction1.getUniqueID(), subtraction1);
		map.put(subtraction2.getUniqueID(), subtraction2);
		map.put(subtraction3.getUniqueID(), subtraction3);
		map.put(a.getUniqueID(), a);
		map.put(b.getUniqueID(), b);
		map.put(c.getUniqueID(), c);
		map.put(d.getUniqueID(), d);
		// subtraction3(subtraction1(a - b) - subtraction2(c - d))
		// ((a - b) - (c - d))
		IVPNumber result = (IVPNumber) subtraction3.evaluate(context, map, factory);
		assertTrue(result.getValueType().equals(IVPValue.INTEGER_TYPE));
		assertTrue(context.getInt(result.getUniqueID()) == -3);
	}