From 9df23c52804fadde1470851ca63ff6e54e4f9a8b Mon Sep 17 00:00:00 2001 From: KaidashA Date: Thu, 29 Oct 2026 14:55:06 +0400 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=205:?= =?UTF-8?q?=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=D0=BD=D1=8B=D0=B5=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D1=8B=20ProductCalculator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 487 ++++++++++++++++++++++ README.md | 21 + ShoeStore.Logic.slnx | 4 + ShoeStore.Logic/ProductCalculator.cs | 58 +++ ShoeStore.Logic/ShoeStore.Logic.csproj | 9 + ShoeStore.Tests/MSTestSettings.cs | 1 + ShoeStore.Tests/ProductCalculatorTests.cs | 55 +++ ShoeStore.Tests/ShoeStore.Tests.csproj | 21 + tests_result.png | Bin 0 -> 40331 bytes 9 files changed, 656 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 ShoeStore.Logic.slnx create mode 100644 ShoeStore.Logic/ProductCalculator.cs create mode 100644 ShoeStore.Logic/ShoeStore.Logic.csproj create mode 100644 ShoeStore.Tests/MSTestSettings.cs create mode 100644 ShoeStore.Tests/ProductCalculatorTests.cs create mode 100644 ShoeStore.Tests/ShoeStore.Tests.csproj create mode 100644 tests_result.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7282699 --- /dev/null +++ b/.gitignore @@ -0,0 +1,487 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from `dotnet new gitignore` + +# dotenv files +.env + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET +project.lock.json +project.fragment.lock.json +artifacts/ + +# Tye +.tye/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +# but not Directory.Build.rsp, as it configures directory-level build defaults +!Directory.Build.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e +# but not directories ending in .e2e +!*.e2e/ + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Official VS Code C# Dev Kit Extension exclusion +*.lscache + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml +.idea/ + +## +## Visual studio for Mac +## + + +# globs +Makefile.in +*.userprefs +*.usertasks +config.make +config.status +aclocal.m4 +install-sh +autom4te.cache/ +*.tar.gz +tarballs/ +test-results/ + +# content below from: https://github.com/github/gitignore/blob/main/Global/macOS.gitignore +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# content below from: https://github.com/github/gitignore/blob/main/Global/Windows.gitignore +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# Vim temporary swap files +*.swp diff --git a/README.md b/README.md new file mode 100644 index 0000000..fc26f28 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# Вариативная часть. Задание 5: тестирование программных модулей + +Проект ShoeStore.Logic содержит класс ProductCalculator (Приложение 4), проект ShoeStore.Tests - модульные тесты MSTest. + +## Протокол тестирования + +Фреймворк модульного тестирования: MSTest (.NET 8). + +Порядок запуска тестов: +1. Открыть решение в Visual Studio 2022. +2. Меню «Тест» -> «Обозреватель тестов». +3. Нажать «Запустить все тесты в представлении». + +Запуск из командной строки (в папке решения): dotnet test + +| № | Проверяемый случай | Входные данные | Ожидаемый результат | Фактический результат | Статус | +|---|---|---|---|---|---| +| 1 | Заказов в предыдущем месяце нет | Цена 2000; заказов нет; дата расчета 15.06.2027 | 1500 | 1500 | Пройден | +| 2 | Есть заказ в предыдущем месяце | Цена 2000; заказ 10.05.2027; дата расчета 15.06.2027 | 2000 | 2000 | Пройден | +| 3 | Граничное значение количества | Количество пар: 5 | мало | мало | Пройден | +| 4 | Количество больше порогового | Количество пар: 6 | много | много | Пройден | diff --git a/ShoeStore.Logic.slnx b/ShoeStore.Logic.slnx new file mode 100644 index 0000000..5a6d114 --- /dev/null +++ b/ShoeStore.Logic.slnx @@ -0,0 +1,4 @@ + + + + diff --git a/ShoeStore.Logic/ProductCalculator.cs b/ShoeStore.Logic/ProductCalculator.cs new file mode 100644 index 0000000..795620d --- /dev/null +++ b/ShoeStore.Logic/ProductCalculator.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace ShoeStore.Logic +{ + /// + /// Расчет показателей товара для каталога. + /// + public static class ProductCalculator + { + public const decimal DiscountPercent = 25m; + public const int ManyQuantityThreshold = 5; + + /// + /// Возвращает цену товара с учетом скидки. + /// Скидка 25% предоставляется, если в предыдущем календарном месяце + /// (относительно даты расчета) по товару не было заказов. + /// + /// Цена товара в рублях. + /// Даты заказов товара (может быть пустым). + /// Дата расчета. + public static decimal CalculateDiscountedPrice(decimal price, IEnumerable orderDates, DateTime calculationDate) + { + if (price < 0) + { + throw new ArgumentOutOfRangeException(nameof(price), "Цена не может быть отрицательной."); + } + if (orderDates == null) + { + throw new ArgumentNullException(nameof(orderDates)); + } + + DateTime currentMonthStart = new DateTime(calculationDate.Year, calculationDate.Month, 1); + DateTime previousMonthStart = currentMonthStart.AddMonths(-1); + bool hasOrdersInPreviousMonth = orderDates.Any(date => date >= previousMonthStart && date < currentMonthStart); + + if (hasOrdersInPreviousMonth) + { + return price; + } + return Math.Round(price * (100m - DiscountPercent) / 100m, 2); + } + + /// + /// Возвращает признак количества: «много», если пар больше пяти, иначе «мало». + /// + /// Количество пар суммарно по всем размерам. + public static string GetQuantityLabel(int totalQuantity) + { + if (totalQuantity < 0) + { + throw new ArgumentOutOfRangeException(nameof(totalQuantity), "Количество не может быть отрицательным."); + } + return totalQuantity > ManyQuantityThreshold ? "много" : "мало"; + } + } +} diff --git a/ShoeStore.Logic/ShoeStore.Logic.csproj b/ShoeStore.Logic/ShoeStore.Logic.csproj new file mode 100644 index 0000000..b760144 --- /dev/null +++ b/ShoeStore.Logic/ShoeStore.Logic.csproj @@ -0,0 +1,9 @@ + + + + net10.0 + enable + enable + + + diff --git a/ShoeStore.Tests/MSTestSettings.cs b/ShoeStore.Tests/MSTestSettings.cs new file mode 100644 index 0000000..aaf278c --- /dev/null +++ b/ShoeStore.Tests/MSTestSettings.cs @@ -0,0 +1 @@ +[assembly: Parallelize(Scope = ExecutionScope.MethodLevel)] diff --git a/ShoeStore.Tests/ProductCalculatorTests.cs b/ShoeStore.Tests/ProductCalculatorTests.cs new file mode 100644 index 0000000..9a890a6 --- /dev/null +++ b/ShoeStore.Tests/ProductCalculatorTests.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using ShoeStore.Logic; + +namespace ShoeStore.Tests +{ + [TestClass] + public class ProductCalculatorTests + { + // Случай 1: заказов в предыдущем месяце нет - цена со скидкой + [TestMethod] + public void CalculateDiscountedPrice_NoOrdersInPreviousMonth_ReturnsPriceWithDiscount() + { + decimal price = 2000m; + List orderDates = new List(); + DateTime calculationDate = new DateTime(2027, 6, 15); + + decimal result = ProductCalculator.CalculateDiscountedPrice(price, orderDates, calculationDate); + + Assert.AreEqual(1500m, result); + } + + // Случай 2: есть заказ в предыдущем месяце - цена без скидки + [TestMethod] + public void CalculateDiscountedPrice_OrderInPreviousMonth_ReturnsPriceWithoutDiscount() + { + decimal price = 2000m; + List orderDates = new List { new DateTime(2027, 5, 10) }; + DateTime calculationDate = new DateTime(2027, 6, 15); + + decimal result = ProductCalculator.CalculateDiscountedPrice(price, orderDates, calculationDate); + + Assert.AreEqual(2000m, result); + } + + // Случай 3: граничное значение - «мало» + [TestMethod] + public void GetQuantityLabel_FivePairs_ReturnsFew() + { + string result = ProductCalculator.GetQuantityLabel(5); + + Assert.AreEqual("мало", result); + } + + // Случай 4: больше порогового - «много» + [TestMethod] + public void GetQuantityLabel_SixPairs_ReturnsMany() + { + string result = ProductCalculator.GetQuantityLabel(6); + + Assert.AreEqual("много", result); + } + } +} diff --git a/ShoeStore.Tests/ShoeStore.Tests.csproj b/ShoeStore.Tests/ShoeStore.Tests.csproj new file mode 100644 index 0000000..dd16a89 --- /dev/null +++ b/ShoeStore.Tests/ShoeStore.Tests.csproj @@ -0,0 +1,21 @@ + + + + net10.0 + enable + enable + + + + + + + + + + + + + + + diff --git a/tests_result.png b/tests_result.png new file mode 100644 index 0000000000000000000000000000000000000000..8aadafea161aac4185117ca5e0328738c091514d GIT binary patch literal 40331 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%0AXY3^wDWm4+>Xn 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�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