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); }
/// <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)); }
///<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>()); }