Member 14905183 Ответов: 2

Как мне протестировать/смоделировать этот код? Помогите пожалуйста


Public Enum FindDirection As Short
       Up = 0
       Down = 1
   End Enum

   ' FindNext
   Private Sub FindNext(ByVal [Control] As RichTextBox, _
                              ByVal SearchText As String, _
                              ByVal Direction As FindDirection, _
                              Optional ByVal IgnoreCase As System.Text.RegularExpressions.RegexOptions = RegexOptions.None, _
                              Optional ByVal Highlight_BackColor As Color = Nothing, _
                              Optional ByVal Highlight_ForeColor As Color = Nothing)

       If [Control].TextLength = 0 Then Exit Sub

       ' Start searching at 'SelectionStart'.
       Dim Search_StartIndex As Integer = [Control].SelectionStart

       ' Stores the MatchIndex count
       Dim matchIndex As Integer = 0

       ' Flag to check if it's first find call
       Static First_Find As Boolean = True

       ' Checks to don't ommit the selection of first match if match index is exactly at 0 start point.
       If First_Find _
           AndAlso Search_StartIndex = 0 _
           AndAlso Direction = FindDirection.Down Then
           Search_StartIndex = -1
           First_Find = False
       ElseIf Not First_Find _
           AndAlso Search_StartIndex = 0 _
           AndAlso Direction = FindDirection.Down Then
           First_Find = False
           Search_StartIndex = 0
       End If

       ' Store the matches
       Dim matches As System.Text.RegularExpressions.MatchCollection = _
           System.Text.RegularExpressions.Regex.Matches([Control].Text, _
                                                        SearchText, _
                                                        IgnoreCase Or If(Direction = FindDirection.Up, _
                                                                         RegexOptions.RightToLeft, _
                                                                         RegexOptions.None))

       If matches.Count = 0 Then First_Find = True : Exit Sub

       ' Restore Highlight colors of previous selection
       [Control].SelectionBackColor = [Control].BackColor
       [Control].SelectionColor = [Control].ForeColor

       ' Set next selection Highlight colors
       If Highlight_BackColor = Nothing Then Highlight_BackColor = [Control].BackColor
       If Highlight_ForeColor = Nothing Then Highlight_ForeColor = [Control].ForeColor

       ' Set the match selection
       For Each match As System.Text.RegularExpressions.Match In matches

           matchIndex += 1

           Select Case Direction

               Case FindDirection.Down
                   If match.Index > Search_StartIndex Then ' Select next match
                       [Control].Select(match.Index, match.Length)
                       Exit For
                   ElseIf match.Index <= Search_StartIndex _
                   AndAlso matchIndex = matches.Count Then ' Select first match
                       [Control].Select(matches.Item(0).Index, matches.Item(0).Length)
                       Exit For
                   End If

               Case FindDirection.Up
                   If match.Index < Search_StartIndex Then ' Select previous match
                       [Control].Select(match.Index, match.Length)
                       Exit For
                   ElseIf match.Index >= Search_StartIndex _
                   AndAlso matchIndex = matches.Count Then ' Select last match
                       [Control].Select(matches.Item(0).Index, matches.Item(0).Length)
                       Exit For
                   End If

           End Select

       Next match

       ' Set the current selection BackColor
       [Control].SelectionBackColor = Highlight_BackColor
       ' Set the current selection ForeColor
       [Control].SelectionColor = Highlight_ForeColor
       ' Scroll to Caret/Cursor selection position
       [Control].ScrollToCaret()

   End Sub


Что я уже пробовал:

Как мне протестировать/смоделировать этот код? помогите пожалуйста

Richard MacCutchan

Предоставляя ему тестовые данные, которые выполняют каждый путь кода.

Member 14905183

не могли бы вы дать мне образец?

Richard MacCutchan

Как же так? Я понятия не имею, что должен делать ваш код и какие данные он обрабатывает. Используйте Google, чтобы найти статьи по автоматическому тестированию.

2 Ответов

Рейтинг:
2

CHill60

Создайте форму с несколькими элементами управления RichTextBox.
- Не забудьте оставить один из элементов управления полностью пустым.
- Заполните остальные из них случайным текстом.
- Убедитесь, что хотя бы один из них повторил текст
- Обязательно выделите какой-нибудь текст в одном из них
Создайте кнопку для каждого элемента управления, который вызывает ваш код выше.
- Обязательно включите тестовый пример, в котором вы ищете текст, который является нет в управления richtextbox

Ты понимаешь, о чем я? Вам не нужно иметь несколько элементов управления и кнопок, просто было проще объяснить некоторые условия тестирования таким образом.

Здесь есть множество статей о тестировании CodeProject - смотрите их Поиск[^] результаты.

Один из способов визуально проверить, что вы прошли все пути через ваш код, - это использовать отладчик во время тестирования. Освоение отладки в Visual Studio 2010 - руководство для начинающих[^] для идей


Maciej Los

Полное руководство!

Рейтинг:
0

Patrice T

Цитата:
Как мне протестировать/смоделировать этот код? Помогите пожалуйста

Просто, вы знаете, что этот код должен делать, вы знаете, как и когда, контекст.
Чтобы протестировать код, установите подходящий контекст, запустите код и проверьте, соответствует ли результат ожиданиям. Повторите столько раз, сколько необходимо, чтобы охватить различные возможности.