myTestTable.Columns.Add(COLUMN_NAME_DATE_OF_TRAVEL, _
GetType(System.DateTime))
'Добавить столбец строк в таблицу DataTable набора данных DataSet
myTestTable.Columns.Add(COLUMN_NAME_PASSENGER_NAME, _
GetType(String))
'Добавить столбец строк в таблицу DataTable набора данных DataSet
myTestTable.Columns.Add(COLUMN_NAME_PASSENGER_CREDIT_CARD, _
GetType(String))
'Данные для размещения в строках данных
Dim objArray() As Object ReDim objArray(2)
'--------------------------------
'Добавить строки данных в таблицу
'--------------------------------
Dim buildTestString As System.Text.StringBuilder
buildTestString = New System.Text.StringBuilder
Dim addItemsCount As Integer
For addItemsCount = 1 To DUMMY_ROWS_OF_DATA
'Выбрать день отъезда пассажира
objArray(0) = System.DateTime.Today.AddDays(addItemsCount)
'Выбрать имя пассажира
buildTestString.Length = 0
buildTestString.Append("TestPersonName")
buildTestString.Append(addItemsCount)
objArray(1) = buildTestString.ToString()
'Связать с пассажиром текстовый номер кредитной карточки
buildTestString.Length = 0
buildTestString.Append("IvoCard-000-000-0000-")
buildTestString.Append(addItemsCount)
objArray(2) = buildTestString.ToString()
'Добавить элементы массива в строку набора данных
myTestTable.Rows.Add(objArray)
Next
'Добавить элемент, поиск которого мы хотим проводить при выполнении теста
objArray(0) = System.DateTime.Today
objArray(1) = "Ms. TestPerson"
objArray(2) = ТЕST_CREDIT_CARD
'Добавить элементы массива в строку набора данных
myTestTable.Rows.Add(objArray)
End Sub
'---------------------------------------------------------------
'Найти и кэшировать все индексы набора данных, которые нам нужны
'---------------------------------------------------------------
Private Sub cacheDataSetInfo()
'Выйти из функции, если индексы уже загружены
If (m_indexesLookedUp = True) Then Return
'Кэшировать индекс таблицы
m_IndexOfTestTable = _
m_myDataSet.Tables.IndexOf(TABLE_NAME_PASSENGERINFO)
'------------------------------------------
'Итерировать по всем столбцам нашей таблицы
'и кэшировать индексы нужных столбцов
'------------------------------------------
mTableCustomerInfo = m_myDataSet.Tables(m_IndexOfTestTable)
Dim dataColumnCount As Integer
dataColumnCount = m_TableCustomerInfo.Columns.Count
Dim myColumn As System.Data.DataColumn
Dim colIdx As Integer
While (colIdx < dataColumnCount)
myColumn = m_TableCustomerInfo.Columns(colIdx)
'Предпринимать поиск, только если это еще не сделано
If (m_IndexOfTestColumn_CreditCard = INVALID_INDEX) Then
'Проверить, совпадает ли имя
If (myColumn.ColumnName = _
COLUMN_NAME_PASSENGER_CREDIT_CARD) Then
'Кэшировать индекс
m_IndexOfTestColumn_CreditCard = colIdx
'Кэшировать столбец
m_TestColumn_CreditCard = myColumn
GoTo next_loop_iteration 'Опустить другие операции сравнения...
End If 'Endif: сравнение строк
End If
If (m _IndexOfTestColumn_TravelDate = INVALID_INDEX) Then
'Проверить, совпадает ли имя
If (myColumn.ColumnName = _
COLUMN_NAME_DATE_OF_TRAVEL) Then
'Кэшировать индекс
m_IndexOfTestColumn_TravelDate = colIdx
'Кэшировать столбец
m_TestColumn_TravelDate = myColumn
GoTo next_loop_iteration 'Опустить другие операции сравнения
End If 'Endif: сравнение строк
End If
next_loop_iteration:
colIdx = colIdx + 1
End While
m_indexesLookedUp = True
End Sub
'---------------
'Выполнить тест.
'---------------
Sub changeDayOfTravel_test(ByVal kindOfTest As testType)
'Отобразить курсор ожидания
System.Windows.Forms.Cursor.Current = _
System.Windows.Forms.Cursors.WaitCursor
'Начать с известной даты
Dim newDate As System.DateTime
newDate = System.DateTime.Today
changeDayOfTravel_textColumnLookup(TEST_CREDIT_CARD, newDate)
'ДОПУСТИМО ТОЛЬКО ДЛЯ ТЕСТОВОГО КОДА!!!
'Вызов сборщика мусора в коде ЗАМЕДЛИТ работу вашего приложения!
System.GC.Collect()
Const testNumber As Integer = 0
'Настроить соответствующим образом в зависимости от вида выполняемого теста
Select Case (kindOfTest)
Case testType.textColumnLookup
PerformanceSampling.StartSample(testNumber, _
"Text based Column lookup.")
Case testType.cachedIndexLookup
PerformanceSampling.StartSample(testNumber, _
"Cached Column Index lookup.")
Case testType.cachedColumnObject
PerformanceSampling.StartSample(testNumber, _
"Cached Column objects")
Case Else
Throw New Exception("Unknown state!")
End Select
'Выполнить тест!
Dim testCount As Integer
For testCount = 1 To NUMBER_TEST_ITERATIONS
'Передвинуть дату вперед на один день
newDate = newDate.AddDays(1)
Dim numberRecordsChanged As Integer = 0
'Какой вид теста мы выполняем?
Select Case (kindOfTest)
Case testType.textColumnLookup
Читать дальше