public void GivenOtherObjectIsNotASharedSecretEncryptionKey_AreNotEqual()
            {
                var first  = new SharedSecretEncryptionKey("abc123");
                var second = new object();

                first.Equals(second).Should().BeFalse();
            }
            public void ReturnsValue()
            {
                var value  = Guid.NewGuid().ToString();
                var actual = new SharedSecretEncryptionKey(value).ToString();

                actual.Should().Be(value);
            }
            public void IsImplicitlyConvertibleToString()
            {
                var    value  = Guid.NewGuid().ToString();
                var    obj    = new SharedSecretEncryptionKey(value);
                string actual = obj;

                actual.Should().Be(value);
            }
            public void WhenValuesAreDifferentlyCased_AreNotEqual()
            {
                var first  = new SharedSecretEncryptionKey("abc123");
                var second = new SharedSecretEncryptionKey("aBc123");

                first.Equals(second).Should().BeFalse();
                (first == second).Should().BeFalse();
                (first != second).Should().BeTrue();
            }
            public void IsImplicitlyConvertibleFromString()
            {
                var value = Guid.NewGuid().ToString();
                var str   = value;
                SharedSecretEncryptionKey actual = str;
                var expected = new SharedSecretEncryptionKey(value);

                actual.Should().Be(expected);
            }
            public void WhenValueIsEmpty_IsEqualToEmpty()
            {
                var first  = new SharedSecretEncryptionKey("");
                var second = SharedSecretEncryptionKey.Empty;

                first.Equals(second).Should().BeTrue();
                (first == second).Should().BeTrue();
                (first != second).Should().BeFalse();
                first.GetHashCode().Should().Be(second.GetHashCode());
            }
            public void WhenValuesAreEqual_AreEqual()
            {
                var first  = new SharedSecretEncryptionKey("abc123");
                var second = new SharedSecretEncryptionKey(first);

                first.Equals(second).Should().BeTrue();
                (first == second).Should().BeTrue();
                (first != second).Should().BeFalse();
                first.GetHashCode().Should().Be(second.GetHashCode());
            }
            public void DefaultConstructor_CreatesEmptySharedSecretEncryptionKey()
            {
                var actual = new SharedSecretEncryptionKey();

                actual.Should().Be(SharedSecretEncryptionKey.Empty);
            }
            public void NullValue_ReturnsEmptySharedSecretEncryptionKey()
            {
                var actual = new SharedSecretEncryptionKey(null);

                actual.Should().Be(SharedSecretEncryptionKey.Empty);
            }
 public void Parses(string value, string expected)
 {
     SharedSecretEncryptionKey.TryParse(value, out var actual);
     actual.Should().Be((SharedSecretEncryptionKey)expected);
 }
            public void ReturnsTrue(string value)
            {
                var actual = SharedSecretEncryptionKey.TryParse(value, out _);

                actual.Should().BeTrue();
            }
            public void Constructor_CreatesSharedSecretEncryptionKeyWithValue()
            {
                var actual = new SharedSecretEncryptionKey("theValue");

                actual.Value.Should().Be("theValue");
            }