public void ExactlyOneTest_1b(Store store) { myTestServices.LogValidationErrors("No errors expected"); ORMModel model = store.ElementDirectory.FindElements <ORMModel>()[0]; FrequencyConstraint constraint = (FrequencyConstraint)model.ConstraintsDictionary.GetElement("FrequencyConstraint1").SingleElement; // DomainTypeDescriptor.CreatePropertyDescriptor(constraint, FrequencyConstraint.MaxFrequencyDomainPropertyId).SetValue(constraint, 1); myTestServices.LogValidationErrors("Introduce Error[FrequencyConstraintExactlyOneError]"); using (Transaction t = store.TransactionManager.BeginTransaction("Read the error")) { constraint.MinFrequency = 1; constraint.MaxFrequency = 1; t.Commit(); } myTestServices.LogValidationErrors("Fixing error with error activation service"); ((IORMToolServices)store).ModelErrorActivationService.ActivateError(constraint, constraint.FrequencyConstraintExactlyOneError); myTestServices.LogValidationErrors("[FrequencyConstraintExactlyOneError] removed, different error introduced. Removing new error"); // Deleting one of the two uniqnuess constraints... UniquenessConstraint uniqueC = (UniquenessConstraint)model.ConstraintsDictionary.GetElement("InternalUniquenessConstraint5").SingleElement; using (Transaction t = store.TransactionManager.BeginTransaction("Read the error")) { uniqueC.Delete(); t.Commit(); } myTestServices.LogValidationErrors("All errors resolved"); }
/// <summary> /// Builds a string representing a Frequency Constraint /// </summary> private string GetFrequencyString() { FrequencyConstraint fc = AssociatedConstraint as FrequencyConstraint; string freqString = ""; if (null != fc) { int minFreq = fc.MinFrequency; int maxFreq = fc.MaxFrequency; //TODO: Frequencies should not be negative values. An "invalid value" error //should be shown in the error list if a frequency is < 0. //Similarly, an error should be shown if minFreq > maxFreq. if (minFreq > 0 && maxFreq == 0) { freqString = string.Format(CultureInfo.InvariantCulture, ResourceStrings.FrequencyConstraintMinimumFormatString, minFreq); } else if (minFreq == maxFreq && minFreq != 0) { return(minFreq.ToString(CultureInfo.InvariantCulture)); } else if (minFreq == 1 && maxFreq > 1) { freqString = string.Format(CultureInfo.InvariantCulture, ResourceStrings.FrequencyConstraintMinimumOneFormatString, maxFreq); } else if (minFreq + maxFreq != 0) { freqString = string.Format(CultureInfo.InvariantCulture, ResourceStrings.FrequencyConstraintBetweenFormatString, minFreq, maxFreq); } else { Debug.Fail("Model should have prevented this"); } } return(freqString); }
/// <summary> /// Frequency Constraints applied to a single facttype are handled slightly differently. Test if the constraint meets this definition. /// </summary> /// <returns>True if constraint is a Frequency Constraint applied to a single facttype; otherwise, false.</returns> private bool IsSingleFactFrequencyConstraint() { IConstraint constraint = AssociatedConstraint; if (constraint != null && constraint.ConstraintType == ConstraintType.Frequency) { FrequencyConstraint fc = (FrequencyConstraint)constraint; return(fc.FactTypeCollection.Count == 1); } return(false); }
private static void UpdateShapeSize(FrequencyConstraint constraint) { // Resize the frequency constraint wherever it is displayed, and make sure // the object type is made visible in the same location. foreach (PresentationElement pel in PresentationViewsSubject.GetPresentation(constraint)) { ExternalConstraintShape externalConstraintShape = pel as ExternalConstraintShape; if (externalConstraintShape != null) { SizeD oldSize = externalConstraintShape.Size; externalConstraintShape.AutoResize(); if (oldSize == externalConstraintShape.Size) { ((IInvalidateDisplay)externalConstraintShape).InvalidateRequired(true); } } } }
public void FCMinMaxTest2a(Store store) { myTestServices.LogValidationErrors("Before adding error"); ORMModel model = store.ElementDirectory.FindElements <ORMModel>()[0]; FrequencyConstraint constraint = (FrequencyConstraint)model.ConstraintsDictionary.GetElement("FrequencyConstraint1").SingleElement; int min = constraint.MinFrequency; int max = constraint.MaxFrequency; using (Transaction t = store.TransactionManager.BeginTransaction("Fix Constraint")) { //Make the error constraint.MinFrequency = max; constraint.MaxFrequency = min; t.Commit(); } myTestServices.LogValidationErrors("After adding error"); }
public void ExactlyOneTest1a(Store store) { myTestServices.LogValidationErrors("No errors expected"); ORMModel model = store.ElementDirectory.FindElements <ORMModel>()[0]; FrequencyConstraint constraint = (FrequencyConstraint)model.ConstraintsDictionary.GetElement("TestFrequency").SingleElement; DomainTypeDescriptor.CreatePropertyDescriptor(constraint, FrequencyConstraint.MaxFrequencyDomainPropertyId).SetValue(constraint, 1); myTestServices.LogValidationErrors("Error introduced"); using (Transaction t = store.TransactionManager.BeginTransaction("Read the error")) { constraint.MinFrequency = 3; constraint.MaxFrequency = 4; t.Commit(); } myTestServices.LogValidationErrors("Error cleared with code"); store.UndoManager.Undo(); ((IORMToolServices)store).ModelErrorActivationService.ActivateError(constraint, constraint.FrequencyConstraintExactlyOneError); myTestServices.LogValidationErrors("Fixing error with error activation service"); }