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 FormRoutesTests : Form { /// /// Логгер /// private readonly ILogger _logger; /// /// Бизнес-логика для маршрутов /// private readonly IRouteLogic _routeLogic; /// /// Бизнес-логика для транспорта /// private readonly ITransportLogic _transportLogic; /// /// Конструктор /// /// /// /// public FormRoutesTests(ILogger logger, IRouteLogic routeLogic, ITransportLogic transportLogic) { InitializeComponent(); _logger = logger; _routeLogic = routeLogic; _transportLogic = transportLogic; 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("RouteInsertTest. Count: {Count}", entitiesCount); try { double time = 0; var stopwatch = new Stopwatch(); object transportId = _transportLogic.ReadList(1)![0].Id; for (int i = 1; i <= entitiesCount; i++) { var model = new RouteBindingModel { Id = 0, Name = $"Маршрут {i}", TransportId = transportId }; stopwatch.Restart(); var operationResult = _routeLogic.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, "RouteInsertTest. 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("RouteReadTest. Count: {Count}", entitiesCount); try { var stopwatch = new Stopwatch(); stopwatch.Start(); _routeLogic.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, "RouteReadTest. 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("RouteDeleteTest. Count: {Count}", entitiesCount); try { double time = 0; var stopwatch = new Stopwatch(); for (int i = 1; i <= entitiesCount; i++) { stopwatch.Restart(); _routeLogic.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, "RouteDeleteTest. Test failed"); MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }