private void CreateMocker(
CodeTypeDeclaration testClassDeclaration,
CodeMemberMethod setUpMethod,
CodeMemberField mockRepositoryMemberField,
List<CodeAssignStatement> mockAssignments,
Type paraType,
string paraName,
ConstructorAssignment data)
{
if(data != null && data.MemberFieldName != data.ParameterName)
{
}
// reuse already present field assignments.
var mockMemberField = testClassDeclaration
.Members.OfType<CodeMemberField>()
.Where(e => e.Name == paraName)
.FirstOrDefault();
var mockMemberFieldCreated = false;
if (mockMemberField == null)
{
mockMemberField = AddTestMemberField(
testClassDeclaration, paraType.FullName, paraName);
mockMemberFieldCreated = true;
}
var mockAssignment = this.AddMockObject(mockRepositoryMemberField, paraType.FullName, paraName);
if (mockMemberFieldCreated)
{
// none found, add a new assignment.
setUpMethod.Statements.Add(mockAssignment);
}
else
{
if (data != null)
{
data.AssignStatement.Right = mockAssignment.Right;
}
}
mockAssignments.Add(mockAssignment);
}