using System; using System.Collections.Generic; using System.Reflection; using AutoFixture.Kernel; namespace SampleTests.AutoFixture { public class LongitudeBuilder : ISpecimenBuilder { /// <summary> /// 指定屬性名稱. /// </summary> public string PropertyName { get; set; } public double? Minimum { get; set; } public double? Maximum { get; set; } public object Create(object request, ISpecimenContext context) { var propertyNames = new List<string> { "Longitude" }; if (string.IsNullOrWhiteSpace(this.PropertyName).Equals(false)) { propertyNames.Add(this.PropertyName.Trim()); } double minumum = this.Minimum.HasValue && (this.Minimum >= -180 || this.Minimum <= 180) ? this.Minimum.Value : -180.0d; double maximum = this.Maximum.HasValue && (this.Maximum >= -180 || this.Maximum <= 180) ? this.Maximum.Value : 180.0d; if (minumum > maximum) { var temp = minumum; minumum = maximum; maximum = temp; } var propertyInfo = request as PropertyInfo; if (propertyInfo != null && propertyNames.Contains(propertyInfo.Name) && propertyInfo.PropertyType == typeof(double)) { return context.Resolve ( new RangedNumberRequest(typeof(double), minumum, maximum) ); } return new NoSpecimen(); } } }