diff --git a/README.md b/README.md index ddd2bd249..4cd32c9f6 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ |-------------------------------------------------------------------------------|-----------------------------------------------------------------------------| |![v](https://img.shields.io/badge/version-6.4.0-blue.svg?cacheSeconds=3600) |[Qowaiv](https://www.nuget.org/packages/Qowaiv/) | |![v](https://img.shields.io/badge/version-6.4.0-blue.svg?cacheSeconds=3600) |[Qowaiv.Data.SqlCient](https://www.nuget.org/packages/Qowaiv.Data.SqlClient/)| -|![v](https://img.shields.io/badge/version-6.4.0-darkblue.svg?cacheSeconds=3600)|[Qowaiv.TestTools](https://www.nuget.org/packages/Qowaiv.TestTools/) | +|![v](https://img.shields.io/badge/version-6.4.1-darkblue.svg?cacheSeconds=3600)|[Qowaiv.TestTools](https://www.nuget.org/packages/Qowaiv.TestTools/) | # Qowaiv diff --git a/specs/Qowaiv.Specs/Extensions/Type_specs.cs b/specs/Qowaiv.Specs/Extensions/Type_specs.cs index ac5d80aa2..da791777a 100644 --- a/specs/Qowaiv.Specs/Extensions/Type_specs.cs +++ b/specs/Qowaiv.Specs/Extensions/Type_specs.cs @@ -60,6 +60,7 @@ public void Supports_generic_arguments() public void With_namespaces_if_specified(Type type, string csharpString) => type.ToCSharpString(withNamespace: true).Should().Be(csharpString); + [EmptyTestClass] internal class NestedType { } internal static class GenericOf diff --git a/specs/Qowaiv.Specs/TestTools/Have_debugger_display_specs.cs b/specs/Qowaiv.Specs/TestTools/Have_debugger_display_specs.cs index cdf42c5ab..5b55fa872 100644 --- a/specs/Qowaiv.Specs/TestTools/Have_debugger_display_specs.cs +++ b/specs/Qowaiv.Specs/TestTools/Have_debugger_display_specs.cs @@ -43,4 +43,5 @@ internal class SimpleClass private string DebuggerDisplay => $"{GetType().Name} display"; } +[EmptyTestClass] internal sealed class ChildClass : SimpleClass { } diff --git a/specs/Qowaiv.Specs/TestTools/Svo.cs b/specs/Qowaiv.Specs/TestTools/Svo.cs index ad44fb73b..2bf7464ae 100644 --- a/specs/Qowaiv.Specs/TestTools/Svo.cs +++ b/specs/Qowaiv.Specs/TestTools/Svo.cs @@ -139,6 +139,11 @@ public override bool TryParse(string str, out object id) private static bool IsValid(long number) => (number & 1) == 1; } +[EmptyTestClass] public class ForString : StringIdBehavior { } + +[EmptyTestClass] public class ForGuid : GuidBehavior { } + +[EmptyTestClass] public class ForUuid : UuidBehavior { } diff --git a/specs/Qowaiv.Specs/UnitTests.OldStyle/Identifiers/IdForGuidTest.cs b/specs/Qowaiv.Specs/UnitTests.OldStyle/Identifiers/IdForGuidTest.cs index 983862592..a6369fadf 100644 --- a/specs/Qowaiv.Specs/UnitTests.OldStyle/Identifiers/IdForGuidTest.cs +++ b/specs/Qowaiv.Specs/UnitTests.OldStyle/Identifiers/IdForGuidTest.cs @@ -1,487 +1,475 @@ -using FluentAssertions; -using NUnit.Framework; -using Qowaiv.Identifiers; -using Qowaiv.TestTools; -using Qowaiv.TestTools.Globalization; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Runtime.Serialization; -using System.Xml.Serialization; - -namespace Qowaiv.UnitTests.Identifiers -{ - public sealed class ForGuid : GuidBehavior { } - - /// Tests the identifier SVO. - public class IdForGuidTest - { - /// The test instance for most tests. - public static readonly Id TestStruct = Id.Parse("0F5AB5AB-12CB-4629-878D-B18B88B9A504"); +namespace Qowaiv.UnitTests.Identifiers; - /// Id.Empty should be equal to the default of identifier. - [Test] - public void Empty_None_EqualsDefault() - { - Assert.AreEqual(default(Id), Id.Empty); - } - - /// Id.IsEmpty() should be true for the default of identifier. - [Test] - public void IsEmpty_Default_IsTrue() - { - Assert.IsTrue(default(Id).IsEmpty()); - } +[EmptyTestClass] +public sealed class ForGuid : GuidBehavior { } - /// Id.IsEmpty() should be false for the TestStruct. - [Test] - public void IsEmpty_TestStruct_IsFalse() - { - Assert.IsFalse(TestStruct.IsEmpty()); - } +/// Tests the identifier SVO. +public class IdForGuidTest +{ + /// The test instance for most tests. + public static readonly Id TestStruct = Id.Parse("0F5AB5AB-12CB-4629-878D-B18B88B9A504"); - [Test] - public void FromBytes_Null_IsEmpty() - { - var fromBytes = Id.FromBytes(null); - Assert.AreEqual(Id.Empty, fromBytes); - } + /// Id.Empty should be equal to the default of identifier. + [Test] + public void Empty_None_EqualsDefault() + { + Assert.AreEqual(default(Id), Id.Empty); + } - [Test] - public void FromBytes_Bytes_IsTestStruct() - { - var fromBytes = Id.FromBytes(new byte[] { 171, 181, 90, 15, 203, 18, 41, 70, 135, 141, 177, 139, 136, 185, 165, 4 }); - Assert.AreEqual(TestStruct, fromBytes); - } + /// Id.IsEmpty() should be true for the default of identifier. + [Test] + public void IsEmpty_Default_IsTrue() + { + Assert.IsTrue(default(Id).IsEmpty()); + } - [Test] - public void ToByteArray_Empty_EmptyArray() - { - var bytes = Id.Empty.ToByteArray(); - Assert.AreEqual(Array.Empty(), bytes); - } + /// Id.IsEmpty() should be false for the TestStruct. + [Test] + public void IsEmpty_TestStruct_IsFalse() + { + Assert.IsFalse(TestStruct.IsEmpty()); + } - [Test] - public void ToByteArray_TestStruct_FilledArray() - { - var bytes = TestStruct.ToByteArray(); - var exepected = new byte[] { 171, 181, 90, 15, 203, 18, 41, 70, 135, 141, 177, 139, 136, 185, 165, 4 }; - Assert.AreEqual(exepected, bytes); - } + [Test] + public void FromBytes_Null_IsEmpty() + { + var fromBytes = Id.FromBytes(null); + Assert.AreEqual(Id.Empty, fromBytes); + } - /// TryParse null should be valid. - [Test] - public void TryParse_Null_IsValid() - { - Assert.IsTrue(Id.TryParse(null, out var val)); - Assert.AreEqual(default(Id), val); - } + [Test] + public void FromBytes_Bytes_IsTestStruct() + { + var fromBytes = Id.FromBytes(new byte[] { 171, 181, 90, 15, 203, 18, 41, 70, 135, 141, 177, 139, 136, 185, 165, 4 }); + Assert.AreEqual(TestStruct, fromBytes); + } - /// TryParse string.Empty should be valid. - [Test] - public void TryParse_StringEmpty_IsValid() - { - Assert.IsTrue(Id.TryParse(string.Empty, out var val)); - Assert.AreEqual(default(Id), val); - } + [Test] + public void ToByteArray_Empty_EmptyArray() + { + var bytes = Id.Empty.ToByteArray(); + Assert.AreEqual(Array.Empty(), bytes); + } - /// TryParse with specified string value should be valid. - [Test] - public void TryParse_StringValue_IsValid() - { - string str = "0f5ab5ab-12cb-4629-878d-b18b88b9a504"; - Assert.IsTrue(Id.TryParse(str, out var val)); - Assert.AreEqual(str, val.ToString()); - } + [Test] + public void ToByteArray_TestStruct_FilledArray() + { + var bytes = TestStruct.ToByteArray(); + var exepected = new byte[] { 171, 181, 90, 15, 203, 18, 41, 70, 135, 141, 177, 139, 136, 185, 165, 4 }; + Assert.AreEqual(exepected, bytes); + } - /// TryParse with specified string value should be invalid. - [Test] - public void TryParse_StringValue_IsNotValid() - { - string str = "0F5AB5AB-12CB-4629-878D"; - Assert.IsFalse(Id.TryParse(str, out var val)); - Assert.AreEqual(default(Id), val); - } + /// TryParse null should be valid. + [Test] + public void TryParse_Null_IsValid() + { + Assert.IsTrue(Id.TryParse(null, out var val)); + Assert.AreEqual(default(Id), val); + } - [Test] - public void Parse_InvalidInput_ThrowsFormatException() - { - using (TestCultures.En_GB.Scoped()) - { - Assert.Catch(() => - { - Id.Parse("InvalidInput"); - } + /// TryParse string.Empty should be valid. + [Test] + public void TryParse_StringEmpty_IsValid() + { + Assert.IsTrue(Id.TryParse(string.Empty, out var val)); + Assert.AreEqual(default(Id), val); + } - , "Not a valid identifier"); - } - } + /// TryParse with specified string value should be valid. + [Test] + public void TryParse_StringValue_IsValid() + { + string str = "0f5ab5ab-12cb-4629-878d-b18b88b9a504"; + Assert.IsTrue(Id.TryParse(str, out var val)); + Assert.AreEqual(str, val.ToString()); + } - [Test] - public void TryParse_TestStructInput_AreEqual() - { - using (TestCultures.En_GB.Scoped()) - { - var exp = TestStruct; - var act = Id.TryParse(exp.ToString()); - Assert.AreEqual(exp, act); - } - } + /// TryParse with specified string value should be invalid. + [Test] + public void TryParse_StringValue_IsNotValid() + { + string str = "0F5AB5AB-12CB-4629-878D"; + Assert.IsFalse(Id.TryParse(str, out var val)); + Assert.AreEqual(default(Id), val); + } - [Test] - public void TryParse_InvalidInput_DefaultValue() + [Test] + public void Parse_InvalidInput_ThrowsFormatException() + { + using (TestCultures.En_GB.Scoped()) { - using (TestCultures.En_GB.Scoped()) + Assert.Catch(() => { - var exp = default(Id); - var act = Id.TryParse("InvalidInput"); - Assert.AreEqual(exp, act); + Id.Parse("InvalidInput"); } - } - - [Test] - public void TryCreate_Int_NotSuccessful() - { - Assert.IsFalse(Id.TryCreate(17L, out _)); - } - [Test] - public void TryCreate_Guid_Successful() - { - Assert.IsTrue(Id.TryCreate(Guid.Parse("0F5AB5AB-12CB-4629-878D-B18B88B9A504"), out var id)); - Assert.AreEqual(Id.Parse("0F5AB5AB-12CB-4629-878D-B18B88B9A504"), id); - } - - [Test] - public void GetObjectData_NulSerializationInfo_Throws() - { - ISerializable obj = TestStruct; - Assert.Catch(() => obj.GetObjectData(null, default)); - } - - [Test] - public void GetObjectData_SerializationInfo_AreEqual() - { - ISerializable obj = TestStruct; - var info = new SerializationInfo(typeof(Id), new FormatterConverter()); - obj.GetObjectData(info, default); - Assert.AreEqual(Guid.Parse("0F5AB5AB-12CB-4629-878D-B18B88B9A504"), info.GetValue("Value", typeof(Guid))); + , "Not a valid identifier"); } + } - [Test] - [Obsolete("Usage of the binary formatter is considered harmful.")] - public void SerializeDeserialize_TestStruct_AreEqual() + [Test] + public void TryParse_TestStructInput_AreEqual() + { + using (TestCultures.En_GB.Scoped()) { - var input = TestStruct; var exp = TestStruct; - var act = SerializeDeserialize.Binary(input); + var act = Id.TryParse(exp.ToString()); Assert.AreEqual(exp, act); } + } - [Test] - public void DataContractSerializeDeserialize_TestStruct_AreEqual() + [Test] + public void TryParse_InvalidInput_DefaultValue() + { + using (TestCultures.En_GB.Scoped()) { - var input = TestStruct; - var exp = TestStruct; - var act = SerializeDeserialize.DataContract(input); + var exp = default(Id); + var act = Id.TryParse("InvalidInput"); Assert.AreEqual(exp, act); } + } - [Test] - public void XmlSerialize_TestStruct_AreEqual() - { - var act = Serialize.Xml(TestStruct); - var exp = "0f5ab5ab-12cb-4629-878d-b18b88b9a504"; - Assert.AreEqual(exp, act); - } + [Test] + public void TryCreate_Int_NotSuccessful() + { + Assert.IsFalse(Id.TryCreate(17L, out _)); + } - [Test] - public void XmlDeserialize_XmlString_AreEqual() - { - var act =Deserialize.Xml>("0F5AB5AB-12CB-4629-878D-B18B88B9A504"); - Assert.AreEqual(TestStruct, act); - } + [Test] + public void TryCreate_Guid_Successful() + { + Assert.IsTrue(Id.TryCreate(Guid.Parse("0F5AB5AB-12CB-4629-878D-B18B88B9A504"), out var id)); + Assert.AreEqual(Id.Parse("0F5AB5AB-12CB-4629-878D-B18B88B9A504"), id); + } - [Test] - [Obsolete("Usage of the binary formatter is considered harmful.")] - public void SerializeDeserialize_IdForGuidSerializeObject_AreEqual() - { - var input = new IdForGuidSerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } + [Test] + public void GetObjectData_NulSerializationInfo_Throws() + { + ISerializable obj = TestStruct; + Assert.Catch(() => obj.GetObjectData(null, default)); + } - ; - var exp = new IdForGuidSerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } + [Test] + public void GetObjectData_SerializationInfo_AreEqual() + { + ISerializable obj = TestStruct; + var info = new SerializationInfo(typeof(Id), new FormatterConverter()); + obj.GetObjectData(info, default); + Assert.AreEqual(Guid.Parse("0F5AB5AB-12CB-4629-878D-B18B88B9A504"), info.GetValue("Value", typeof(Guid))); + } - ; - var act = SerializeDeserialize.Binary(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); - } + [Test] + [Obsolete("Usage of the binary formatter is considered harmful.")] + public void SerializeDeserialize_TestStruct_AreEqual() + { + var input = TestStruct; + var exp = TestStruct; + var act = SerializeDeserialize.Binary(input); + Assert.AreEqual(exp, act); + } - [Test] - public void XmlSerializeDeserialize_IdForGuidSerializeObject_AreEqual() - { - var input = new IdForGuidSerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } + [Test] + public void DataContractSerializeDeserialize_TestStruct_AreEqual() + { + var input = TestStruct; + var exp = TestStruct; + var act = SerializeDeserialize.DataContract(input); + Assert.AreEqual(exp, act); + } - ; - var exp = new IdForGuidSerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } + [Test] + public void XmlSerialize_TestStruct_AreEqual() + { + var act = Serialize.Xml(TestStruct); + var exp = "0f5ab5ab-12cb-4629-878d-b18b88b9a504"; + Assert.AreEqual(exp, act); + } - ; - var act = SerializeDeserialize.Xml(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); - } + [Test] + public void XmlDeserialize_XmlString_AreEqual() + { + var act =Deserialize.Xml>("0F5AB5AB-12CB-4629-878D-B18B88B9A504"); + Assert.AreEqual(TestStruct, act); + } - [Test] - public void DataContractSerializeDeserialize_IdForGuidSerializeObject_AreEqual() + [Test] + [Obsolete("Usage of the binary formatter is considered harmful.")] + public void SerializeDeserialize_IdForGuidSerializeObject_AreEqual() + { + var input = new IdForGuidSerializeObject { - var input = new IdForGuidSerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } - - ; - var exp = new IdForGuidSerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } - - ; - var act = SerializeDeserialize.DataContract(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [Test] - [Obsolete("Usage of the binary formatter is considered harmful.")] - public void SerializeDeserialize_Default_AreEqual() + ; + var exp = new IdForGuidSerializeObject { - var input = new IdForGuidSerializeObject - { - Id = 17, - Obj = default, - Date = new DateTime(1970, 02, 14), - } - - ; - var exp = new IdForGuidSerializeObject - { - Id = 17, - Obj = default, - Date = new DateTime(1970, 02, 14), - } - - ; - var act = SerializeDeserialize.Binary(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [Test] - public void XmlSerializeDeserialize_Default_AreEqual() - { - var input = new IdForGuidSerializeObject - { - Id = 17, - Obj = default, - Date = new DateTime(1970, 02, 14), - } - - ; - var exp = new IdForGuidSerializeObject - { - Id = 17, - Obj = default, - Date = new DateTime(1970, 02, 14), - } - - ; - var act = SerializeDeserialize.Xml(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); - } + ; + var act = SerializeDeserialize.Binary(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - [Test] - public void GetSchema_None_IsNull() + [Test] + public void XmlSerializeDeserialize_IdForGuidSerializeObject_AreEqual() + { + var input = new IdForGuidSerializeObject { - IXmlSerializable obj = TestStruct; - Assert.IsNull(obj.GetSchema()); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [TestCase("2017-06-11")] - public void FromJson_Invalid_Throws(object json) + ; + var exp = new IdForGuidSerializeObject { - Assert.Catch(() => JsonTester.Read>(json)); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [TestCase("0F5AB5AB-12CB-4629-878D-B18B88B9A504", "0F5AB5AB-12CB-4629-878D-B18B88B9A504")] - [TestCase("", "")] - public void FromJson(Id expected, object json) - { - var actual = JsonTester.Read>(json); - Assert.AreEqual(expected, actual); - } + ; + var act = SerializeDeserialize.Xml(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - [Test] - public void ToJson_TestStruct_StringValue() + [Test] + public void DataContractSerializeDeserialize_IdForGuidSerializeObject_AreEqual() + { + var input = new IdForGuidSerializeObject { - var json = TestStruct.ToJson(); - Assert.AreEqual("0f5ab5ab-12cb-4629-878d-b18b88b9a504", json); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [Test] - public void ToString_Empty_StringEmpty() + ; + var exp = new IdForGuidSerializeObject { - var act = Id.Empty.ToString(); - var exp = ""; - Assert.AreEqual(exp, act); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [Test] - public void ToString_CustomFormatter_SupportsCustomFormatting() - { - var act = TestStruct.ToString("S", FormatProvider.CustomFormatter); - var exp = "Unit Test Formatter, value: 'q7VaD8sSKUaHjbGLiLmlBA', format: 'S'"; - Assert.AreEqual(exp, act); - } + ; + var act = SerializeDeserialize.DataContract(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - /// GetHash should not fail for Id.Empty. - [Test] - public void GetHash_Empty_Hash() + [Test] + [Obsolete("Usage of the binary formatter is considered harmful.")] + public void SerializeDeserialize_Default_AreEqual() + { + var input = new IdForGuidSerializeObject { - Assert.AreEqual(0, Id.Empty.GetHashCode()); + Id = 17, + Obj = default, + Date = new DateTime(1970, 02, 14), } - /// GetHash should not fail for the test struct. - [Test] - public void GetHash_TestStruct_Hash() + ; + var exp = new IdForGuidSerializeObject { - Assert.AreNotEqual(0, TestStruct.GetHashCode()); + Id = 17, + Obj = default, + Date = new DateTime(1970, 02, 14), } - [Test] - public void Equals_EmptyEmpty_IsTrue() - { - Assert.IsTrue(Id.Empty.Equals(Id.Empty)); - } + ; + var act = SerializeDeserialize.Binary(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - [Test] - public void Equals_FormattedAndUnformatted_IsTrue() + [Test] + public void XmlSerializeDeserialize_Default_AreEqual() + { + var input = new IdForGuidSerializeObject { - var l = Id.Parse("Qowaiv_SVOLibrary_GUIA"); - var r = Id.Parse("8a1a8c42-d2ff-e254-e26e-b6abcbf19420"); - Assert.IsTrue(l.Equals(r)); + Id = 17, + Obj = default, + Date = new DateTime(1970, 02, 14), } - [Test] - public void Equals_TestStructTestStruct_IsTrue() + ; + var exp = new IdForGuidSerializeObject { - Assert.IsTrue(TestStruct.Equals(TestStruct)); + Id = 17, + Obj = default, + Date = new DateTime(1970, 02, 14), } - [Test] - public void Equals_TestStructEmpty_IsFalse() - { - Assert.IsFalse(TestStruct.Equals(Id.Empty)); - } + ; + var act = SerializeDeserialize.Xml(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - [Test] - public void Equals_EmptyTestStruct_IsFalse() - { - Assert.IsFalse(Id.Empty.Equals(TestStruct)); - } + [Test] + public void GetSchema_None_IsNull() + { + IXmlSerializable obj = TestStruct; + Assert.IsNull(obj.GetSchema()); + } - [Test] - public void Equals_TestStructObjectTestStruct_IsTrue() - { - Assert.IsTrue(TestStruct.Equals((object)TestStruct)); - } + [TestCase("2017-06-11")] + public void FromJson_Invalid_Throws(object json) + { + Assert.Catch(() => JsonTester.Read>(json)); + } - [Test] - public void Equals_TestStructNull_IsFalse() - { - Assert.IsFalse(TestStruct.Equals(null)); - } + [TestCase("0F5AB5AB-12CB-4629-878D-B18B88B9A504", "0F5AB5AB-12CB-4629-878D-B18B88B9A504")] + [TestCase("", "")] + public void FromJson(Id expected, object json) + { + var actual = JsonTester.Read>(json); + Assert.AreEqual(expected, actual); + } - [Test] - public void Equals_TestStructObject_IsFalse() - { - Assert.IsFalse(TestStruct.Equals(new object())); - } + [Test] + public void ToJson_TestStruct_StringValue() + { + var json = TestStruct.ToJson(); + Assert.AreEqual("0f5ab5ab-12cb-4629-878d-b18b88b9a504", json); + } - [Test] - public void OperatorIs_TestStructTestStruct_IsTrue() - { - var l = TestStruct; - var r = TestStruct; - Assert.IsTrue(l == r); - } + [Test] + public void ToString_Empty_StringEmpty() + { + var act = Id.Empty.ToString(); + var exp = ""; + Assert.AreEqual(exp, act); + } - [Test] - public void OperatorIsNot_TestStructTestStruct_IsFalse() - { - var l = TestStruct; - var r = TestStruct; - Assert.IsFalse(l != r); - } + [Test] + public void ToString_CustomFormatter_SupportsCustomFormatting() + { + var act = TestStruct.ToString("S", FormatProvider.CustomFormatter); + var exp = "Unit Test Formatter, value: 'q7VaD8sSKUaHjbGLiLmlBA', format: 'S'"; + Assert.AreEqual(exp, act); + } - [Test] - public void Next_100Items_AllUnique() - { - var nexts = Enumerable.Range(0, 100).Select(i => Id.Next()).ToArray(); - CollectionAssert.AllItemsAreUnique(nexts); - } + /// GetHash should not fail for Id.Empty. + [Test] + public void GetHash_Empty_Hash() + { + Assert.AreEqual(0, Id.Empty.GetHashCode()); + } - [TestCase(null)] - [TestCase("")] - [TestCase("Complex")] - public void IsInvalid_String(string str) - { - Assert.IsFalse(Id.IsValid(str)); - } + /// GetHash should not fail for the test struct. + [Test] + public void GetHash_TestStruct_Hash() + { + Assert.AreNotEqual(0, TestStruct.GetHashCode()); + } - [TestCase("0F5AB5AB-12CB-4629-878D-B18B88B9A504")] - [TestCase("Qowaiv_SVOLibrary_GUIA")] - public void IsValid_String(string str) - { - Assert.IsTrue(Id.IsValid(str)); - } + [Test] + public void Equals_EmptyEmpty_IsTrue() + { + Assert.IsTrue(Id.Empty.Equals(Id.Empty)); + } + + [Test] + public void Equals_FormattedAndUnformatted_IsTrue() + { + var l = Id.Parse("Qowaiv_SVOLibrary_GUIA"); + var r = Id.Parse("8a1a8c42-d2ff-e254-e26e-b6abcbf19420"); + Assert.IsTrue(l.Equals(r)); + } + + [Test] + public void Equals_TestStructTestStruct_IsTrue() + { + Assert.IsTrue(TestStruct.Equals(TestStruct)); + } + + [Test] + public void Equals_TestStructEmpty_IsFalse() + { + Assert.IsFalse(TestStruct.Equals(Id.Empty)); } - [Serializable] - public class IdForGuidSerializeObject + [Test] + public void Equals_EmptyTestStruct_IsFalse() { - public int Id { get; set; } - public Id Obj { get; set; } - public DateTime Date { get; set; } + Assert.IsFalse(Id.Empty.Equals(TestStruct)); } + + [Test] + public void Equals_TestStructObjectTestStruct_IsTrue() + { + Assert.IsTrue(TestStruct.Equals((object)TestStruct)); + } + + [Test] + public void Equals_TestStructNull_IsFalse() + { + Assert.IsFalse(TestStruct.Equals(null)); + } + + [Test] + public void Equals_TestStructObject_IsFalse() + { + Assert.IsFalse(TestStruct.Equals(new object())); + } + + [Test] + public void OperatorIs_TestStructTestStruct_IsTrue() + { + var l = TestStruct; + var r = TestStruct; + Assert.IsTrue(l == r); + } + + [Test] + public void OperatorIsNot_TestStructTestStruct_IsFalse() + { + var l = TestStruct; + var r = TestStruct; + Assert.IsFalse(l != r); + } + + [Test] + public void Next_100Items_AllUnique() + { + var nexts = Enumerable.Range(0, 100).Select(i => Id.Next()).ToArray(); + CollectionAssert.AllItemsAreUnique(nexts); + } + + [TestCase(null)] + [TestCase("")] + [TestCase("Complex")] + public void IsInvalid_String(string str) + { + Assert.IsFalse(Id.IsValid(str)); + } + + [TestCase("0F5AB5AB-12CB-4629-878D-B18B88B9A504")] + [TestCase("Qowaiv_SVOLibrary_GUIA")] + public void IsValid_String(string str) + { + Assert.IsTrue(Id.IsValid(str)); + } +} + +[Serializable] +public class IdForGuidSerializeObject +{ + public int Id { get; set; } + public Id Obj { get; set; } + public DateTime Date { get; set; } } diff --git a/specs/Qowaiv.Specs/UnitTests.OldStyle/Identifiers/IdForInt32Test.cs b/specs/Qowaiv.Specs/UnitTests.OldStyle/Identifiers/IdForInt32Test.cs index 0d5c5e11a..30e497dff 100644 --- a/specs/Qowaiv.Specs/UnitTests.OldStyle/Identifiers/IdForInt32Test.cs +++ b/specs/Qowaiv.Specs/UnitTests.OldStyle/Identifiers/IdForInt32Test.cs @@ -1,485 +1,472 @@ -using FluentAssertions; -using NUnit.Framework; -using Qowaiv.Globalization; -using Qowaiv.Identifiers; -using Qowaiv.TestTools; -using Qowaiv.TestTools.Globalization; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Runtime.Serialization; -using System.Xml.Serialization; - -namespace Qowaiv.UnitTests.Identifiers -{ - public sealed class ForInt32 : Int32IdBehavior { } - - /// Tests the identifier SVO. - public class IdForInt32Test - { - /// The test instance for most tests. - public static readonly Id TestStruct = Id.Parse("123456789"); +namespace Qowaiv.UnitTests.Identifiers; - /// Id.Empty should be equal to the default of identifier. - [Test] - public void Empty_None_EqualsDefault() - { - Assert.AreEqual(default(Id), Id.Empty); - } - - /// Id.IsEmpty() should be true for the default of identifier. - [Test] - public void IsEmpty_Default_IsTrue() - { - Assert.IsTrue(default(Id).IsEmpty()); - } +[EmptyTestClass] +public sealed class ForInt32 : Int32IdBehavior { } - /// Id.IsEmpty() should be false for the TestStruct. - [Test] - public void IsEmpty_TestStruct_IsFalse() - { - Assert.IsFalse(TestStruct.IsEmpty()); - } +/// Tests the identifier SVO. +public class IdForInt32Test +{ + /// The test instance for most tests. + public static readonly Id TestStruct = Id.Parse("123456789"); - [Test] - public void FromBytes_Null_IsEmpty() - { - var fromBytes = Id.FromBytes(null); - Assert.AreEqual(Id.Empty, fromBytes); - } + /// Id.Empty should be equal to the default of identifier. + [Test] + public void Empty_None_EqualsDefault() + { + Assert.AreEqual(default(Id), Id.Empty); + } - [Test] - public void FromBytes_Bytes_IsTestStruct() - { - var fromBytes = Id.FromBytes(new byte[] { 21, 205, 91, 7 }); - Assert.AreEqual(TestStruct, fromBytes); - } + /// Id.IsEmpty() should be true for the default of identifier. + [Test] + public void IsEmpty_Default_IsTrue() + { + Assert.IsTrue(default(Id).IsEmpty()); + } - [Test] - public void ToByteArray_Empty_EmptyArray() - { - var bytes = Id.Empty.ToByteArray(); - Assert.AreEqual(Array.Empty(), bytes); - } + /// Id.IsEmpty() should be false for the TestStruct. + [Test] + public void IsEmpty_TestStruct_IsFalse() + { + Assert.IsFalse(TestStruct.IsEmpty()); + } - [Test] - public void ToByteArray_TestStruct_FilledArray() - { - var bytes = TestStruct.ToByteArray(); - var exepected = new byte[] { 21, 205, 91, 7 }; - Assert.AreEqual(exepected, bytes); - } + [Test] + public void FromBytes_Null_IsEmpty() + { + var fromBytes = Id.FromBytes(null); + Assert.AreEqual(Id.Empty, fromBytes); + } - /// TryParse null should be valid. - [Test] - public void TryParse_Null_IsValid() - { - Assert.IsTrue(Id.TryParse(null, out var val)); - Assert.AreEqual(default(Id), val); - } + [Test] + public void FromBytes_Bytes_IsTestStruct() + { + var fromBytes = Id.FromBytes(new byte[] { 21, 205, 91, 7 }); + Assert.AreEqual(TestStruct, fromBytes); + } - /// TryParse string.Empty should be valid. - [Test] - public void TryParse_StringEmpty_IsValid() - { - Assert.IsTrue(Id.TryParse(string.Empty, out var val)); - Assert.AreEqual(default(Id), val); - } + [Test] + public void ToByteArray_Empty_EmptyArray() + { + var bytes = Id.Empty.ToByteArray(); + Assert.AreEqual(Array.Empty(), bytes); + } - /// TryParse with specified string value should be valid. - [Test] - public void TryParse_StringValue_IsValid() - { - string str = "123456789"; - Assert.IsTrue(Id.TryParse(str, out var val)); - Assert.AreEqual(str, val.ToString()); - } + [Test] + public void ToByteArray_TestStruct_FilledArray() + { + var bytes = TestStruct.ToByteArray(); + var exepected = new byte[] { 21, 205, 91, 7 }; + Assert.AreEqual(exepected, bytes); + } - /// TryParse with specified string value should be invalid. - [Test] - public void TryParse_StringValue_IsNotValid() - { - string str = "ABC"; - Assert.IsFalse(Id.TryParse(str, out var val)); - Assert.AreEqual(default(Id), val); - } + /// TryParse null should be valid. + [Test] + public void TryParse_Null_IsValid() + { + Assert.IsTrue(Id.TryParse(null, out var val)); + Assert.AreEqual(default(Id), val); + } - [Test] - public void Parse_InvalidInput_ThrowsFormatException() - { - using (TestCultures.En_GB.Scoped()) - { - Assert.Catch(() => - { - Id.Parse("InvalidInput"); - } + /// TryParse string.Empty should be valid. + [Test] + public void TryParse_StringEmpty_IsValid() + { + Assert.IsTrue(Id.TryParse(string.Empty, out var val)); + Assert.AreEqual(default(Id), val); + } - , "Not a valid identifier"); - } - } + /// TryParse with specified string value should be valid. + [Test] + public void TryParse_StringValue_IsValid() + { + string str = "123456789"; + Assert.IsTrue(Id.TryParse(str, out var val)); + Assert.AreEqual(str, val.ToString()); + } - [Test] - public void TryParse_TestStructInput_AreEqual() - { - using (TestCultures.En_GB.Scoped()) - { - var exp = TestStruct; - var act = Id.TryParse(exp.ToString()); - Assert.AreEqual(exp, act); - } - } + /// TryParse with specified string value should be invalid. + [Test] + public void TryParse_StringValue_IsNotValid() + { + string str = "ABC"; + Assert.IsFalse(Id.TryParse(str, out var val)); + Assert.AreEqual(default(Id), val); + } - [Test] - public void TryParse_InvalidInput_DefaultValue() + [Test] + public void Parse_InvalidInput_ThrowsFormatException() + { + using (TestCultures.En_GB.Scoped()) { - using (TestCultures.En_GB.Scoped()) + Assert.Catch(() => { - var exp = default(Id); - var act = Id.TryParse("InvalidInput"); - Assert.AreEqual(exp, act); + Id.Parse("InvalidInput"); } - } - - [Test] - public void TryCreate_Int_Successful() - { - Assert.IsTrue(Id.TryCreate(13, out var id)); - Assert.AreEqual(Id.Parse("13"), id); - } - [Test] - public void GetObjectData_NulSerializationInfo_Throws() - { - ISerializable obj = TestStruct; - Assert.Catch(() => obj.GetObjectData(null, default)); - } - - [Test] - public void GetObjectData_SerializationInfo_AreEqual() - { - ISerializable obj = TestStruct; - var info = new SerializationInfo(typeof(Id), new FormatterConverter()); - obj.GetObjectData(info, default); - Assert.AreEqual(123456789L, info.GetValue("Value", typeof(long))); - } - - [Test] - [Obsolete("Usage of the binary formatter is considered harmful.")] - public void SerializeDeserialize_TestStruct_AreEqual() - { - var input = TestStruct; - var exp = TestStruct; - var act = SerializeDeserialize.Binary(input); - Assert.AreEqual(exp, act); + , "Not a valid identifier"); } + } - [Test] - public void DataContractSerializeDeserialize_TestStruct_AreEqual() + [Test] + public void TryParse_TestStructInput_AreEqual() + { + using (TestCultures.En_GB.Scoped()) { - var input = TestStruct; var exp = TestStruct; - var act = SerializeDeserialize.DataContract(input); + var act = Id.TryParse(exp.ToString()); Assert.AreEqual(exp, act); } + } - [Test] - public void XmlSerialize_TestStruct_AreEqual() + [Test] + public void TryParse_InvalidInput_DefaultValue() + { + using (TestCultures.En_GB.Scoped()) { - var act = Serialize.Xml(TestStruct); - var exp = "123456789"; + var exp = default(Id); + var act = Id.TryParse("InvalidInput"); Assert.AreEqual(exp, act); } + } - [Test] - public void XmlDeserialize_XmlString_AreEqual() - { - var act =Deserialize.Xml>("123456789"); - Assert.AreEqual(TestStruct, act); - } + [Test] + public void TryCreate_Int_Successful() + { + Assert.IsTrue(Id.TryCreate(13, out var id)); + Assert.AreEqual(Id.Parse("13"), id); + } - [Test] - [Obsolete("Usage of the binary formatter is considered harmful.")] - public void SerializeDeserialize_IdForInt32SerializeObject_AreEqual() - { - var input = new IdForInt32SerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } + [Test] + public void GetObjectData_NulSerializationInfo_Throws() + { + ISerializable obj = TestStruct; + Assert.Catch(() => obj.GetObjectData(null, default)); + } - ; - var exp = new IdForInt32SerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } + [Test] + public void GetObjectData_SerializationInfo_AreEqual() + { + ISerializable obj = TestStruct; + var info = new SerializationInfo(typeof(Id), new FormatterConverter()); + obj.GetObjectData(info, default); + Assert.AreEqual(123456789L, info.GetValue("Value", typeof(long))); + } - ; - var act = SerializeDeserialize.Binary(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); - } + [Test] + [Obsolete("Usage of the binary formatter is considered harmful.")] + public void SerializeDeserialize_TestStruct_AreEqual() + { + var input = TestStruct; + var exp = TestStruct; + var act = SerializeDeserialize.Binary(input); + Assert.AreEqual(exp, act); + } - [Test] - public void XmlSerializeDeserialize_IdForInt32SerializeObject_AreEqual() - { - var input = new IdForInt32SerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } + [Test] + public void DataContractSerializeDeserialize_TestStruct_AreEqual() + { + var input = TestStruct; + var exp = TestStruct; + var act = SerializeDeserialize.DataContract(input); + Assert.AreEqual(exp, act); + } - ; - var exp = new IdForInt32SerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } + [Test] + public void XmlSerialize_TestStruct_AreEqual() + { + var act = Serialize.Xml(TestStruct); + var exp = "123456789"; + Assert.AreEqual(exp, act); + } - ; - var act = SerializeDeserialize.Xml(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); - } + [Test] + public void XmlDeserialize_XmlString_AreEqual() + { + var act =Deserialize.Xml>("123456789"); + Assert.AreEqual(TestStruct, act); + } - [Test] - public void DataContractSerializeDeserialize_IdForInt32SerializeObject_AreEqual() + [Test] + [Obsolete("Usage of the binary formatter is considered harmful.")] + public void SerializeDeserialize_IdForInt32SerializeObject_AreEqual() + { + var input = new IdForInt32SerializeObject { - var input = new IdForInt32SerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } - - ; - var exp = new IdForInt32SerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } - - ; - var act = SerializeDeserialize.DataContract(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [Test] - [Obsolete("Usage of the binary formatter is considered harmful.")] - public void SerializeDeserialize_Default_AreEqual() + ; + var exp = new IdForInt32SerializeObject { - var input = new IdForInt32SerializeObject - { - Id = 17, - Obj = default, - Date = new DateTime(1970, 02, 14), - } - - ; - var exp = new IdForInt32SerializeObject - { - Id = 17, - Obj = default, - Date = new DateTime(1970, 02, 14), - } - - ; - var act = SerializeDeserialize.Binary(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [Test] - public void XmlSerializeDeserialize_Default_AreEqual() - { - var input = new IdForInt32SerializeObject - { - Id = 17, - Obj = default, - Date = new DateTime(1970, 02, 14), - } - - ; - var exp = new IdForInt32SerializeObject - { - Id = 17, - Obj = default, - Date = new DateTime(1970, 02, 14), - } - - ; - var act = SerializeDeserialize.Xml(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); - } + ; + var act = SerializeDeserialize.Binary(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - [Test] - public void GetSchema_None_IsNull() + [Test] + public void XmlSerializeDeserialize_IdForInt32SerializeObject_AreEqual() + { + var input = new IdForInt32SerializeObject { - IXmlSerializable obj = TestStruct; - Assert.IsNull(obj.GetSchema()); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [TestCase("2017-06-11")] - public void FromJson_Invalid_Throws(object json) + ; + var exp = new IdForInt32SerializeObject { - Assert.Catch(() => JsonTester.Read>(json)); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [TestCase("123456789", "123456789")] - [TestCase("12345678", 12345678L)] - [TestCase("", "")] - [TestCase("", 0L)] - public void FromJson(Id expected, object json) - { - var actual = JsonTester.Read>(json); - Assert.AreEqual(expected, actual); - } + ; + var act = SerializeDeserialize.Xml(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - [Test] - public void ToJson_TestStruct_LongValue() + [Test] + public void DataContractSerializeDeserialize_IdForInt32SerializeObject_AreEqual() + { + var input = new IdForInt32SerializeObject { - var json = TestStruct.ToJson(); - Assert.AreEqual(123456789L, json); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [Test] - public void ToString_Empty_StringEmpty() + ; + var exp = new IdForInt32SerializeObject { - var act = Id.Empty.ToString(CultureInfo.InvariantCulture); - var exp = ""; - Assert.AreEqual(exp, act); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [Test] - public void ToString_CustomFormatter_SupportsCustomFormatting() - { - var act = TestStruct.ToString("#,##0.0", FormatProvider.CustomFormatter); - var exp = "Unit Test Formatter, value: '123,456,789.0', format: '#,##0.0'"; - Assert.AreEqual(exp, act); - } + ; + var act = SerializeDeserialize.DataContract(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - /// GetHash should not fail for Id.Empty. - [Test] - public void GetHash_Empty_Hash() + [Test] + [Obsolete("Usage of the binary formatter is considered harmful.")] + public void SerializeDeserialize_Default_AreEqual() + { + var input = new IdForInt32SerializeObject { - Assert.AreEqual(0, Id.Empty.GetHashCode()); + Id = 17, + Obj = default, + Date = new DateTime(1970, 02, 14), } - /// GetHash should not fail for the test struct. - [Test] - public void GetHash_TestStruct_Hash() + ; + var exp = new IdForInt32SerializeObject { - Assert.AreNotEqual(0, TestStruct.GetHashCode()); + Id = 17, + Obj = default, + Date = new DateTime(1970, 02, 14), } - [Test] - public void Equals_EmptyEmpty_IsTrue() - { - Assert.IsTrue(Id.Empty.Equals(Id.Empty)); - } + ; + var act = SerializeDeserialize.Binary(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - [Test] - public void Equals_FormattedAndUnformatted_IsTrue() + [Test] + public void XmlSerializeDeserialize_Default_AreEqual() + { + var input = new IdForInt32SerializeObject { - var l = Id.Parse("123456"); - var r = Id.Parse("+0000123456"); - Assert.IsTrue(l.Equals(r)); + Id = 17, + Obj = default, + Date = new DateTime(1970, 02, 14), } - [Test] - public void Equals_TestStructTestStruct_IsTrue() + ; + var exp = new IdForInt32SerializeObject { - Assert.IsTrue(TestStruct.Equals(TestStruct)); + Id = 17, + Obj = default, + Date = new DateTime(1970, 02, 14), } - [Test] - public void Equals_TestStructEmpty_IsFalse() - { - Assert.IsFalse(TestStruct.Equals(Id.Empty)); - } + ; + var act = SerializeDeserialize.Xml(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - [Test] - public void Equals_EmptyTestStruct_IsFalse() - { - Assert.IsFalse(Id.Empty.Equals(TestStruct)); - } + [Test] + public void GetSchema_None_IsNull() + { + IXmlSerializable obj = TestStruct; + Assert.IsNull(obj.GetSchema()); + } - [Test] - public void Equals_TestStructObjectTestStruct_IsTrue() - { - Assert.IsTrue(TestStruct.Equals((object)TestStruct)); - } + [TestCase("2017-06-11")] + public void FromJson_Invalid_Throws(object json) + { + Assert.Catch(() => JsonTester.Read>(json)); + } - [Test] - public void Equals_TestStructNull_IsFalse() - { - Assert.IsFalse(TestStruct.Equals(null)); - } + [TestCase("123456789", "123456789")] + [TestCase("12345678", 12345678L)] + [TestCase("", "")] + [TestCase("", 0L)] + public void FromJson(Id expected, object json) + { + var actual = JsonTester.Read>(json); + Assert.AreEqual(expected, actual); + } - [Test] - public void Equals_TestStructObject_IsFalse() - { - Assert.IsFalse(TestStruct.Equals(new object())); - } + [Test] + public void ToJson_TestStruct_LongValue() + { + var json = TestStruct.ToJson(); + Assert.AreEqual(123456789L, json); + } - [Test] - public void OperatorIs_TestStructTestStruct_IsTrue() - { - var l = TestStruct; - var r = TestStruct; - Assert.IsTrue(l == r); - } + [Test] + public void ToString_Empty_StringEmpty() + { + var act = Id.Empty.ToString(CultureInfo.InvariantCulture); + var exp = ""; + Assert.AreEqual(exp, act); + } - [Test] - public void OperatorIsNot_TestStructTestStruct_IsFalse() - { - var l = TestStruct; - var r = TestStruct; - Assert.IsFalse(l != r); - } + [Test] + public void ToString_CustomFormatter_SupportsCustomFormatting() + { + var act = TestStruct.ToString("#,##0.0", FormatProvider.CustomFormatter); + var exp = "Unit Test Formatter, value: '123,456,789.0', format: '#,##0.0'"; + Assert.AreEqual(exp, act); + } - [Test] - public void Next_NotSupported() - { - Assert.Throws(() => Id.Next()); - } + /// GetHash should not fail for Id.Empty. + [Test] + public void GetHash_Empty_Hash() + { + Assert.AreEqual(0, Id.Empty.GetHashCode()); + } - [TestCase(null)] - [TestCase("")] - [TestCase("ABC")] - [TestCase("-1")] - public void IsInvalid_String(string str) - { - Assert.IsFalse(Id.IsValid(str)); - } + /// GetHash should not fail for the test struct. + [Test] + public void GetHash_TestStruct_Hash() + { + Assert.AreNotEqual(0, TestStruct.GetHashCode()); + } - [TestCase("0")] - [TestCase("1234")] - [TestCase("+123456")] - public void IsValid_String(string str) - { - Assert.IsTrue(Id.IsValid(str)); - } + [Test] + public void Equals_EmptyEmpty_IsTrue() + { + Assert.IsTrue(Id.Empty.Equals(Id.Empty)); } - [Serializable] - public class IdForInt32SerializeObject + [Test] + public void Equals_FormattedAndUnformatted_IsTrue() { - public int Id { get; set; } - public Id Obj { get; set; } - public DateTime Date { get; set; } + var l = Id.Parse("123456"); + var r = Id.Parse("+0000123456"); + Assert.IsTrue(l.Equals(r)); } + + [Test] + public void Equals_TestStructTestStruct_IsTrue() + { + Assert.IsTrue(TestStruct.Equals(TestStruct)); + } + + [Test] + public void Equals_TestStructEmpty_IsFalse() + { + Assert.IsFalse(TestStruct.Equals(Id.Empty)); + } + + [Test] + public void Equals_EmptyTestStruct_IsFalse() + { + Assert.IsFalse(Id.Empty.Equals(TestStruct)); + } + + [Test] + public void Equals_TestStructObjectTestStruct_IsTrue() + { + Assert.IsTrue(TestStruct.Equals((object)TestStruct)); + } + + [Test] + public void Equals_TestStructNull_IsFalse() + { + Assert.IsFalse(TestStruct.Equals(null)); + } + + [Test] + public void Equals_TestStructObject_IsFalse() + { + Assert.IsFalse(TestStruct.Equals(new object())); + } + + [Test] + public void OperatorIs_TestStructTestStruct_IsTrue() + { + var l = TestStruct; + var r = TestStruct; + Assert.IsTrue(l == r); + } + + [Test] + public void OperatorIsNot_TestStructTestStruct_IsFalse() + { + var l = TestStruct; + var r = TestStruct; + Assert.IsFalse(l != r); + } + + [Test] + public void Next_NotSupported() + { + Assert.Throws(() => Id.Next()); + } + + [TestCase(null)] + [TestCase("")] + [TestCase("ABC")] + [TestCase("-1")] + public void IsInvalid_String(string str) + { + Assert.IsFalse(Id.IsValid(str)); + } + + [TestCase("0")] + [TestCase("1234")] + [TestCase("+123456")] + public void IsValid_String(string str) + { + Assert.IsTrue(Id.IsValid(str)); + } +} + +[Serializable] +public class IdForInt32SerializeObject +{ + public int Id { get; set; } + public Id Obj { get; set; } + public DateTime Date { get; set; } } diff --git a/specs/Qowaiv.Specs/UnitTests.OldStyle/Identifiers/IdForInt64Test.cs b/specs/Qowaiv.Specs/UnitTests.OldStyle/Identifiers/IdForInt64Test.cs index 7195a2563..8b58ee4ee 100644 --- a/specs/Qowaiv.Specs/UnitTests.OldStyle/Identifiers/IdForInt64Test.cs +++ b/specs/Qowaiv.Specs/UnitTests.OldStyle/Identifiers/IdForInt64Test.cs @@ -1,468 +1,455 @@ -using FluentAssertions; -using NUnit.Framework; -using Qowaiv.Globalization; -using Qowaiv.Identifiers; -using Qowaiv.TestTools; -using Qowaiv.TestTools.Globalization; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Runtime.Serialization; -using System.Xml.Serialization; - -namespace Qowaiv.UnitTests.Identifiers -{ - public sealed class ForInt64 : Int64IdBehavior { } +namespace Qowaiv.UnitTests.Identifiers; - /// Tests the identifier SVO. - public class IdForInt64Test - { - /// The test instance for most tests. - public static readonly Id TestStruct = Id.Parse("123456789"); +[EmptyTestClass] +public sealed class ForInt64 : Int64IdBehavior { } - /// Id.Empty should be equal to the default of identifier. - [Test] - public void Empty_None_EqualsDefault() - { - Assert.AreEqual(default(Id), Id.Empty); - } - - /// Id.IsEmpty() should be true for the default of identifier. - [Test] - public void IsEmpty_Default_IsTrue() - { - Assert.IsTrue(default(Id).IsEmpty()); - } - - /// Id.IsEmpty() should be false for the TestStruct. - [Test] - public void IsEmpty_TestStruct_IsFalse() - { - Assert.IsFalse(TestStruct.IsEmpty()); - } +/// Tests the identifier SVO. +public class IdForInt64Test +{ + /// The test instance for most tests. + public static readonly Id TestStruct = Id.Parse("123456789"); - [Test] - public void FromBytes_Null_IsEmpty() - { - var fromBytes = Id.FromBytes(null); - Assert.AreEqual(Id.Empty, fromBytes); - } + /// Id.Empty should be equal to the default of identifier. + [Test] + public void Empty_None_EqualsDefault() + { + Assert.AreEqual(default(Id), Id.Empty); + } - [Test] - public void FromBytes_Bytes_IsTestStruct() - { - var fromBytes = Id.FromBytes(new byte[] { 21, 205, 91, 7, 0, 0, 0, 0 }); - Assert.AreEqual(TestStruct, fromBytes); - } + /// Id.IsEmpty() should be true for the default of identifier. + [Test] + public void IsEmpty_Default_IsTrue() + { + Assert.IsTrue(default(Id).IsEmpty()); + } - [Test] - public void ToByteArray_Empty_EmptyArray() - { - var bytes = Id.Empty.ToByteArray(); - Assert.AreEqual(Array.Empty(), bytes); - } + /// Id.IsEmpty() should be false for the TestStruct. + [Test] + public void IsEmpty_TestStruct_IsFalse() + { + Assert.IsFalse(TestStruct.IsEmpty()); + } - [Test] - public void ToByteArray_TestStruct_FilledArray() - { - var bytes = TestStruct.ToByteArray(); - var exepected = new byte[] { 21, 205, 91, 7, 0, 0, 0, 0 }; - Assert.AreEqual(exepected, bytes); - } + [Test] + public void FromBytes_Null_IsEmpty() + { + var fromBytes = Id.FromBytes(null); + Assert.AreEqual(Id.Empty, fromBytes); + } - /// TryParse null should be valid. - [Test] - public void TryParse_Null_IsValid() - { - Assert.IsTrue(Id.TryParse(null, out var val)); - Assert.AreEqual(default(Id), val); - } + [Test] + public void FromBytes_Bytes_IsTestStruct() + { + var fromBytes = Id.FromBytes(new byte[] { 21, 205, 91, 7, 0, 0, 0, 0 }); + Assert.AreEqual(TestStruct, fromBytes); + } - /// TryParse string.Empty should be valid. - [Test] - public void TryParse_StringEmpty_IsValid() - { - Assert.IsTrue(Id.TryParse(string.Empty, out var val)); - Assert.AreEqual(default(Id), val); - } + [Test] + public void ToByteArray_Empty_EmptyArray() + { + var bytes = Id.Empty.ToByteArray(); + Assert.AreEqual(Array.Empty(), bytes); + } - /// TryParse with specified string value should be valid. - [Test] - public void TryParse_StringValue_IsValid() - { - string str = "123456789"; - Assert.IsTrue(Id.TryParse(str, out var val)); - Assert.AreEqual(str, val.ToString()); - } + [Test] + public void ToByteArray_TestStruct_FilledArray() + { + var bytes = TestStruct.ToByteArray(); + var exepected = new byte[] { 21, 205, 91, 7, 0, 0, 0, 0 }; + Assert.AreEqual(exepected, bytes); + } - /// TryParse with specified string value should be invalid. - [Test] - public void TryParse_StringValue_IsNotValid() - { - string str = "ABC"; - Assert.IsFalse(Id.TryParse(str, out var val)); - Assert.AreEqual(default(Id), val); - } + /// TryParse null should be valid. + [Test] + public void TryParse_Null_IsValid() + { + Assert.IsTrue(Id.TryParse(null, out var val)); + Assert.AreEqual(default(Id), val); + } - [Test] - public void TryCreate_Int_Successful() - { - Assert.IsTrue(Id.TryCreate(13L, out var id)); - Assert.AreEqual(Id.Parse("13"), id); - } + /// TryParse string.Empty should be valid. + [Test] + public void TryParse_StringEmpty_IsValid() + { + Assert.IsTrue(Id.TryParse(string.Empty, out var val)); + Assert.AreEqual(default(Id), val); + } - [Test] - public void Parse_InvalidInput_ThrowsFormatException() - { - using (TestCultures.En_GB.Scoped()) - { - Assert.Catch(() => - { - Id.Parse("InvalidInput"); - } + /// TryParse with specified string value should be valid. + [Test] + public void TryParse_StringValue_IsValid() + { + string str = "123456789"; + Assert.IsTrue(Id.TryParse(str, out var val)); + Assert.AreEqual(str, val.ToString()); + } - , "Not a valid identifier"); - } - } + /// TryParse with specified string value should be invalid. + [Test] + public void TryParse_StringValue_IsNotValid() + { + string str = "ABC"; + Assert.IsFalse(Id.TryParse(str, out var val)); + Assert.AreEqual(default(Id), val); + } - [Test] - public void TryParse_TestStructInput_AreEqual() - { - using (TestCultures.En_GB.Scoped()) - { - var exp = TestStruct; - var act = Id.TryParse(exp.ToString()); - Assert.AreEqual(exp, act); - } - } + [Test] + public void TryCreate_Int_Successful() + { + Assert.IsTrue(Id.TryCreate(13L, out var id)); + Assert.AreEqual(Id.Parse("13"), id); + } - [Test] - public void TryParse_InvalidInput_DefaultValue() + [Test] + public void Parse_InvalidInput_ThrowsFormatException() + { + using (TestCultures.En_GB.Scoped()) { - using (TestCultures.En_GB.Scoped()) + Assert.Catch(() => { - var exp = default(Id); - var act = Id.TryParse("InvalidInput"); - Assert.AreEqual(exp, act); + Id.Parse("InvalidInput"); } - } - - [Test] - public void GetObjectData_NulSerializationInfo_Throws() - { - ISerializable obj = TestStruct; - Assert.Catch(() => obj.GetObjectData(null, default)); - } - - [Test] - public void GetObjectData_SerializationInfo_AreEqual() - { - ISerializable obj = TestStruct; - var info = new SerializationInfo(typeof(Id), new FormatterConverter()); - obj.GetObjectData(info, default); - Assert.AreEqual(123456789L, info.GetValue("Value", typeof(long))); - } - [Test] - [Obsolete("Usage of the binary formatter is considered harmful.")] - public void SerializeDeserialize_TestStruct_AreEqual() - { - var input = TestStruct; - var exp = TestStruct; - var act = SerializeDeserialize.Binary(input); - Assert.AreEqual(exp, act); + , "Not a valid identifier"); } + } - [Test] - public void DataContractSerializeDeserialize_TestStruct_AreEqual() + [Test] + public void TryParse_TestStructInput_AreEqual() + { + using (TestCultures.En_GB.Scoped()) { - var input = TestStruct; var exp = TestStruct; - var act = SerializeDeserialize.DataContract(input); + var act = Id.TryParse(exp.ToString()); Assert.AreEqual(exp, act); } + } - [Test] - public void XmlSerialize_TestStruct_AreEqual() + [Test] + public void TryParse_InvalidInput_DefaultValue() + { + using (TestCultures.En_GB.Scoped()) { - var act = Serialize.Xml(TestStruct); - var exp = "123456789"; + var exp = default(Id); + var act = Id.TryParse("InvalidInput"); Assert.AreEqual(exp, act); } + } - [Test] - public void XmlDeserialize_XmlString_AreEqual() - { - var act =Deserialize.Xml>("123456789"); - Assert.AreEqual(TestStruct, act); - } - - [Test] - [Obsolete("Usage of the binary formatter is considered harmful.")] - public void SerializeDeserialize_IdForInt64SerializeObject_AreEqual() - { - var input = new IdForInt64SerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } + [Test] + public void GetObjectData_NulSerializationInfo_Throws() + { + ISerializable obj = TestStruct; + Assert.Catch(() => obj.GetObjectData(null, default)); + } - ; - var exp = new IdForInt64SerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } + [Test] + public void GetObjectData_SerializationInfo_AreEqual() + { + ISerializable obj = TestStruct; + var info = new SerializationInfo(typeof(Id), new FormatterConverter()); + obj.GetObjectData(info, default); + Assert.AreEqual(123456789L, info.GetValue("Value", typeof(long))); + } - ; - var act = SerializeDeserialize.Binary(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); - } + [Test] + [Obsolete("Usage of the binary formatter is considered harmful.")] + public void SerializeDeserialize_TestStruct_AreEqual() + { + var input = TestStruct; + var exp = TestStruct; + var act = SerializeDeserialize.Binary(input); + Assert.AreEqual(exp, act); + } - [Test] - public void XmlSerializeDeserialize_IdForInt64SerializeObject_AreEqual() - { - var input = new IdForInt64SerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } + [Test] + public void DataContractSerializeDeserialize_TestStruct_AreEqual() + { + var input = TestStruct; + var exp = TestStruct; + var act = SerializeDeserialize.DataContract(input); + Assert.AreEqual(exp, act); + } - ; - var exp = new IdForInt64SerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } + [Test] + public void XmlSerialize_TestStruct_AreEqual() + { + var act = Serialize.Xml(TestStruct); + var exp = "123456789"; + Assert.AreEqual(exp, act); + } - ; - var act = SerializeDeserialize.Xml(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); - } + [Test] + public void XmlDeserialize_XmlString_AreEqual() + { + var act =Deserialize.Xml>("123456789"); + Assert.AreEqual(TestStruct, act); + } - [Test] - public void DataContractSerializeDeserialize_IdForInt64SerializeObject_AreEqual() + [Test] + [Obsolete("Usage of the binary formatter is considered harmful.")] + public void SerializeDeserialize_IdForInt64SerializeObject_AreEqual() + { + var input = new IdForInt64SerializeObject { - var input = new IdForInt64SerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } - - ; - var exp = new IdForInt64SerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } - - ; - var act = SerializeDeserialize.DataContract(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [Test] - [Obsolete("Usage of the binary formatter is considered harmful.")] - public void SerializeDeserialize_Default_AreEqual() + ; + var exp = new IdForInt64SerializeObject { - var input = new IdForInt64SerializeObject - { - Id = 17, - Obj = default, - Date = new DateTime(1970, 02, 14), - } - - ; - var exp = new IdForInt64SerializeObject - { - Id = 17, - Obj = default, - Date = new DateTime(1970, 02, 14), - } - - ; - var act = SerializeDeserialize.Binary(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [Test] - public void XmlSerializeDeserialize_Default_AreEqual() - { - var input = new IdForInt64SerializeObject - { - Id = 17, - Obj = default, - Date = new DateTime(1970, 02, 14), - } - - ; - var exp = new IdForInt64SerializeObject - { - Id = 17, - Obj = default, - Date = new DateTime(1970, 02, 14), - } - - ; - var act = SerializeDeserialize.Xml(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); - } + ; + var act = SerializeDeserialize.Binary(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - [Test] - public void GetSchema_None_IsNull() + [Test] + public void XmlSerializeDeserialize_IdForInt64SerializeObject_AreEqual() + { + var input = new IdForInt64SerializeObject { - IXmlSerializable obj = TestStruct; - Assert.IsNull(obj.GetSchema()); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [TestCase("2017-06-11")] - public void FromJson_Invalid_Throws(object json) + ; + var exp = new IdForInt64SerializeObject { - Assert.Catch(() => JsonTester.Read>(json)); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [Test] - public void ToString_Empty_StringEmpty() - { - var act = Id.Empty.ToString(CultureInfo.InvariantCulture); - var exp = ""; - Assert.AreEqual(exp, act); - } + ; + var act = SerializeDeserialize.Xml(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - [Test] - public void ToString_CustomFormatter_SupportsCustomFormatting() + [Test] + public void DataContractSerializeDeserialize_IdForInt64SerializeObject_AreEqual() + { + var input = new IdForInt64SerializeObject { - var act = TestStruct.ToString("#,##0.0", FormatProvider.CustomFormatter); - var exp = "Unit Test Formatter, value: '123,456,789.0', format: '#,##0.0'"; - Assert.AreEqual(exp, act); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - /// GetHash should not fail for Id.Empty. - [Test] - public void GetHash_Empty_Hash() + ; + var exp = new IdForInt64SerializeObject { - Assert.AreEqual(0, Id.Empty.GetHashCode()); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - /// GetHash should not fail for the test struct. - [Test] - public void GetHash_TestStruct_Hash() - { - Assert.AreNotEqual(0, TestStruct.GetHashCode()); - } + ; + var act = SerializeDeserialize.DataContract(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - [Test] - public void Equals_EmptyEmpty_IsTrue() + [Test] + [Obsolete("Usage of the binary formatter is considered harmful.")] + public void SerializeDeserialize_Default_AreEqual() + { + var input = new IdForInt64SerializeObject { - Assert.IsTrue(Id.Empty.Equals(Id.Empty)); + Id = 17, + Obj = default, + Date = new DateTime(1970, 02, 14), } - [Test] - public void Equals_FormattedAndUnformatted_IsTrue() + ; + var exp = new IdForInt64SerializeObject { - var l = Id.Parse("123456"); - var r = Id.Parse("+0000123456"); - Assert.IsTrue(l.Equals(r)); + Id = 17, + Obj = default, + Date = new DateTime(1970, 02, 14), } - [Test] - public void Equals_TestStructTestStruct_IsTrue() - { - Assert.IsTrue(TestStruct.Equals(TestStruct)); - } + ; + var act = SerializeDeserialize.Binary(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - [Test] - public void Equals_TestStructEmpty_IsFalse() + [Test] + public void XmlSerializeDeserialize_Default_AreEqual() + { + var input = new IdForInt64SerializeObject { - Assert.IsFalse(TestStruct.Equals(Id.Empty)); + Id = 17, + Obj = default, + Date = new DateTime(1970, 02, 14), } - [Test] - public void Equals_EmptyTestStruct_IsFalse() + ; + var exp = new IdForInt64SerializeObject { - Assert.IsFalse(Id.Empty.Equals(TestStruct)); + Id = 17, + Obj = default, + Date = new DateTime(1970, 02, 14), } - [Test] - public void Equals_TestStructObjectTestStruct_IsTrue() - { - Assert.IsTrue(TestStruct.Equals((object)TestStruct)); - } + ; + var act = SerializeDeserialize.Xml(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - [Test] - public void Equals_TestStructNull_IsFalse() - { - Assert.IsFalse(TestStruct.Equals(null)); - } + [Test] + public void GetSchema_None_IsNull() + { + IXmlSerializable obj = TestStruct; + Assert.IsNull(obj.GetSchema()); + } - [Test] - public void Equals_TestStructObject_IsFalse() - { - Assert.IsFalse(TestStruct.Equals(new object())); - } + [TestCase("2017-06-11")] + public void FromJson_Invalid_Throws(object json) + { + Assert.Catch(() => JsonTester.Read>(json)); + } - [Test] - public void OperatorIs_TestStructTestStruct_IsTrue() - { - var l = TestStruct; - var r = TestStruct; - Assert.IsTrue(l == r); - } + [Test] + public void ToString_Empty_StringEmpty() + { + var act = Id.Empty.ToString(CultureInfo.InvariantCulture); + var exp = ""; + Assert.AreEqual(exp, act); + } - [Test] - public void OperatorIsNot_TestStructTestStruct_IsFalse() - { - var l = TestStruct; - var r = TestStruct; - Assert.IsFalse(l != r); - } + [Test] + public void ToString_CustomFormatter_SupportsCustomFormatting() + { + var act = TestStruct.ToString("#,##0.0", FormatProvider.CustomFormatter); + var exp = "Unit Test Formatter, value: '123,456,789.0', format: '#,##0.0'"; + Assert.AreEqual(exp, act); + } - [Test] - public void Next_NotSupported() - { - Assert.Throws(() => Id.Next()); - } + /// GetHash should not fail for Id.Empty. + [Test] + public void GetHash_Empty_Hash() + { + Assert.AreEqual(0, Id.Empty.GetHashCode()); + } - [TestCase(null)] - [TestCase("")] - [TestCase("ABC")] - [TestCase("-1")] - public void IsInvalid_String(string str) - { - Assert.IsFalse(Id.IsValid(str)); - } + /// GetHash should not fail for the test struct. + [Test] + public void GetHash_TestStruct_Hash() + { + Assert.AreNotEqual(0, TestStruct.GetHashCode()); + } - [TestCase("0")] - [TestCase("1234")] - [TestCase("+123456")] - public void IsValid_String(string str) - { - Assert.IsTrue(Id.IsValid(str)); - } + [Test] + public void Equals_EmptyEmpty_IsTrue() + { + Assert.IsTrue(Id.Empty.Equals(Id.Empty)); } - [Serializable] - public class IdForInt64SerializeObject + [Test] + public void Equals_FormattedAndUnformatted_IsTrue() { - public int Id { get; set; } - public Id Obj { get; set; } - public DateTime Date { get; set; } + var l = Id.Parse("123456"); + var r = Id.Parse("+0000123456"); + Assert.IsTrue(l.Equals(r)); } + + [Test] + public void Equals_TestStructTestStruct_IsTrue() + { + Assert.IsTrue(TestStruct.Equals(TestStruct)); + } + + [Test] + public void Equals_TestStructEmpty_IsFalse() + { + Assert.IsFalse(TestStruct.Equals(Id.Empty)); + } + + [Test] + public void Equals_EmptyTestStruct_IsFalse() + { + Assert.IsFalse(Id.Empty.Equals(TestStruct)); + } + + [Test] + public void Equals_TestStructObjectTestStruct_IsTrue() + { + Assert.IsTrue(TestStruct.Equals((object)TestStruct)); + } + + [Test] + public void Equals_TestStructNull_IsFalse() + { + Assert.IsFalse(TestStruct.Equals(null)); + } + + [Test] + public void Equals_TestStructObject_IsFalse() + { + Assert.IsFalse(TestStruct.Equals(new object())); + } + + [Test] + public void OperatorIs_TestStructTestStruct_IsTrue() + { + var l = TestStruct; + var r = TestStruct; + Assert.IsTrue(l == r); + } + + [Test] + public void OperatorIsNot_TestStructTestStruct_IsFalse() + { + var l = TestStruct; + var r = TestStruct; + Assert.IsFalse(l != r); + } + + [Test] + public void Next_NotSupported() + { + Assert.Throws(() => Id.Next()); + } + + [TestCase(null)] + [TestCase("")] + [TestCase("ABC")] + [TestCase("-1")] + public void IsInvalid_String(string str) + { + Assert.IsFalse(Id.IsValid(str)); + } + + [TestCase("0")] + [TestCase("1234")] + [TestCase("+123456")] + public void IsValid_String(string str) + { + Assert.IsTrue(Id.IsValid(str)); + } +} + +[Serializable] +public class IdForInt64SerializeObject +{ + public int Id { get; set; } + public Id Obj { get; set; } + public DateTime Date { get; set; } } diff --git a/specs/Qowaiv.Specs/UnitTests.OldStyle/Identifiers/IdForStringTest.cs b/specs/Qowaiv.Specs/UnitTests.OldStyle/Identifiers/IdForStringTest.cs index afcf8bdb0..7d7a4b564 100644 --- a/specs/Qowaiv.Specs/UnitTests.OldStyle/Identifiers/IdForStringTest.cs +++ b/specs/Qowaiv.Specs/UnitTests.OldStyle/Identifiers/IdForStringTest.cs @@ -1,418 +1,406 @@ -using FluentAssertions; -using NUnit.Framework; -using Qowaiv.Identifiers; -using Qowaiv.TestTools; -using Qowaiv.TestTools.Globalization; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Runtime.Serialization; -using System.Xml.Serialization; - -namespace Qowaiv.UnitTests.Identifiers +namespace Qowaiv.UnitTests.Identifiers; + +[EmptyTestClass] +public class ForString : StringIdBehavior { } + +/// Tests the identifier SVO. +public class IdForStringTest { - public class ForString : StringIdBehavior { } + /// The test instance for most tests. + public static readonly Id TestStruct = Id.Parse("Qowaiv-ID"); - /// Tests the identifier SVO. - public class IdForStringTest + /// Id.Empty should be equal to the default of identifier. + [Test] + public void Empty_None_EqualsDefault() { - /// The test instance for most tests. - public static readonly Id TestStruct = Id.Parse("Qowaiv-ID"); + Assert.AreEqual(default(Id), Id.Empty); + } - /// Id.Empty should be equal to the default of identifier. - [Test] - public void Empty_None_EqualsDefault() - { - Assert.AreEqual(default(Id), Id.Empty); - } + /// Id.IsEmpty() should be true for the default of identifier. + [Test] + public void IsEmpty_Default_IsTrue() + { + Assert.IsTrue(default(Id).IsEmpty()); + } - /// Id.IsEmpty() should be true for the default of identifier. - [Test] - public void IsEmpty_Default_IsTrue() - { - Assert.IsTrue(default(Id).IsEmpty()); - } + /// Id.IsEmpty() should be false for the TestStruct. + [Test] + public void IsEmpty_TestStruct_IsFalse() + { + Assert.IsFalse(TestStruct.IsEmpty()); + } - /// Id.IsEmpty() should be false for the TestStruct. - [Test] - public void IsEmpty_TestStruct_IsFalse() - { - Assert.IsFalse(TestStruct.IsEmpty()); - } + [Test] + public void FromBytes_Null_IsEmpty() + { + var fromBytes = Id.FromBytes(null); + Assert.AreEqual(Id.Empty, fromBytes); + } - [Test] - public void FromBytes_Null_IsEmpty() - { - var fromBytes = Id.FromBytes(null); - Assert.AreEqual(Id.Empty, fromBytes); - } + [Test] + public void FromBytes_Bytes_IsTestStruct() + { + var fromBytes = Id.FromBytes(new byte[] { 81, 111, 119, 97, 105, 118, 45, 73, 68 }); + Assert.AreEqual(TestStruct, fromBytes); + } - [Test] - public void FromBytes_Bytes_IsTestStruct() - { - var fromBytes = Id.FromBytes(new byte[] { 81, 111, 119, 97, 105, 118, 45, 73, 68 }); - Assert.AreEqual(TestStruct, fromBytes); - } + [Test] + public void ToByteArray_Empty_EmptyArray() + { + var bytes = Id.Empty.ToByteArray(); + Assert.AreEqual(Array.Empty(), bytes); + } - [Test] - public void ToByteArray_Empty_EmptyArray() - { - var bytes = Id.Empty.ToByteArray(); - Assert.AreEqual(Array.Empty(), bytes); - } + [Test] + public void ToByteArray_TestStruct_FilledArray() + { + var bytes = TestStruct.ToByteArray(); + var exepected = new byte[] { 81, 111, 119, 97, 105, 118, 45, 73, 68 }; + Assert.AreEqual(exepected, bytes); + } - [Test] - public void ToByteArray_TestStruct_FilledArray() - { - var bytes = TestStruct.ToByteArray(); - var exepected = new byte[] { 81, 111, 119, 97, 105, 118, 45, 73, 68 }; - Assert.AreEqual(exepected, bytes); - } + /// TryParse null should be valid. + [Test] + public void TryParse_Null_IsValid() + { + Assert.IsTrue(Id.TryParse(null, out var val)); + Assert.AreEqual(default(Id), val); + } - /// TryParse null should be valid. - [Test] - public void TryParse_Null_IsValid() - { - Assert.IsTrue(Id.TryParse(null, out var val)); - Assert.AreEqual(default(Id), val); - } + /// TryParse string.Empty should be valid. + [Test] + public void TryParse_StringEmpty_IsValid() + { + Assert.IsTrue(Id.TryParse(string.Empty, out var val)); + Assert.AreEqual(default(Id), val); + } - /// TryParse string.Empty should be valid. - [Test] - public void TryParse_StringEmpty_IsValid() - { - Assert.IsTrue(Id.TryParse(string.Empty, out var val)); - Assert.AreEqual(default(Id), val); - } + /// TryParse with specified string value should be valid. + [Test] + public void TryParse_StringValue_IsValid() + { + string str = "0f5ab5ab-12cb-4629-878d-b18b88b9a504"; + Assert.IsTrue(Id.TryParse(str, out var val)); + Assert.AreEqual(str, val.ToString()); + } - /// TryParse with specified string value should be valid. - [Test] - public void TryParse_StringValue_IsValid() + [Test] + public void TryParse_TestStructInput_AreEqual() + { + using (TestCultures.En_GB.Scoped()) { - string str = "0f5ab5ab-12cb-4629-878d-b18b88b9a504"; - Assert.IsTrue(Id.TryParse(str, out var val)); - Assert.AreEqual(str, val.ToString()); + var exp = TestStruct; + var act = Id.TryParse(exp.ToString()); + Assert.AreEqual(exp, act); } + } - [Test] - public void TryParse_TestStructInput_AreEqual() - { - using (TestCultures.En_GB.Scoped()) - { - var exp = TestStruct; - var act = Id.TryParse(exp.ToString()); - Assert.AreEqual(exp, act); - } - } + [Test] + public void GetObjectData_NulSerializationInfo_Throws() + { + ISerializable obj = TestStruct; + Assert.Catch(() => obj.GetObjectData(null, default)); + } - [Test] - public void GetObjectData_NulSerializationInfo_Throws() - { - ISerializable obj = TestStruct; - Assert.Catch(() => obj.GetObjectData(null, default)); - } + [Test] + public void GetObjectData_SerializationInfo_AreEqual() + { + ISerializable obj = TestStruct; + var info = new SerializationInfo(typeof(Id), new FormatterConverter()); + obj.GetObjectData(info, default); + Assert.AreEqual("Qowaiv-ID", info.GetValue("Value", typeof(string))); + } - [Test] - public void GetObjectData_SerializationInfo_AreEqual() - { - ISerializable obj = TestStruct; - var info = new SerializationInfo(typeof(Id), new FormatterConverter()); - obj.GetObjectData(info, default); - Assert.AreEqual("Qowaiv-ID", info.GetValue("Value", typeof(string))); - } + [Test] + [Obsolete("Usage of the binary formatter is considered harmful.")] + public void SerializeDeserialize_TestStruct_AreEqual() + { + var input = TestStruct; + var exp = TestStruct; + var act = SerializeDeserialize.Binary(input); + Assert.AreEqual(exp, act); + } - [Test] - [Obsolete("Usage of the binary formatter is considered harmful.")] - public void SerializeDeserialize_TestStruct_AreEqual() - { - var input = TestStruct; - var exp = TestStruct; - var act = SerializeDeserialize.Binary(input); - Assert.AreEqual(exp, act); - } + [Test] + public void DataContractSerializeDeserialize_TestStruct_AreEqual() + { + var input = TestStruct; + var exp = TestStruct; + var act = SerializeDeserialize.DataContract(input); + Assert.AreEqual(exp, act); + } - [Test] - public void DataContractSerializeDeserialize_TestStruct_AreEqual() - { - var input = TestStruct; - var exp = TestStruct; - var act = SerializeDeserialize.DataContract(input); - Assert.AreEqual(exp, act); - } + [Test] + public void XmlSerialize_TestStruct_AreEqual() + { + var act = Serialize.Xml(TestStruct); + var exp = "Qowaiv-ID"; + Assert.AreEqual(exp, act); + } - [Test] - public void XmlSerialize_TestStruct_AreEqual() - { - var act = Serialize.Xml(TestStruct); - var exp = "Qowaiv-ID"; - Assert.AreEqual(exp, act); - } + [Test] + public void XmlDeserialize_XmlString_AreEqual() + { + var act =Deserialize.Xml>("Qowaiv-ID"); + Assert.AreEqual(TestStruct, act); + } - [Test] - public void XmlDeserialize_XmlString_AreEqual() + [Test] + [Obsolete("Usage of the binary formatter is considered harmful.")] + public void SerializeDeserialize_IdForStringSerializeObject_AreEqual() + { + var input = new IdForStringSerializeObject { - var act =Deserialize.Xml>("Qowaiv-ID"); - Assert.AreEqual(TestStruct, act); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [Test] - [Obsolete("Usage of the binary formatter is considered harmful.")] - public void SerializeDeserialize_IdForStringSerializeObject_AreEqual() + ; + var exp = new IdForStringSerializeObject { - var input = new IdForStringSerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } - - ; - var exp = new IdForStringSerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } - - ; - var act = SerializeDeserialize.Binary(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [Test] - public void XmlSerializeDeserialize_IdForStringSerializeObject_AreEqual() - { - var input = new IdForStringSerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } - - ; - var exp = new IdForStringSerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } - - ; - var act = SerializeDeserialize.Xml(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); - } + ; + var act = SerializeDeserialize.Binary(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - [Test] - public void DataContractSerializeDeserialize_IdForStringSerializeObject_AreEqual() + [Test] + public void XmlSerializeDeserialize_IdForStringSerializeObject_AreEqual() + { + var input = new IdForStringSerializeObject { - var input = new IdForStringSerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } - - ; - var exp = new IdForStringSerializeObject - { - Id = 17, - Obj = TestStruct, - Date = new DateTime(1970, 02, 14), - } - - ; - var act = SerializeDeserialize.DataContract(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [Test] - [Obsolete("Usage of the binary formatter is considered harmful.")] - public void SerializeDeserialize_Default_AreEqual() + ; + var exp = new IdForStringSerializeObject { - var input = new IdForStringSerializeObject - { - Id = 17, - Obj = default, - Date = new DateTime(1970, 02, 14), - } - - ; - var exp = new IdForStringSerializeObject - { - Id = 17, - Obj = default, - Date = new DateTime(1970, 02, 14), - } - - ; - var act = SerializeDeserialize.Binary(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [Test] - public void XmlSerializeDeserialize_Default_AreEqual() - { - var input = new IdForStringSerializeObject - { - Id = 17, - Obj = default, - Date = new DateTime(1970, 02, 14), - } - - ; - var exp = new IdForStringSerializeObject - { - Id = 17, - Obj = default, - Date = new DateTime(1970, 02, 14), - } - - ; - var act = SerializeDeserialize.Xml(input); - Assert.AreEqual(exp.Id, act.Id, "Id"); - Assert.AreEqual(exp.Obj, act.Obj, "Obj"); - Assert.AreEqual(exp.Date, act.Date, "Date"); - } + ; + var act = SerializeDeserialize.Xml(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - [Test] - public void GetSchema_None_IsNull() + [Test] + public void DataContractSerializeDeserialize_IdForStringSerializeObject_AreEqual() + { + var input = new IdForStringSerializeObject { - IXmlSerializable obj = TestStruct; - Assert.IsNull(obj.GetSchema()); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [TestCase("0F5AB5AB-12CB-4629-878D-B18B88B9A504", "0F5AB5AB-12CB-4629-878D-B18B88B9A504")] - [TestCase("", "")] - [TestCase("123456789", 123456789L)] - public void FromJson(Id expected, object json) + ; + var exp = new IdForStringSerializeObject { - var actual = JsonTester.Read>(json); - Assert.AreEqual(expected, actual); + Id = 17, + Obj = TestStruct, + Date = new DateTime(1970, 02, 14), } - [Test] - public void ToString_Empty_StringEmpty() - { - var act = Id.Empty.ToString(); - var exp = ""; - Assert.AreEqual(exp, act); - } + ; + var act = SerializeDeserialize.DataContract(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - [Test] - public void ToString_CustomFormatter_SupportsCustomFormatting() + [Test] + [Obsolete("Usage of the binary formatter is considered harmful.")] + public void SerializeDeserialize_Default_AreEqual() + { + var input = new IdForStringSerializeObject { - var act = TestStruct.ToString("S", FormatProvider.CustomFormatter); - var exp = "Unit Test Formatter, value: 'Qowaiv-ID', format: 'S'"; - Assert.AreEqual(exp, act); + Id = 17, + Obj = default, + Date = new DateTime(1970, 02, 14), } - /// GetHash should not fail for Id.Empty. - [Test] - public void GetHash_Empty_Hash() + ; + var exp = new IdForStringSerializeObject { - Assert.AreEqual(0, Id.Empty.GetHashCode()); + Id = 17, + Obj = default, + Date = new DateTime(1970, 02, 14), } - /// GetHash should not fail for the test struct. - [Test] - public void GetHash_TestStruct_Hash() - { - Assert.AreNotEqual(0, TestStruct.GetHashCode()); - } + ; + var act = SerializeDeserialize.Binary(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - [Test] - public void Equals_EmptyEmpty_IsTrue() + [Test] + public void XmlSerializeDeserialize_Default_AreEqual() + { + var input = new IdForStringSerializeObject { - Assert.IsTrue(Id.Empty.Equals(Id.Empty)); + Id = 17, + Obj = default, + Date = new DateTime(1970, 02, 14), } - [Test] - public void Equals_TestStructTestStruct_IsTrue() + ; + var exp = new IdForStringSerializeObject { - Assert.IsTrue(TestStruct.Equals(TestStruct)); + Id = 17, + Obj = default, + Date = new DateTime(1970, 02, 14), } - [Test] - public void Equals_TestStructEmpty_IsFalse() - { - Assert.IsFalse(TestStruct.Equals(Id.Empty)); - } + ; + var act = SerializeDeserialize.Xml(input); + Assert.AreEqual(exp.Id, act.Id, "Id"); + Assert.AreEqual(exp.Obj, act.Obj, "Obj"); + Assert.AreEqual(exp.Date, act.Date, "Date"); + } - [Test] - public void Equals_EmptyTestStruct_IsFalse() - { - Assert.IsFalse(Id.Empty.Equals(TestStruct)); - } + [Test] + public void GetSchema_None_IsNull() + { + IXmlSerializable obj = TestStruct; + Assert.IsNull(obj.GetSchema()); + } - [Test] - public void Equals_TestStructObjectTestStruct_IsTrue() - { - Assert.IsTrue(TestStruct.Equals((object)TestStruct)); - } + [TestCase("0F5AB5AB-12CB-4629-878D-B18B88B9A504", "0F5AB5AB-12CB-4629-878D-B18B88B9A504")] + [TestCase("", "")] + [TestCase("123456789", 123456789L)] + public void FromJson(Id expected, object json) + { + var actual = JsonTester.Read>(json); + Assert.AreEqual(expected, actual); + } - [Test] - public void Equals_TestStructNull_IsFalse() - { - Assert.IsFalse(TestStruct.Equals(null)); - } + [Test] + public void ToString_Empty_StringEmpty() + { + var act = Id.Empty.ToString(); + var exp = ""; + Assert.AreEqual(exp, act); + } - [Test] - public void Equals_TestStructObject_IsFalse() - { - Assert.IsFalse(TestStruct.Equals(new object())); - } + [Test] + public void ToString_CustomFormatter_SupportsCustomFormatting() + { + var act = TestStruct.ToString("S", FormatProvider.CustomFormatter); + var exp = "Unit Test Formatter, value: 'Qowaiv-ID', format: 'S'"; + Assert.AreEqual(exp, act); + } - [Test] - public void OperatorIs_TestStructTestStruct_IsTrue() - { - var l = TestStruct; - var r = TestStruct; - Assert.IsTrue(l == r); - } + /// GetHash should not fail for Id.Empty. + [Test] + public void GetHash_Empty_Hash() + { + Assert.AreEqual(0, Id.Empty.GetHashCode()); + } - [Test] - public void OperatorIsNot_TestStructTestStruct_IsFalse() - { - var l = TestStruct; - var r = TestStruct; - Assert.IsFalse(l != r); - } + /// GetHash should not fail for the test struct. + [Test] + public void GetHash_TestStruct_Hash() + { + Assert.AreNotEqual(0, TestStruct.GetHashCode()); + } - [Test] - public void Next_NotSupported() - { - Assert.Throws(()=> Id.Next()); - } + [Test] + public void Equals_EmptyEmpty_IsTrue() + { + Assert.IsTrue(Id.Empty.Equals(Id.Empty)); + } - [TestCase(null)] - [TestCase("")] - public void IsInvalid_String(string str) - { - Assert.IsFalse(Id.IsValid(str)); - } + [Test] + public void Equals_TestStructTestStruct_IsTrue() + { + Assert.IsTrue(TestStruct.Equals(TestStruct)); + } - [TestCase("0F5AB5AB-12CB-4629-878D-B18B88B9A504")] - [TestCase("Qowaiv_SVOLibrary_GUIA")] - public void IsValid_String(string str) - { - Assert.IsTrue(Id.IsValid(str)); - } + [Test] + public void Equals_TestStructEmpty_IsFalse() + { + Assert.IsFalse(TestStruct.Equals(Id.Empty)); + } + + [Test] + public void Equals_EmptyTestStruct_IsFalse() + { + Assert.IsFalse(Id.Empty.Equals(TestStruct)); } - [Serializable] - public class IdForStringSerializeObject + [Test] + public void Equals_TestStructObjectTestStruct_IsTrue() { - public int Id { get; set; } - public Id Obj { get; set; } - public DateTime Date { get; set; } + Assert.IsTrue(TestStruct.Equals((object)TestStruct)); } + + [Test] + public void Equals_TestStructNull_IsFalse() + { + Assert.IsFalse(TestStruct.Equals(null)); + } + + [Test] + public void Equals_TestStructObject_IsFalse() + { + Assert.IsFalse(TestStruct.Equals(new object())); + } + + [Test] + public void OperatorIs_TestStructTestStruct_IsTrue() + { + var l = TestStruct; + var r = TestStruct; + Assert.IsTrue(l == r); + } + + [Test] + public void OperatorIsNot_TestStructTestStruct_IsFalse() + { + var l = TestStruct; + var r = TestStruct; + Assert.IsFalse(l != r); + } + + [Test] + public void Next_NotSupported() + { + Assert.Throws(()=> Id.Next()); + } + + [TestCase(null)] + [TestCase("")] + public void IsInvalid_String(string str) + { + Assert.IsFalse(Id.IsValid(str)); + } + + [TestCase("0F5AB5AB-12CB-4629-878D-B18B88B9A504")] + [TestCase("Qowaiv_SVOLibrary_GUIA")] + public void IsValid_String(string str) + { + Assert.IsTrue(Id.IsValid(str)); + } +} + +[Serializable] +public class IdForStringSerializeObject +{ + public int Id { get; set; } + public Id Obj { get; set; } + public DateTime Date { get; set; } } diff --git a/specs/Qowaiv.Specs/UnitTests.OldStyle/Threading/ThreadDomainTest.cs b/specs/Qowaiv.Specs/UnitTests.OldStyle/Threading/ThreadDomainTest.cs index 4a0fad46f..8f4e57f72 100644 --- a/specs/Qowaiv.Specs/UnitTests.OldStyle/Threading/ThreadDomainTest.cs +++ b/specs/Qowaiv.Specs/UnitTests.OldStyle/Threading/ThreadDomainTest.cs @@ -75,7 +75,6 @@ public void Set_MultiThreads_() var exp0 = (Percentage)0.031418m; Assert.AreEqual(exp0, act0, "Old"); - } [Test] @@ -91,4 +90,6 @@ public void Remove_Country_BeforSetAndAfter() } } } + +[EmptyTestClass] public class NoConverterClass { } diff --git a/src/Qowaiv.TestTools/EmptyTestClassAttribute.cs b/src/Qowaiv.TestTools/EmptyTestClassAttribute.cs new file mode 100644 index 000000000..1ab6e8726 --- /dev/null +++ b/src/Qowaiv.TestTools/EmptyTestClassAttribute.cs @@ -0,0 +1,16 @@ +namespace Qowaiv.TestTools; + +/// +/// Indicates that this class exists for test purposes only, in most cases to +/// create a specific type, without the need of properties of methods. +/// +/// +/// Using this attribute prevents S2094 (Classes should not be empty) from +/// showing up. +/// +[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] +public sealed class EmptyTestClassAttribute : Attribute +{ + /// (Optional) justification for having this empty test class. + public string? Justification { get; set; } +} diff --git a/src/Qowaiv.TestTools/Qowaiv.TestTools.csproj b/src/Qowaiv.TestTools/Qowaiv.TestTools.csproj index 748fe694c..bb9290212 100644 --- a/src/Qowaiv.TestTools/Qowaiv.TestTools.csproj +++ b/src/Qowaiv.TestTools/Qowaiv.TestTools.csproj @@ -5,8 +5,10 @@ netstandard2.0;net5.0;net6.0;net7.0 true - 6.4.0 + 6.4.1 +v6.4.1 +- Introduction of the EmptyTestClass attribute. v6.4.0 - Support .NET 7.0. #261 v6.3.0