コード例 #1
0
        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");
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
 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);
             }
         }
     }
 }
コード例 #5
0
        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");
        }
コード例 #6
0
        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");
        }