ISequenceFlowContainer ICloneableClass <ISequenceFlowContainer> .Clone() { AssemblyInfoCollection assemblies = new AssemblyInfoCollection(); foreach (IAssemblyInfo assemblyInfo in this.Assemblies) { assemblies.Add(assemblyInfo); } TypeDataCollection typeDatas = new TypeDataCollection(); foreach (ITypeData typeData in TypeDatas) { typeDatas.Add(typeData); } ArgumentCollection arguments = new ArgumentCollection(); ModuleUtils.CloneCollection(this.Arguments, arguments); VariableCollection variables = new VariableCollection(); ModuleUtils.CloneFlowCollection(this.Variables, variables); // SequenceGroupParameter只在序列化时使用 // Parameters只有在序列化时才会生成,在加载完成后会被删除 ISequenceGroupParameter parameters = (null == Parameters) ? null : this.Parameters.Clone() as ISequenceGroupParameter; SequenceCollection sequenceCollection = new SequenceCollection(); ModuleUtils.CloneFlowCollection(this.Sequences, sequenceCollection); SequenceGroup sequenceGroup = new SequenceGroup() { Name = this.Name + Constants.CopyPostfix, Description = this.Description, Parent = this.Parent, Info = this.Info.Clone(), Assemblies = assemblies, TypeDatas = typeDatas, Arguments = arguments, Variables = variables, Parameters = parameters, ExecutionModel = this.ExecutionModel, SetUp = this.SetUp.Clone() as ISequence, Sequences = sequenceCollection, TearDown = this.TearDown.Clone() as ISequence }; sequenceGroup.SetUp.Index = CommonConst.SetupIndex; sequenceGroup.TearDown.Index = CommonConst.TeardownIndex; sequenceGroup.RefreshSignature(); return(sequenceGroup); }
private static void SetParameterToSequenceData(ISequenceGroup sequenecGroup, ISequenceGroupParameter parameter) { for (int i = 0; i < sequenecGroup.Variables.Count; i++) { IVariable variable = sequenecGroup.Variables[i]; if (!variable.Name.Equals(parameter.VariableValues[i].Value)) { ILogService logService = TestflowRunner.GetInstance().LogService; logService.Print(LogLevel.Warn, CommonConst.PlatformLogSession, 0, $"Variable{variable.Name} {sequenecGroup.Name} value in parameter data is invalid."); I18N i18N = I18N.GetInstance(Constants.I18nName); throw new TestflowDataException(ModuleErrorCode.UnmatchedParameter, i18N.GetStr("UnmatchedData")); } variable.Value = parameter.VariableValues[i].Value; } SetParameterToSequenceData(sequenecGroup.SetUp, parameter.SetUpParameters); for (int i = 0; i < sequenecGroup.Sequences.Count; i++) { SetParameterToSequenceData(sequenecGroup.Sequences[i], parameter.SequenceParameters[i]); } SetParameterToSequenceData(sequenecGroup.TearDown, parameter.TearDownParameters); }
private static void FillParameterDataToSequenceData(ISequenceGroup sequenceGroup, ISequenceGroupParameter parameter) { for (int i = 0; i < sequenceGroup.Variables.Count; i++) { parameter.VariableValues[i].Value = sequenceGroup.Variables[i].Value; } FillParameterDataToSequenceData(sequenceGroup.SetUp, parameter.SetUpParameters); for (int i = 0; i < sequenceGroup.Sequences.Count; i++) { FillParameterDataToSequenceData(sequenceGroup.Sequences[i], parameter.SequenceParameters[i]); } FillParameterDataToSequenceData(sequenceGroup.TearDown, parameter.TearDownParameters); }