protected override object GenerateValue(Type type, string referenceName, LinkedList<object> buildChain)
{
if (buildChain == null)
{
throw new ArgumentNullException(nameof(buildChain));
}
var context = buildChain.Last?.Value;
var firstName = GetValue<string>(PropertyExpression.FirstName, context);
var lastName = GetValue<string>(PropertyExpression.LastName, context);
var domain = Domain;
var gender = GetValue<string>(PropertyExpression.Gender, context);
Person person;
if (string.Equals(gender, "male", StringComparison.OrdinalIgnoreCase))
{
person = TestData.NextMale();
}
else
{
person = TestData.NextFemale();
}
if (firstName == null)
{
firstName = person.FirstName;
}
if (lastName == null)
{
lastName = person.LastName;
}
if (domain == null)
{
domain = person.Domain;
}
var email = firstName + "." + lastName + "@" + domain;
return email.Replace(" ", string.Empty).ToLowerInvariant();
}