summaryrefslogtreecommitdiff
path: root/RhSolutions.Parsers.Tests
diff options
context:
space:
mode:
authorSerghei Cebotari <serghei@cebotari.ru>2024-02-08 17:11:11 +0300
committerSerghei Cebotari <serghei@cebotari.ru>2024-02-08 17:11:11 +0300
commit69db707d6803ada3891e4e71b8660ad095392973 (patch)
treed188676a0a5c40816fc6fa73955e883ea1f8c206 /RhSolutions.Parsers.Tests
parenta9ce0c1785ce7c220ff953db7a21cf33535c6d26 (diff)
Rename Parser projects
Diffstat (limited to 'RhSolutions.Parsers.Tests')
-rw-r--r--RhSolutions.Parsers.Tests/ProductParsersTests.cs14
-rw-r--r--RhSolutions.Parsers.Tests/RautitanFittingsTests.cs146
-rw-r--r--RhSolutions.Parsers.Tests/RautitanPipesTests.cs31
-rw-r--r--RhSolutions.Parsers.Tests/RhSolutions.Parsers.Tests.csproj29
-rw-r--r--RhSolutions.Parsers.Tests/TestServiceCollection.cs23
-rw-r--r--RhSolutions.Parsers.Tests/Usings.cs2
6 files changed, 245 insertions, 0 deletions
diff --git a/RhSolutions.Parsers.Tests/ProductParsersTests.cs b/RhSolutions.Parsers.Tests/ProductParsersTests.cs
new file mode 100644
index 0000000..1108a2d
--- /dev/null
+++ b/RhSolutions.Parsers.Tests/ProductParsersTests.cs
@@ -0,0 +1,14 @@
+using Microsoft.Extensions.DependencyInjection;
+
+namespace RhSolutions.Api.Tests;
+
+public abstract class ProductParsersTests
+{
+ public void Invoke(string productType, string query, string expected)
+ {
+ var modifier = TestServiceCollection.ServiceProvider?.GetRequiredKeyedService<IProductParser>(productType);
+ string actual = string.Empty;
+ Assert.That(modifier?.TryParse(query, out actual), Is.True);
+ Assert.That(actual, Is.EqualTo(expected));
+ }
+}
diff --git a/RhSolutions.Parsers.Tests/RautitanFittingsTests.cs b/RhSolutions.Parsers.Tests/RautitanFittingsTests.cs
new file mode 100644
index 0000000..e20fcda
--- /dev/null
+++ b/RhSolutions.Parsers.Tests/RautitanFittingsTests.cs
@@ -0,0 +1,146 @@
+
+namespace RhSolutions.Api.Tests;
+
+public class RautitanFittingsTests : ProductParsersTests
+{
+ [TestCase("Гильза 16", "Монтажная гильза 16")]
+ [TestCase("Пресс-втулка 20", "Монтажная гильза 20")]
+ [TestCase("UPONOR Q&E EVOLUTION КОЛЬЦО БЕЛОЕ 16 '900Ф", "Монтажная гильза 16")]
+ public void SleeveTest(string query, string modified)
+ => Invoke(productType: "Монтажная гильза", query, modified);
+
+ [TestCase("Гофра 16", "Гофротруба защитн.для ПЭ-трубы 16/17")]
+ [TestCase("Гофра 20", "Гофротруба защитн.для ПЭ-трубы 20")]
+ public void ProtectivePipeTest(string query, string modified)
+ => Invoke(productType: "Гофротруба RAUTITAN", query, modified);
+
+ [TestCase("Фиксирующий желоб для ПЭ-трубы 16", "Фиксирующий желоб для ПЭ-трубы 16/17")]
+ [TestCase("Фиксирующий желоб для ПЭ-трубы 20", "Фиксирующий желоб для ПЭ-трубы 20")]
+ public void SupportingClipTest(string query, string modified)
+ => Invoke(productType: "Желоб", query, modified);
+
+ [TestCase("Тройник 20-16-16", "Тройник -PLATINUM 20-16-16")]
+ [TestCase("Тройник 20x16x16", "Тройник -PLATINUM 20-16-16")]
+ [TestCase("Тройник 20-16-25", "Тройник -PLATINUM 25-16-20")]
+ public void TPieceTest(string query, string modified)
+ => Invoke(productType: "Тройник RAUTITAN", query, modified);
+
+ [TestCase("муфта 20", "Муфта соединительная равнопроходная 20")]
+ [TestCase("переходник 20-16", "Муфта соединительная переходная 20-16")]
+ [TestCase("переходник 16-20", "Муфта соединительная переходная 20-16")]
+ [TestCase("Соединение труба-труба 20/20, бронза", "Муфта соединительная равнопроходная 20")]
+ [TestCase("Муфта соединительная переходная 20x16 для труб из сшитого полиэтилена аксиальный", "Муфта соединительная переходная 20-16")]
+ public void CouplingTest(string query, string modified)
+ => Invoke(productType: "Муфта соединительная", query, modified);
+
+ [TestCase("Переходник с внутренней резьбой 16xG 3/4\" для труб из сшитого полиэтилена аксиальный", "Переходник с внутренней резьбой -угольник-переходник 16 3/4")]
+ public void AdapterInternalTest(string query, string modified)
+ => Invoke(productType: "Переходник на внутреннюю резьбу", query, modified);
+
+ [TestCase("Угольник 90°, 40 PX", "Угольник -PLATINUM 90 40")]
+ public void ElbowTest(string query, string modified)
+ => Invoke(productType: "Угольник RAUTITAN", query, modified);
+
+ [TestCase("Уголок соединительный с ниппелем 20 х 1/2'', бронза", "Угольник-переходник с наружной резьбой 20 1/2")]
+ public void ThreadElbowExternalTest(string query, string modified)
+ => Invoke(productType: "Угольник с наружной резьбой", query, modified);
+
+ [TestCase("Уголок соединительный с муфтой 16 х 1/2\", бронза", "Угольник-переходник с внутренней резьбой 16 1/2")]
+ public void ThreadElbowInternalTest(string query, string modified)
+ => Invoke(productType: "Угольник с внутренней резьбой", query, modified);
+
+ [TestCase("Угольник-переходник с накидной гайкой 16-G 1/2 RX+", "Угольник-переходник с накидной гайкой 16 1/2")]
+ [TestCase("Соединение угловое с накидной гайкой 16 х 1/2\", латунь", "Угольник-переходник с накидной гайкой 16 1/2")]
+ public void ScrewcapElbowTest(string query, string modified)
+ => Invoke(productType: "Угольник с накидной гайкой", query, modified);
+
+ [TestCase("Тройник с внутр. резьбой на боков. проходе 25-Rp 1/2-25 RX+", "Тройник с внутр. резьбой на боков. проходе 25-Rp 1/2-25")]
+ [TestCase("Тройник настенный с внутренней резьбой 16-Rp1/2-16 RX+", "Тройник настенный с внутренней резьбой 16-Rp1/2-16")]
+ public void ThreadTPieceInternalTest(string query, string modified)
+ => Invoke(productType: "Тройник RAUTITAN резьбовой внутренний", query, modified);
+
+ [TestCase("Тройник RAUTITAN RX+ с наружной резьбой 20-20-R 3/4", "Тройник с наружной резьбой 20-20-R 3/4")]
+ public void ThreadTPieceExternalTest(string query, string modified)
+ => Invoke(productType: "Тройник RAUTITAN резьбовой наружный", query, modified);
+
+ [TestCase("Фиксатор поворота трубы 16/17/90°, без колец (оцинк. сталь)", "Фиксатор поворота 16/17/90°")]
+ [TestCase("Дуга 90° 25", "Фиксатор поворота 25/90°")]
+ [TestCase("Дуга 90° r/d >= 2.5. Ø25 (767025)", "Фиксатор поворота 25/90°")]
+ public void BendFormerHeatingTest(string query, string modified)
+ => Invoke(productType: "Фиксатор поворота отопление", query, modified);
+
+ [TestCase("Фиксатор поворота с кольцами 90°, 32", "Фиксатор поворота с кольцами 90° 32")]
+ [TestCase("Фиксатор поворота с кольцами 45°, 16", "Фиксатор поворота с кольцами 45° 16")]
+ public void BendFormerSanitaryTest(string query, string modified)
+ => Invoke(productType: "Фиксатор поворота водоснабжение", query, modified);
+
+ [TestCase("Угольник настенный с наружной резьбой 16-R 1/2 RX+", "Угольник настенный с наружной резьбой 16-R 1/2")]
+ public void ThreadElbowWallExternalTest(string query, string modified)
+ => Invoke(productType: "Угольник настенный наружный", query, modified);
+
+ [TestCase("Угольник настенный с внутр. резьбой 16-Rp 1/2 RX+", "Угольник настенный внутр. резьба 16-Rp 1/2")]
+ [TestCase("Угольник настенный с длинным патрубком, внутр. резьба 16-Rp 1/2 RX+", "Угольник настенный внутр. резьба длинный 16-Rp 1/2")]
+ [TestCase("Уголок с настенным креплением, удлиненный, 16 х 1/2'', бронза", "Угольник настенный внутр. резьба длинный 16-Rp 1/2")]
+ public void ThreadElbowWallInternalTest(string query, string modified)
+ => Invoke(productType: "Угольник настенный внутренний", query, modified);
+
+ [TestCase("Проточный настенный угольник 16/16-Rp 1/2 длинный RX+", "Проточный настенный угольник 16/16-Rp 1/2 длинный")]
+ [TestCase("Проточный настенный угольник 16/16-Rp 1/2 короткий RX+", "Проточный настенный угольник 16/16-Rp 1/2 короткий")]
+ public void ThreadElbowDoubleWallInternalTest(string query, string modified)
+ => Invoke(productType: "Проточный настенный угольник", query, modified);
+
+ [TestCase("Трубка из. нерж. стали для подкл. радиатора, Г-образная 16/250", "Трубка Г-образная 16/250")]
+ [TestCase("Монтажная трубка для радиатора, конечная, 16 х 15 х 300 мм", "Трубка Г-образная 16/250")]
+ public void ConnectionBendTest(string query, string modified)
+ => Invoke(productType: "Трубка Г-образная", query, modified);
+
+ [TestCase("Трубка из. нерж. стали для подкл. радиатора, Т-образная 16/250", "Трубка Т-образная 16/250")]
+ [TestCase("Монтажная трубка для радиатора, проходная 20 х 15 х 300 мм", "Трубка Т-образная 20/250")]
+ public void ConnectionTeeTest(string query, string modified)
+ => Invoke(productType: "Трубка Т-образная", query, modified);
+
+ [TestCase("Заглушка для полимерн. трубы 16 RX+", "Заглушка для полимерн. трубы 16")]
+ [TestCase("Заглушка 20", "Заглушка для полимерн. трубы 20")]
+ [TestCase("Заглушка, 16, латунь", "Заглушка для полимерн. трубы 16")]
+ public void DummyPlugTest(string query, string modified)
+ => Invoke(productType: "Заглушка труб RAUTITAN", query, modified);
+
+ [TestCase("Концовка разб. 3/4'' (еврок) для универс. трубы 16", "Резьбозажимное соединение flex/pink 16х2,2xG3/4")]
+ [TestCase("Переходник компрессионный PEX 20х2.8-G 3/4\" Евроконус", "Резьбозажимное соединение flex/pink 20х2,8xG3/4")]
+ [TestCase("Резьбозажимное соединение flex/pink 20х2,8xG3/4", "Резьбозажимное соединение flex/pink 20х2,8xG3/4")]
+ public void EuroconeFlexTest(string query, string modified)
+ => Invoke(productType: "Резьбозажимное flex", query, modified);
+
+ [TestCase("Резьбозажимное соединение stabil 16,2x2,6xG3/4", "Резьбозажимное соединение stabil 16,2x2,6xG3/4")]
+ [TestCase("Резьбозажимное соединение stabil 20x2,9xG3/4", "Резьбозажимное соединение stabil 20x2,9xG3/4")]
+ [TestCase("Концовка разб.3/4''(еврок.) для PE-Xc и PE-MDXс 16", "Резьбозажимное соединение stabil 16,2x2,6xG3/4")]
+ public void EuroconeStabilTest(string query, string modified)
+ => Invoke(productType: "Резьбозажимное stabil", query, modified);
+
+ [TestCase("Переходник на евроконус 16-G 3/4", "Переходник на евроконус 16-G 3/4")]
+ [TestCase("Соед.прям. с вн.резьбой (н.гайка, еврок.) 16 ник.", "Переходник на евроконус 16-G 3/4")]
+ [TestCase("Переходник с накидной гайкой 16x2.2 -G 3/4\" Евроконус, c гильзой в комплекте", "Переходник на евроконус 16-G 3/4")]
+ public void EuroconeAdapterTest(string query, string modified)
+ => Invoke(productType: "Переходник на евроконус", query, modified);
+
+ [TestCase("Резьбозажимное соединение для металлической трубки G 3/4 -15", "Резьбозажимное соединение для металлической трубки G 3/4 -15")]
+ [TestCase("Концовка для монтажной трубы 15 х 1/2''", "Резьбозажимное соединение для металлической трубки G 3/4 -15")]
+ [TestCase("Фитинг подключения L и T-образной медной трубки - D15 - G 3/4", "Резьбозажимное соединение для металлической трубки G 3/4 -15")]
+ public void EuroconeConnectionBendTest(string query, string modified)
+ => Invoke(productType: "Резьбозажимное для трубки", query, modified);
+
+ [TestCase("Ниппель", "К-т двух резьбозажим. нипелей с нар.резьбой 1/2х3/4")]
+ public void NippelTest(string query, string modified)
+ => Invoke(productType: "Ниппель", query, modified);
+
+ [TestCase("Распределительный коллектор G1 2 отвода G 3/4", "Распределительный коллектор G1 2")]
+ [TestCase("Коллектор Квартирный с отсекающими кранами, латунь ДУ20, НР-ВР 3/4\", 3 контура НР 1/2", "Распределительный коллектор G1 3")]
+ [TestCase("Коллектор Квартирный с отсекающими кранами, латунь ДУ20, НР-ВР 3/\", 4 контура НР 1/2\"", "Распределительный коллектор G1 4")]
+ public void ManifoldG1Test(string query, string modified)
+ => Invoke(productType: "Коллектор G1", query, modified);
+
+ [TestCase("Распределительный коллектор HLV на 2 группы нерж. сталь", "Распределительный коллектор HLV на 2 групп")]
+ [TestCase("Распределительный коллектор HLV на 12 групп нерж. сталь", "Распределительный коллектор HLV на 12 групп")]
+ public void ManifoldHLVTest(string query, string modified)
+ => Invoke(productType: "Коллектор HLV", query, modified);
+}
diff --git a/RhSolutions.Parsers.Tests/RautitanPipesTests.cs b/RhSolutions.Parsers.Tests/RautitanPipesTests.cs
new file mode 100644
index 0000000..12755d9
--- /dev/null
+++ b/RhSolutions.Parsers.Tests/RautitanPipesTests.cs
@@ -0,0 +1,31 @@
+
+namespace RhSolutions.Api.Tests;
+
+public class RautitanPipesTests : ProductParsersTests
+{
+ [TestCase("Унив.труба RAUTITAN flex 16x2,2, бухта 100м", "Труба Flex 16x2,2 бухта")]
+ [TestCase("Труба flex 16", "Труба Flex 16x2,2 бухта")]
+ [TestCase("Унив.труба RAUTITAN flex 32x4,4, прям.отрезки 6м", "Труба Flex 32x4,4 прям.отрезки")]
+ [TestCase("Труба flex 32", "Труба Flex 32x4,4 прям.отрезки")]
+ public void FlexPipeTest(string query, string modified)
+ => Invoke(productType: "Flex", query, modified);
+
+ [TestCase("Унив. труба RAUTITAN pink+ 16х2,2 мм, бухта 120 м", "Труба Pink+ 16х2,2 бухта")]
+ [TestCase("труба pink 16", "Труба Pink+ 16х2,2 бухта")]
+ [TestCase("Унив. труба RAUTITAN pink+ 32х4,4 мм, бухта 50 м", "Труба Pink+ 32х4,4 бухта")]
+ [TestCase("труба pink 32", "Труба Pink+ 32х4,4 прямые отрезки")]
+ public void PinkPipeTest(string query, string modified)
+ => Invoke(productType: "Pink", query, modified);
+
+ [TestCase("Универсальн.труба RAUTITAN stabil 16,2х2,6 мм, бухта 100 м", "Труба Stabil -PLATINUM 16,2х2,6 бухта")]
+ [TestCase("труба stabil 16", "Труба Stabil -PLATINUM 16,2х2,6 бухта")]
+ [TestCase("Универсальн.труба RAUTITAN stabil 32х4,7 мм, прям.отрезки 5м", "Труба Stabil -PLATINUM 32х4,7 прям.отрезки")]
+ [TestCase("труба stabil 32", "Труба Stabil -PLATINUM 32х4,7 прям.отрезки")]
+ public void StabilPipeTest(string query, string modified)
+ => Invoke(productType: "Stabil", query, modified);
+
+ [TestCase("Отоп.труба РЕХАУ BLACK 16х2,2 мм, бухта 200 м", "Труба Black 16х2,2 бухта")]
+ [TestCase("труба BLACK 16", "Труба Black 16х2,2 бухта")]
+ public void BlackPipeTest(string query, string modified)
+ => Invoke(productType: "Black", query, modified);
+} \ No newline at end of file
diff --git a/RhSolutions.Parsers.Tests/RhSolutions.Parsers.Tests.csproj b/RhSolutions.Parsers.Tests/RhSolutions.Parsers.Tests.csproj
new file mode 100644
index 0000000..54c5487
--- /dev/null
+++ b/RhSolutions.Parsers.Tests/RhSolutions.Parsers.Tests.csproj
@@ -0,0 +1,29 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net8.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ <IsPackable>false</IsPackable>
+ <IsPublishable>false</IsPublishable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
+ <PackageReference Include="NUnit" Version="4.0.1" />
+ <PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
+ <PackageReference Include="NUnit.Analyzers" Version="4.0.1">
+ <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+ <PrivateAssets>all</PrivateAssets>
+ </PackageReference>
+ <PackageReference Include="coverlet.collector" Version="6.0.0">
+ <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+ <PrivateAssets>all</PrivateAssets>
+ </PackageReference>
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\RhSolutions.Parsers\RhSolutions.Parsers.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git a/RhSolutions.Parsers.Tests/TestServiceCollection.cs b/RhSolutions.Parsers.Tests/TestServiceCollection.cs
new file mode 100644
index 0000000..9f15c89
--- /dev/null
+++ b/RhSolutions.Parsers.Tests/TestServiceCollection.cs
@@ -0,0 +1,23 @@
+using Microsoft.Extensions.DependencyInjection;
+
+namespace RhSolutions.Api.Tests;
+
+[SetUpFixture]
+public class TestServiceCollection
+{
+ public static ServiceProvider? ServiceProvider { get; private set; }
+
+ [OneTimeSetUp]
+ public void CreateProvider()
+ {
+ var collection = new ServiceCollection();
+ collection.AddModifiers();
+ ServiceProvider = collection.BuildServiceProvider();
+ }
+
+ [OneTimeTearDown]
+ public void DisposeProvider()
+ {
+ ServiceProvider?.Dispose();
+ }
+} \ No newline at end of file
diff --git a/RhSolutions.Parsers.Tests/Usings.cs b/RhSolutions.Parsers.Tests/Usings.cs
new file mode 100644
index 0000000..af50770
--- /dev/null
+++ b/RhSolutions.Parsers.Tests/Usings.cs
@@ -0,0 +1,2 @@
+global using NUnit.Framework;
+global using RhSolutions.Parsers; \ No newline at end of file