public T CreateFor <T> (ISuite <T> suiteInstance) { var suiteType = suiteInstance.GetType(); var subjectType = typeof(T); var constructors = subjectType.GetConstructors(MemberBindings.Instance); if (constructors.Length != 1) { throw new EvaluationException(string.Format("Missing default constructor for subject type '{0}'.", subjectType.Name)); } var constructor = constructors.Single(); var constructorParameters = constructor.GetParameters(); var suiteFields = suiteType.GetFieldsWithAttribute <InjectedAttribute>().Select(x => x.Item1).ToList(); var arguments = constructorParameters.Select(x => GetArgumentValue(x, suiteInstance, suiteFields)).ToArray(); if (arguments.Any(x => x == null)) { var missingParameters = constructorParameters.Select((x, i) => Tuple.Create(x, arguments[i])) .Where(x => x.Item2 == null) .Select(x => x.Item1.AssertNotNull().Name); throw new EvaluationException( string.Format( "Missing constructor arguments for subject type '{0}': {1}", subjectType.Name, string.Join(", ", missingParameters.ToArray()))); } return((T)constructor.Invoke(arguments)); }
public void Extend(ITestController testController, ISuite suite) { var fields = suite.GetType().GetFields(MemberBindings.Instance).ToList(); if (fields.Count == 0) { return; } testController.AddAction <SetupExtension>("<Reset_Instance_Fields>", x => fields.ForEach(f => f.SetValue(suite, f.FieldType.GetDefaultValue()))); }
private void SetupFakes(ITestController testController, ISuite suite) { var fieldsWithAttribute = suite.GetType().GetFieldsWithAttribute <ReturnedFromAttribute>().ToList(); if (fieldsWithAttribute.Count == 0) { return; } testController.AddAction <SetupExtension>("<Setup_Fakes>", x => fieldsWithAttribute.ForEach(t => SetupFakeReturnValue(suite, t.Item2, t.Item1))); }
private void CreateFakes(ITestController testController, ISuite suite) { var fieldsWithAttribute = suite.GetType().GetFieldsWithAttribute <FakeBaseAttribute>().ToList(); if (fieldsWithAttribute.Count == 0) { return; } testController.AddAction <SetupExtension>("<Create_Fakes>", x => fieldsWithAttribute.ForEach(t => CreateAndAssignFake(suite, t.Item2, t.Item1))); }
public void Extend(ITestController testController, ISuite suite) { var suiteType = suite.GetType(); var fieldsWithAttribute = suiteType.GetFieldsWithAttribute <AutoDataAttribute>() .OrderBy(x => x.Item1.Name) .SortTopologically(IsDependentAutoData).ToList(); if (fieldsWithAttribute.Count == 0) { return; } var seed = GetSeed(suiteType); var random = new Random(seed); var configuration = GetAutoDataConfiguration(suiteType); var generator = TestDataGeneratorFactory.Create(x => configuration(x).UseRandom(random)); // TODO: add seed to data testController.AddAction <SetupExtension>( string.Format("<Create_AutoData><{0}>", seed), x => fieldsWithAttribute.ForEach(t => CreateAndAssignAuto(suite, generator, t.Item2, t.Item1))); }
private bool IsSuiteEqual(ISuite suite1,ISuite suite2) { Type type_1 = suite1.GetType(); Type type_2 = suite2.GetType(); if (!type_1.Equals(type_2)) { return false; } else { if (suite1 is CellSuite) { CellSuite cellsuite1 = suite1 as CellSuite; CellSuite cellsuite2 = suite2 as CellSuite; return ListEquals(cellsuite1.CaseList, cellsuite2.CaseList); } else if (suite1 is BinSuite) { BinSuite cellsuite1 = suite1 as BinSuite; BinSuite cellsuite2 = suite2 as BinSuite; return ListEquals(cellsuite1.CaseList, cellsuite2.CaseList); } else { return false; } } }