protected override void OnEnable() { var xml = Resources.Load(unityEngineClassXmlPath) as TextAsset; var serializer = new XmlSerializer(typeof(TypeDataCollection)); using (var reader = new StringReader(xml.text)) { types_ = serializer.Deserialize(reader) as TypeDataCollection; } base.OnEnable(); }
private bool VerifyVariableInSequenceStep(ISequenceStep sequenceStep, IVariable variable, TypeDataCollection typeDatas) { if ((null != sequenceStep.LoopCounter && variable.Name.Equals(sequenceStep.LoopCounter.CounterVariable)) || (null != sequenceStep.RetryCounter) && variable.Name.Equals(sequenceStep.RetryCounter.CounterVariable)) { Type varType = typeof(int); ITypeData typeData = typeDatas.GetTypeData(varType.Name); if (null == typeData) { variable.Type = _comInterfaceManager.GetTypeByName(varType.Name, varType.Namespace); } return(true); } if (null != sequenceStep.Function) { IFunctionData functionData = sequenceStep.Function; if (variable.Name.Equals(functionData.Instance)) { variable.Type = functionData.ClassType; return(true); } if (variable.Name.Equals(functionData.Return)) { variable.Type = functionData.ReturnType.Type; return(true); } IParameterData parameter = functionData.Parameters.FirstOrDefault (item => item.ParameterType == ParameterType.Variable && variable.Name.Equals(item.Value)); if (null != parameter) { variable.Type = functionData.ParameterType[parameter.Index].Type; return(true); } } if (sequenceStep.HasSubSteps) { foreach (ISequenceStep subStep in sequenceStep.SubSteps) { bool verified = VerifyVariableInSequenceStep(subStep, variable, typeDatas); if (verified) { return(true); } } } return(false); }
private bool VerifyVariableInSequence(ISequence sequence, IVariable variable, TypeDataCollection typeDatas) { if (sequence.Variables.Any(var => var.Name.Equals(variable.Name))) { return(false); } foreach (ISequenceStep sequenceStep in sequence.Steps) { bool verified = VerifyVariableInSequenceStep(sequenceStep, variable, typeDatas); if (verified) { return(true); } } return(false); }
/// <summary> /// 初始化变量和参数的类型数据 /// </summary> public bool VerifyVariableType(ISequenceFlowContainer flowContainer, IVariable variable, TypeDataCollection typeDatas) { if (flowContainer is ITestProject) { ITestProject testProject = flowContainer as ITestProject; return(VerifyVariableInSequence(testProject.SetUp, variable, typeDatas) || VerifyVariableInSequence(testProject.TearDown, variable, typeDatas)); } else if (flowContainer is ISequenceGroup) { ISequenceGroup sequenceGroup = flowContainer as ISequenceGroup; if (VerifyVariableInSequence(sequenceGroup.SetUp, variable, typeDatas) || VerifyVariableInSequence(sequenceGroup.TearDown, variable, typeDatas)) { return(true); } return(sequenceGroup.Sequences.Any(sequence => VerifyVariableInSequence(sequence, variable, typeDatas))); } else if (flowContainer is ISequence) { return(VerifyVariableInSequence(flowContainer as ISequence, variable, typeDatas)); } else if (flowContainer is ISequenceStep) { return(VerifyVariableInSequenceStep(flowContainer as ISequenceStep, variable, typeDatas)); } return(false); }