171 lines
4.4 KiB
C#
171 lines
4.4 KiB
C#
|
using RhSolutions.Models;
|
||
|
|
||
|
namespace RhSolutions.Tests;
|
||
|
|
||
|
public class SkuTests
|
||
|
{
|
||
|
[Fact]
|
||
|
public void EqualityTest()
|
||
|
{
|
||
|
Product p1 = new("11600011001")
|
||
|
{
|
||
|
Name = "Test",
|
||
|
ProductLines = new List<string>
|
||
|
{
|
||
|
"TestLine"
|
||
|
},
|
||
|
IsOnWarehouse = true,
|
||
|
ProductMeasure = Measure.Kg,
|
||
|
DeliveryMakeUp = 100.0,
|
||
|
Price = 1000
|
||
|
};
|
||
|
|
||
|
Product p2 = new("11600011001")
|
||
|
{
|
||
|
Name = "Test",
|
||
|
ProductLines = new List<string>
|
||
|
{
|
||
|
"TestLine"
|
||
|
},
|
||
|
IsOnWarehouse = true,
|
||
|
ProductMeasure = Measure.Kg,
|
||
|
DeliveryMakeUp = 100.0,
|
||
|
Price = 1000
|
||
|
};
|
||
|
|
||
|
Product p3 = new("11600013001")
|
||
|
{
|
||
|
Name = "Test",
|
||
|
ProductLines = new List<string>
|
||
|
{
|
||
|
"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<string>
|
||
|
{
|
||
|
"TestLine"
|
||
|
},
|
||
|
IsOnWarehouse = true,
|
||
|
ProductMeasure = Measure.Kg,
|
||
|
DeliveryMakeUp = 100.0,
|
||
|
Price = 1000
|
||
|
};
|
||
|
|
||
|
Product p2 = new("11600011001")
|
||
|
{
|
||
|
Name = "Test",
|
||
|
ProductLines = new List<string>
|
||
|
{
|
||
|
"TestLine"
|
||
|
},
|
||
|
IsOnWarehouse = true,
|
||
|
ProductMeasure = Measure.Kg,
|
||
|
DeliveryMakeUp = 100.0,
|
||
|
Price = 1000
|
||
|
};
|
||
|
|
||
|
Product p3 = new("11600013001")
|
||
|
{
|
||
|
Name = "Test",
|
||
|
ProductLines = new List<string>
|
||
|
{
|
||
|
"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 _));
|
||
|
}
|
||
|
}
|