Exemple #1
0
        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));
        }
Exemple #2
0
        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)));
        }
Exemple #5
0
        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)));
        }
Exemple #6
0
 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;
         }
     }
 }