@Test
	public void forComplete() {
		DataFactory factory = new DataFactory();
		Context context = new Context();
		For f = factory.createFor();
		Function func = factory.createFunction();

		IVPValue lowerBound = factory.createIVPNumber();
		lowerBound.setValueType(IVPValue.INTEGER_TYPE);
		context.addInt(lowerBound.getUniqueID(), 0);

		IVPValue upperBound = factory.createIVPNumber();
		upperBound.setValueType(IVPValue.INTEGER_TYPE);
		context.addInt(upperBound.getUniqueID(), 5);

		IVPValue increment = factory.createIVPNumber();
		increment.setValueType(IVPValue.INTEGER_TYPE);
		context.addInt(increment.getUniqueID(), 1);

		IVPValue indexStartingValue = factory.createIVPNumber();
		indexStartingValue.setValueType(IVPValue.INTEGER_TYPE);
		context.addInt(indexStartingValue.getUniqueID(), 0);

		IVPValue one = factory.createIVPNumber();
		one.setValueType(IVPValue.INTEGER_TYPE);
		context.addInt(one.getUniqueID(), 1);

		IVPVariable v = factory.createIVPVariable();
		v.setVariableType(IVPValue.INTEGER_TYPE);
		v.setValueID(one.getUniqueID());

		IVPVariable indexVar = factory.createIVPVariable();
		indexVar.setVariableType(IVPValue.INTEGER_TYPE);
		indexVar.setValueID(indexStartingValue.getUniqueID());

		Addition add = factory.createAddition();
		add.setExpressionA(v.getUniqueID());
		add.setExpressionB(one.getUniqueID());

		AttributionLine attLine = factory.createAttributionLine();
		attLine.setVariable(v.getUniqueID());
		attLine.setExpression(add.getUniqueID());

		HashMap map = new HashMap();
		map.put(lowerBound.getUniqueID(), lowerBound);
		map.put(upperBound.getUniqueID(), upperBound);
		map.put(indexStartingValue.getUniqueID(), indexStartingValue);
		map.put(v.getUniqueID(), v);
		map.put(indexVar.getUniqueID(), indexVar);
		map.put(add.getUniqueID(), add);
		map.put(attLine.getUniqueID(), attLine);
		map.put(one.getUniqueID(), one);
		map.put(func.getUniqueID(), func);
		context.setFunctionID(func.getUniqueID());

		f.setExecutionMethod(For.FOR_N_TIMES_WITH_INDEX);
		f.setIndex(indexVar.getUniqueID());
		f.setUpperBound(upperBound.getUniqueID());
		f.setLowerBound(lowerBound.getUniqueID());
		f.setIncrement(increment.getUniqueID());
		f.addChild(attLine.getUniqueID());
		f.evaluate(context, map, factory);

		IVPNumber result = (IVPNumber) v.evaluate(context, map, factory);
		assertTrue(context.getInt(result.getUniqueID()) == 6);
		result = (IVPNumber) indexVar.evaluate(context, map, factory);
		assertTrue(context.getInt(result.getUniqueID()) == 5);
	}