Esempio n. 1
0
        bool FilterVariationItem(VariationItem vi)
        {
            bool filter = false;

            if (FilterCallback != null)
            {
                object   cache    = null;
                Delegate callback = FilterCallback.Callback.GetDelegate(typeof(CombinationGeneratorFilterEventHandler), ref cache, true);

                if (callback != null)
                {
                    filter = (bool)callback.DynamicInvoke(vi, FilterCallback);
                }
            }

            return(filter);
        }
Esempio n. 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="testCase"></param>
        /// <returns></returns>
        public string Save(int testCase)
        {
            if (_testCases.Count == 0)
            {
                return("");
            }

            if (testCase >= _testCases.Count)
            {
                throw new IndexOutOfRangeException();
            }

            // Copy single case to new empty TXRO.
            // Mark single case as NOT root so the TestContract
            // values will not be serialized.
            TestExtenderOutput txro = new TestExtenderOutput();
            VariationItem      item = this.TestCases[testCase];

            item.IsRoot = false;
            txro.TestCases.Add(item);

            return(XamlWriter.Save(txro));
        }
Esempio n. 3
0
        ///<summary>
        ///</summary>
        public override List <VariationItem> Generate()
        {
            List <List <VariationItem> > variationListList = base.GenerateIVGChildrenSequential();

            if (CombinerDegree == CombinationDegree.Tuple && this.Dependencies.Count > 2)
            {
                bool pictFound = true;
                if (!File.Exists("pict.exe"))
                {
                    // HACK FOR VS Deployment.
                    if (File.Exists(@"Data\pict.exe"))
                    {
                        File.Copy(@"Data\pict.exe", "pict.exe", true);
                    }
                    if (File.Exists(@"Common\pict.exe"))
                    {
                        File.Copy(@"Common\pict.exe", "pict.exe", true);
                    }
                    else
                    {
                        pictFound = false;
                    }
                }

                if (!pictFound)
                {
                    throw new InvalidOperationException("The file pict.exe is not found in the current directory. " + Directory.GetCurrentDirectory());
                }

                int countVariationList = variationListList.Count;

                object o = typeof(ObjectArrayGenerator).InvokeMember("GeneratePairwiseObjectArrays", BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.Public,
                                                                     null, typeof(ObjectArrayGenerator), variationListList.ToArray());

                IObjectArrayCollection oCollection = (IObjectArrayCollection)o;

                List <VariationItem> list = new List <VariationItem>();

                foreach (object[] x in oCollection)
                {
                    VariationItemGroup vGroup = new VariationItemGroup();
                    vGroup.Creator = typeof(CombinationGenerator).Name;
                    vGroup.Merge(this);

                    for (int i = 0; i < countVariationList; i++)
                    {
                        VariationItem item = (VariationItem)x[i];
                        if (!FilterVariationItem(item))
                        {
                            vGroup.Merge(item);
                            vGroup.Children.Add(item);
                        }
                    }

                    list.Add(vGroup);
                }

                return(list);
            }
            else
            {
                if (variationListList.Count == 1)
                {
                    return(variationListList[0]);
                }

                if (variationListList.Count > 1)
                {
                    List <VariationItem> variationList = variationListList[0];

                    for (int i = 1; i < variationListList.Count; i++)
                    {
                        variationList = Combine(this, variationList, variationListList[i]);
                    }

                    return(variationList);
                }
            }

            return(new List <VariationItem>());
        }