public void LoadFullMethodsDescriptions_Should_ReturnTheExpectedListOfFullMethodDescriptionObjects_Given_AListOfMethodDescriptionObjectsOfMethodsContainingCallBeforeAttributes() { // Create the MethodDescription MethodsManagementUtilitiesUTDynamicBDDForTestForCallBeforeMethodsList component = UnitTestUtility.CreateComponent <MethodsManagementUtilitiesUTDynamicBDDForTestForCallBeforeMethodsList>(); MethodInfo mainMethodInfo = component.GetType().GetMethod("SecondThenMethod"); MethodDescriptionBuilder methodDescriptionBuilder = new MethodDescriptionBuilder(); MethodParametersLoader methodParametersLoader = new MethodParametersLoader(); BaseMethodDescriptionBuilder baseMethodDescriptionBuilder = new BaseMethodDescriptionBuilder(); BaseMethodDescription mainBaseMethodDescription = baseMethodDescriptionBuilder.Build <ThenBaseAttribute>(component, mainMethodInfo); string parametersIndex = string.Empty; MethodDescription firstChosenMethodDescription = methodDescriptionBuilder.Build(methodParametersLoader, mainBaseMethodDescription, parametersIndex); // Create the expected FullMethodDescription MethodInfo firstCallBeforeMethodInfo = component.GetType().GetMethod("ThenMethod"); BaseMethodDescription firstCallBeforeBaseMethodDescription = baseMethodDescriptionBuilder.Build <ThenBaseAttribute>(component, firstCallBeforeMethodInfo); MethodDescription secondChosenMethodDescription = methodDescriptionBuilder.Build(methodParametersLoader, firstCallBeforeBaseMethodDescription, parametersIndex); FullMethodDescriptionBuilder fullMethodDescriptionBuilder = new FullMethodDescriptionBuilder(); List <FullMethodDescription> firstChosenFullMethodDescriptionsList = fullMethodDescriptionBuilder.BuildFromBaseMethodDescription(firstChosenMethodDescription, 1); List <FullMethodDescription> seconChosenFullMethodDescriptionsList = fullMethodDescriptionBuilder.BuildFromBaseMethodDescription(secondChosenMethodDescription, 2); List <FullMethodDescription> expectedFullMethodDescriptionsList = new List <FullMethodDescription>(); expectedFullMethodDescriptionsList.AddRange(firstChosenFullMethodDescriptionsList); expectedFullMethodDescriptionsList.AddRange(seconChosenFullMethodDescriptionsList); // Build the fullMethodDescription List <MethodDescription> methodsDescriptionsList = new List <MethodDescription>(); methodsDescriptionsList.Add(firstChosenMethodDescription); methodsDescriptionsList.Add(secondChosenMethodDescription); MethodsManagementUtilities methodsManagementUtilities = new MethodsManagementUtilities(); List <FullMethodDescription> result = methodsManagementUtilities.LoadFullMethodsDescriptions <ThenBaseAttribute>(methodsDescriptionsList, fullMethodDescriptionBuilder); // Compare the FullMethodDescriptions Assert.AreEqual(6, result.Count, "The method build doesn't return the right number of element in the list"); Assert.AreEqual(expectedFullMethodDescriptionsList[0], result[0], "The method build doesn't return the right fullMethodDescription"); Assert.AreEqual(expectedFullMethodDescriptionsList[1], result[1], "The method build doesn't return the right fullMethodDescription"); Assert.AreEqual(expectedFullMethodDescriptionsList[2], result[2], "The method build doesn't return the right fullMethodDescription"); Assert.AreEqual(expectedFullMethodDescriptionsList[3], result[3], "The method build doesn't return the right fullMethodDescription"); Assert.AreEqual(expectedFullMethodDescriptionsList[4], result[4], "The method build doesn't return the right fullMethodDescription"); Assert.AreEqual(expectedFullMethodDescriptionsList[5], result[5], "The method build doesn't return the right fullMethodDescription"); }
/// <summary> /// Builds a list of <see cref="FullMethodDescription"/> objects given a list of <see cref="BaseMethodDescription"/> objects. /// </summary> /// <typeparam name="T">The type of the Step Method.</typeparam> /// <param name="methodsDescriptionsList">The methods descriptions list.</param> /// <param name="fullMethodDescriptionBuilder">The full method description builder.</param> /// <returns>A list of <see cref="FullMethodDescription"/> objects.</returns> public List <FullMethodDescription> LoadFullMethodsDescriptions <T>(List <BaseMethodDescription> methodsDescriptionsList, FullMethodDescriptionBuilder fullMethodDescriptionBuilder) where T : IGivenWhenThenDeclaration { List <FullMethodDescription> fullMethodsDescriptions = new List <FullMethodDescription>(); for (int index = 0; index < methodsDescriptionsList.Count; index++) { BaseMethodDescription baseMethodDescription = methodsDescriptionsList[index]; List <FullMethodDescription> fullmethodDescriptionsList = fullMethodDescriptionBuilder.BuildFromBaseMethodDescription(baseMethodDescription, (uint)index + 1); fullMethodsDescriptions.AddRange(fullmethodDescriptionsList); } return(fullMethodsDescriptions); }