using Microsoft.Extensions.Logging; using RouteGuideBusinessLogics.BusinessLogics; using RouteGuideContracts.BindingModels; using RouteGuideContracts.BusinessLogicsContracts; 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; using static System.Windows.Forms.VisualStyles.VisualStyleElement.TaskbarClock; namespace RouteGuideView { /// /// Форма с тестами для сущности "Остановка" /// public partial class FormStopsTests : Form { /// /// Логгер /// private readonly ILogger _logger; /// /// Бизнес-логика /// private readonly IStopLogic _stopLogic; /// /// Конструктор /// /// /// public FormStopsTests(ILogger logger, IStopLogic stopLogic) { InitializeComponent(); _logger = logger; _stopLogic = stopLogic; numericUpDownInsert.Maximum = 10000; numericUpDownRead.Maximum = 10000; numericUpDownDelete.Maximum = 10000; } /// /// Кнопка "Создать" /// /// /// private void buttonInsert_Click(object sender, EventArgs e) { int entitiesCount = Convert.ToInt32(numericUpDownInsert.Value); _logger.LogInformation("StopInsertTest. Count: {Count}", entitiesCount); try { double time = 0; var stopwatch = new Stopwatch(); for (int i = 1; i <= entitiesCount; i++) { var model = new StopBindingModel { Id = 0, Name = $"Остановка {i}", Street = $"Улица {i}", Number = i }; stopwatch.Restart(); var operationResult = _stopLogic.Create(model); if (!operationResult) { throw new Exception("Ошибка при сохранении сущности 'Остановка'. Дополнительная информация в логах."); } stopwatch.Stop(); time += stopwatch.ElapsedMilliseconds; } labelInsertTime.Text = $"Total time: {Convert.ToInt32(time)} ms / Average time: {Convert.ToInt32(time / entitiesCount)} ms"; } catch (Exception ex) { _logger.LogError(ex, "StopInsertTest. 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("StopReadTest. Count: {Count}", entitiesCount); try { var stopwatch = new Stopwatch(); stopwatch.Start(); _stopLogic.ReadList(entitiesCount); stopwatch.Stop(); labelReadTime.Text = $"Total time: {Convert.ToInt32(stopwatch.ElapsedMilliseconds)} ms / Average time: {Convert.ToInt32(stopwatch.ElapsedMilliseconds / entitiesCount)} ms"; } catch (Exception ex) { _logger.LogError(ex, "StopReadTest. 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("StopDeleteTest. Count: {Count}", entitiesCount); try { double time = 0; var stopwatch = new Stopwatch(); for (int i = 1; i <= entitiesCount; i++) { stopwatch.Restart(); _stopLogic.Delete(); stopwatch.Stop(); time += stopwatch.ElapsedMilliseconds; } labelDeleteTime.Text = $"Total time: {Convert.ToInt32(time)} ms / Average time: {Convert.ToInt32(time / entitiesCount)} ms"; } catch (Exception ex) { _logger.LogError(ex, "StopDeleteTest. Test failed"); MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }