Example #1
0
        public void Success_when_earliest_start_context_is_returned()
        {
            var    provider = new TemplateContextHandlerPackageProvider <AbstractTemplateContextHandler>(BuildTemplateHandler(null), null); //TODO Add Interface Liskov Principle with TemplateHandlerNew
            var    ColumnNameColumnContextHandler = new ColumnNameColumnContextHandler(BuildTemplateHandler(null));
            var    IsColumnNotAutoGeneratedValueColumnContextHandler = new IsColumnNotAutoGeneratedValueColumnContextHandler(BuildTemplateHandler(null));
            String submittedString = IsColumnNotAutoGeneratedValueColumnContextHandler.StartContext + ColumnNameColumnContextHandler.Signature + IsColumnNotAutoGeneratedValueColumnContextHandler.EndContext;
            String result          = provider.GetHandlerStartContextWordAtEarliestPosition(submittedString);
            String expectedResult  = IsColumnNotAutoGeneratedValueColumnContextHandler.StartContext;

            Assert.AreEqual(expectedResult, result);
        }
Example #2
0
        private bool ContextDepthTemplateStringValidation
            (String ValidatedTemplateString)
        {
            String         currentHandledTemplateString = ValidatedTemplateString;
            Stack <String> StartContextWordStack        = new Stack <String>();

            String earliestStartContextWord = templateContextHandlerProvider.
                                              GetHandlerStartContextWordAtEarliestPosition(currentHandledTemplateString);

            String earliestEndContextWord = templateContextHandlerProvider.
                                            GetHandlerEndContextWordAtEarliestPosition(currentHandledTemplateString);

            while (earliestStartContextWord != null || earliestEndContextWord != null)
            {
                if (earliestStartContextWord != null && earliestEndContextWord != null)
                {
                    int earliestStartContextWordIndex = currentHandledTemplateString.IndexOf(earliestStartContextWord);
                    int earliestEndContextWordIndex   = currentHandledTemplateString.IndexOf(earliestEndContextWord);

                    if (earliestStartContextWordIndex < earliestEndContextWordIndex)
                    {
                        StartContextWordStack.Push(earliestStartContextWord);
                        currentHandledTemplateString = StringUtilities.
                                                       getRightPartOfSubmittedStringAfterFirstSearchedWordOccurence
                                                           (currentHandledTemplateString, earliestStartContextWord);
                    }
                    else if (earliestStartContextWordIndex > earliestEndContextWordIndex)
                    {
                        if (!StartContextWordStack.Any())
                        {
                            return(false);
                        }
                        String lastStartContextWord     = StartContextWordStack.Pop();
                        String associatedEndContextWord =
                            templateContextHandlerProvider.GetStartContextCorrespondingEndContext(lastStartContextWord);
                        if (!associatedEndContextWord.Equals(earliestEndContextWord))
                        {
                            return(false);
                        }
                        currentHandledTemplateString =
                            StringUtilities.
                            getRightPartOfSubmittedStringAfterFirstSearchedWordOccurence
                                (currentHandledTemplateString, earliestEndContextWord);
                    }
                }
                else if (earliestEndContextWord != null)
                {
                    if (!StartContextWordStack.Any())
                    {
                        return(false);
                    }
                    String lastStartContextWord     = StartContextWordStack.Pop();
                    String associatedEndContextWord =
                        templateContextHandlerProvider.GetStartContextCorrespondingEndContext(lastStartContextWord);
                    if (!associatedEndContextWord.Equals(earliestEndContextWord))
                    {
                        return(false);
                    }
                    currentHandledTemplateString =
                        StringUtilities.
                        getRightPartOfSubmittedStringAfterFirstSearchedWordOccurence
                            (currentHandledTemplateString, earliestEndContextWord);
                }
                earliestStartContextWord = templateContextHandlerProvider.
                                           GetHandlerStartContextWordAtEarliestPosition(currentHandledTemplateString);

                earliestEndContextWord = templateContextHandlerProvider.
                                         GetHandlerEndContextWordAtEarliestPosition(currentHandledTemplateString);
            }
            if (StartContextWordStack.Any())
            {
                return(false);
            }
            return(true);
        }