/// <summary> /// Evaluates the argument number in the current context /// </summary> public virtual void Evaluate(IEvolutionState state, int thread, GPData input, ADFStack stack, GPIndividual individual, IProblem problem, int argument) { // do I have that many Arguments? if ((argument >= Adf.Children.Length) || argument < 0) // uh oh { individual.PrintIndividual(state, 0); state.Output.Fatal("Invalid argument number for " + Adf.ErrorInfo()); } // Am I an ADM or an ADF? //if (Adf == null) // state.Output.Fatal("ADF is null for " + Adf.ErrorInfo()); //else if (!(Adf is ADM)) // it's an ADF { Arguments[argument].CopyTo(input); } else // it's an ADM { // get rid of my context temporarily if (stack.MoveOntoSubstack(1) != 1) { state.Output.Fatal("Substack prematurely empty for " + Adf.ErrorInfo()); } // Call the GPNode Adf.Children[argument].Eval(state, thread, input, stack, individual, problem); // restore my context if (stack.MoveFromSubstack(1) != 1) { state.Output.Fatal("Stack prematurely empty for " + Adf.ErrorInfo()); } } }
public async Task WhenCreateBlankAdfThenAdfIsValid() { var adfBytes = await Adf.CreateBlank("HstWB"); Assert.Equal(901120, adfBytes.Length); }