public StateTypeComparator(StateType stateType, ItemType itemType, VariablesEvaluated variables) { this.itemType = itemType; this.stateType = stateType; this.variables = variables; }
private IEnumerable<string> GetAllStateEntities(StateType state) { var referencedVariables = new List<string>(); foreach (var field in state.GetType().GetProperties()) { var stateField = field.GetValue(state, null); if (stateField is EntityStateSimpleBaseType) referencedVariables.Add(((EntityStateSimpleBaseType)stateField).var_ref); else if (stateField is EntityStateRecordType) { var recordFields = ((EntityStateRecordType)stateField).field; referencedVariables.AddRange(recordFields.Select(f => f.var_ref)); } } return referencedVariables.ToArray(); }
private ResultEnumeration ExecuteStateComparator(ItemType collectedItem, StateType state, VariablesEvaluated evaluatedVariables) { try { var stateComparator = new StateTypeComparator(state, collectedItem, evaluatedVariables); if (stateComparator.IsEquals()) return ResultEnumeration.@true; return ResultEnumeration.@false; } catch (NotSupportedException) { return ResultEnumeration.unknown; } }
private OVAL.Definitions.variableEvaluator.VariablesEvaluated CreateEvalutedVariablesFromStateType( StateType state, oval_results ovalResults) { var allStateEntities = GetAllStateEntities(state); var variableValues = new List<OVAL.Definitions.variableEvaluator.VariableValue>(); foreach (var stateEntity in allStateEntities) { var newVariableValue = CreateVariableValuesFromStateEntity(state.id, stateEntity, ovalResults); if (newVariableValue != null) variableValues.Add(newVariableValue); } return new OVAL.Definitions.variableEvaluator.VariablesEvaluated( variableValues); }
private PropertyInfo GetPropertyInfoByName(StateType stateType, string entityName) { var allStateEntities = stateType.GetType().GetProperties(); var entity = allStateEntities.FirstOrDefault(property => property.Name.Equals(entityName)); Assert.IsNotNull(entity, string.Format("'{0}' entity was not found.", entityName)); return entity; }
private void AssertStateEntityNameResolution(StateType stateType, string entityName, string expectedResolvedEntityName) { var entity = GetPropertyInfoByName(stateType, entityName); var resolvedEntityName = new StateEntityNameResolver().Resolve(entity); Assert.AreEqual(expectedResolvedEntityName, resolvedEntityName, string.Format(FAILED_ENTITY_NAME_RESOLVING, resolvedEntityName)); }