using Microsoft.Extensions.Logging; using RouteGuideContracts.BindingModels; using RouteGuideContracts.BusinessLogicsContracts; using RouteGuideContracts.SearchModels; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace RouteGuideView { /// /// Форма с тестами для сущности "Водитель" /// public partial class FormDriversTests : Form { /// /// Логгер /// private readonly ILogger _logger; /// /// Бизнес-логика /// private readonly IDriverLogic _driverLogic; /// /// Конструктор /// /// /// public FormDriversTests(ILogger logger, IDriverLogic driverLogic) { InitializeComponent(); _logger = logger; _driverLogic = driverLogic; numericUpDownInsert.Maximum = 1000; numericUpDownRead.Maximum = 1000; numericUpDownDelete.Maximum = 1000; } /// /// Кнопка "Создать" /// /// /// private void buttonInsert_Click(object sender, EventArgs e) { int entitiesCount = Convert.ToInt32(numericUpDownInsert.Value); _logger.LogInformation("DriverInsertTest. Count: {Count}", entitiesCount); try { double time = 0; var stopwatch = new Stopwatch(); for (int i = 1; i <= entitiesCount; i++) { var model = new DriverBindingModel { Id = 0, FullName = $"Водитель {i}", Phone = $"Номер {i}", Experience = 1 }; stopwatch.Start(); var operationResult = _driverLogic.Create(model); if (!operationResult) { throw new Exception("Ошибка при сохранении сущности 'Водитель'. Дополнительная информация в логах."); } stopwatch.Stop(); time += stopwatch.ElapsedMilliseconds; } labelInsertTime.Text = $"{Convert.ToInt32(time / entitiesCount)} ms"; } catch (Exception ex) { _logger.LogError(ex, "DriverInsertTest. Test failed"); MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } /// /// Кнопка "Получить" /// /// /// private void buttonRead_Click(object sender, EventArgs e) { int entitiesCount = Convert.ToInt32(numericUpDownRead.Value); _logger.LogInformation("DriverReadTest. Count: {Count}", entitiesCount); try { var stopwatch = new Stopwatch(); stopwatch.Start(); _driverLogic.ReadList(entitiesCount); stopwatch.Stop(); labelReadTime.Text = $"{stopwatch.ElapsedMilliseconds} ms"; } catch (Exception ex) { _logger.LogError(ex, "DriverReadTest. Test failed"); MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } /// /// Кнопка "Удалить" /// /// /// private void buttonDelete_Click(object sender, EventArgs e) { int entitiesCount = Convert.ToInt32(numericUpDownDelete.Value); _logger.LogInformation("DriverDeleteTest. Count: {Count}", entitiesCount); try { double time = 0; var stopwatch = new Stopwatch(); for (int i = 1; i <= entitiesCount; i++) { stopwatch.Start(); _driverLogic.Delete(); stopwatch.Stop(); time += stopwatch.ElapsedMilliseconds; } labelDeleteTime.Text = $"{Convert.ToInt32(time / entitiesCount)} ms"; } catch (Exception ex) { _logger.LogError(ex, "DriverDeleteTest. Test failed"); MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }