using RhSolutions.Models; namespace RhSolutions.Tests; public class SkuTests { [Fact] public void EqualityTest() { Product p1 = new("11600011001") { Name = "Test", ProductLines = new List { "TestLine" }, IsOnWarehouse = true, ProductMeasure = Measure.Kg, DeliveryMakeUp = 100.0, Price = 1000 }; Product p2 = new("11600011001") { Name = "Test", ProductLines = new List { "TestLine" }, IsOnWarehouse = true, ProductMeasure = Measure.Kg, DeliveryMakeUp = 100.0, Price = 1000 }; Product p3 = new("11600013001") { Name = "Test", ProductLines = new List { "TestLine" }, IsOnWarehouse = true, ProductMeasure = Measure.Kg, DeliveryMakeUp = 100.0, Price = 1000 }; Assert.True(p1.Equals(p2)); Assert.False(p1.Equals(p3)); } [Fact] public void ProductHashCodeTest() { Product p1 = new("11600011001") { Name = "Test", ProductLines = new List { "TestLine" }, IsOnWarehouse = true, ProductMeasure = Measure.Kg, DeliveryMakeUp = 100.0, Price = 1000 }; Product p2 = new("11600011001") { Name = "Test", ProductLines = new List { "TestLine" }, IsOnWarehouse = true, ProductMeasure = Measure.Kg, DeliveryMakeUp = 100.0, Price = 1000 }; Product p3 = new("11600013001") { Name = "Test", ProductLines = new List { "TestLine" }, IsOnWarehouse = true, ProductMeasure = Measure.Kg, DeliveryMakeUp = 100.0, Price = 1000 }; int hash1 = p1.GetHashCode(); int hash2 = p2.GetHashCode(); int hash3 = p3.GetHashCode(); Assert.True(hash1 == hash2); Assert.False(hash1 == hash3); } [Fact] public void SkuEqualityTest() { ProductSku sku1 = new("160001", "001"); ProductSku sku2 = new("11600011001"); Assert.True(sku1.Equals(sku2)); } [Fact] public void SkuHashCodeTest() { ProductSku sku1 = new("160001", "001"); ProductSku sku2 = new("11600011001"); int hash1 = sku1.GetHashCode(); int hash2 = sku2.GetHashCode(); Assert.True(hash1 == hash2); } [Theory] [InlineData("12222221333")] [InlineData("222222-333")] [InlineData("222222 333")] [InlineData("string 12222221333")] [InlineData("12222221333 string")] [InlineData("string 12222221333 string")] [InlineData("string 222222-333")] [InlineData("222222-333 string")] [InlineData("string 222222-333 string")] [InlineData("string 222222 333")] [InlineData("222222 333 string")] [InlineData("string 222222 333 string")] public void StandardSkuParseTest(string line) { Assert.True(ProductSku.TryParse(line, out var skus)); Assert.True(skus.First().Article == "222222" && skus.First().Variant == "333" && skus.First().Delimiter == '1'); } [Theory] [InlineData("12222223444")] [InlineData("string 12222223444")] [InlineData("12222223444 string")] [InlineData("string 12222223444 string")] public void NewSkuParseTest(string line) { Assert.True(ProductSku.TryParse(line, out var skus)); Assert.True(skus.First().Article == "222222" && skus.First().Variant == "444" && skus.First().Delimiter == '3'); } [Theory] [InlineData("160001-001 11384611001 160002 002 11600033003")] public void MultipleParseTest(string line) { Assert.True(ProductSku.TryParse(line, out var skus)); Assert.Equal(4, skus.Count()); } [Theory] [InlineData("160001 001")] [InlineData("160001*001")] [InlineData("160001001")] [InlineData("31600011001")] public void DoesntParse(string line) { Assert.False(ProductSku.TryParse(line, out _)); } }