public void ShouldProvideSpecifiedValue()
            {
                // arrange
                var targetId        = Faker.Random.Long();
                var stronglyTypedId = new LongFor <Order>(targetId);

                // act
                var providedValue = stronglyTypedId.Value;

                // assert
                providedValue.Should().Be(targetId);
            }
            public void ShouldNotBeEqualWithIEntityIdWhenValuesAreDifferent()
            {
                // arrange
                var stronglyTypedId        = new LongFor <Order>(Faker.Random.Long());
                var anotherStronglyTypedId = new IdFor <Order, long>(Faker.Random.Long());

                // act
                var result = stronglyTypedId != anotherStronglyTypedId;

                // assert
                result.Should().BeTrue();
            }
            public void ShouldProvideFormattedValueString(string format)
            {
                // arrange
                var targetId        = Faker.Random.Long();
                var stronglyTypedId = new LongFor <Order>(targetId);

                // act
                var providedValue = stronglyTypedId.ToString(format);

                // assert
                providedValue.Should().Be(targetId.ToString(format));
            }
            public void ShouldProvide0ForSameId()
            {
                // arrange
                var targetId        = Faker.Random.Long();
                var stronglyTypedId = new LongFor <Order>(targetId);

                // act
                var result = stronglyTypedId.CompareTo(stronglyTypedId);

                // assert
                result.Should().Be(0);
            }
            public void ShouldNotBeEqualWhenValuesAreDifferent()
            {
                // arrange
                var stronglyTypedId        = new LongFor <Order>(Faker.Random.Long());
                var anotherStronglyTypedId = new LongFor <Order>(Faker.Random.Long());

                // act
                var result = stronglyTypedId == anotherStronglyTypedId;

                // assert
                result.Should().BeFalse();
            }
            public void ShouldNotBeEqualWithIEntityIdWhenNull()
            {
                // arrange
                var targetId        = Faker.Random.Long();
                var stronglyTypedId = new LongFor <Order>(targetId);
                IEntityId <Order, long> anotherStronglyTypedId = null;

                // act
                var result = stronglyTypedId != anotherStronglyTypedId;

                // assert
                result.Should().BeTrue();
            }
            public void ShouldBeEqualWithIEntityIdWhenValuesAndEntitiesAreEqual()
            {
                // arrange
                var targetId               = Faker.Random.Long();
                var stronglyTypedId        = new LongFor <Order>(targetId);
                var anotherStronglyTypedId = new IdFor <Order, long>(targetId);

                // act
                var result = stronglyTypedId != anotherStronglyTypedId;

                // assert
                result.Should().BeFalse();
            }
            public void ShouldNotProvideSameHashCodeWhenValuesAreDifferent()
            {
                // arrange
                var stronglyTypedId        = new LongFor <Order>(Faker.Random.Long());
                var anotherStronglyTypedId = new LongFor <Order>(Faker.Random.Long());

                // act
                var hashCode1 = stronglyTypedId.GetHashCode();
                var hashCode2 = anotherStronglyTypedId.GetHashCode();

                // assert
                hashCode1.Should().NotBe(hashCode2);
            }
            public void ShouldProvide1WhenCompareToNullEntityId()
            {
                // arrange
                var targetId        = Faker.Random.Long();
                var stronglyTypedId = new LongFor <Order>(targetId);


                // act
                var result = stronglyTypedId.CompareTo((IEntityId <Order, long>)null);

                // assert
                result.Should().Be(1);
            }
            public void ShouldThrowWhenCompareWithNoEntityId()
            {
                // arrange
                var targetId        = Faker.Random.Long();
                var stronglyTypedId = new LongFor <Order>(targetId);
                var someObject      = new Order();

                // act
                Func <int> act = () => stronglyTypedId.CompareTo(someObject);

                // assert
                act.Should().Throw <ArgumentException>();
            }
            public void ShouldNotBeEqualWithIEntityIdWhenEntitiesAreDifferent()
            {
                // arrange
                var targetId               = Faker.Random.Long();
                var stronglyTypedId        = new LongFor <Order>(targetId);
                var anotherStronglyTypedId = new IdFor <PricePosition, long>(targetId);

                // act
                var result = stronglyTypedId.Equals(anotherStronglyTypedId);

                // assert
                result.Should().BeFalse();
            }
            public void ShouldBeEqualWhenValuesAndEntitiesAreEqual()
            {
                // arrange
                var targetId               = Faker.Random.Long();
                var stronglyTypedId        = new LongFor <Order>(targetId);
                var anotherStronglyTypedId = new LongFor <Order>(targetId);

                // act
                var result = stronglyTypedId.Equals(anotherStronglyTypedId);

                // assert
                result.Should().BeTrue();
            }
            public void ShouldNotProvideSameHashCodeWhenEntitiesAreDifferent()
            {
                // arrange
                var targetId               = Faker.Random.Long();
                var stronglyTypedId        = new LongFor <Order>(targetId);
                var anotherStronglyTypedId = new LongFor <PricePosition>(targetId);

                // act
                var hashCode1 = stronglyTypedId.GetHashCode();
                var hashCode2 = anotherStronglyTypedId.GetHashCode();

                // assert
                hashCode1.Should().NotBe(hashCode2);
            }
            public void ShouldProvideSameHashCodeWhenValuesAndEntitiesAreEqual()
            {
                // arrange
                var targetId               = Faker.Random.Long();
                var stronglyTypedId        = new LongFor <Order>(targetId);
                var anotherStronglyTypedId = new LongFor <Order>(targetId);

                // act
                var hashCode1 = stronglyTypedId.GetHashCode();
                var hashCode2 = anotherStronglyTypedId.GetHashCode();

                // assert
                hashCode1.Should().Be(hashCode2);
            }
            public void ShouldProvideSameResultAsBaseIdsDoForEntityId()
            {
                // arrange
                var stronglyTypedId        = new LongFor <Order>(Faker.Random.Long());
                var anotherStronglyTypedId = new LongFor <Order>(Faker.Random.Long());

                // act
                var result1 = stronglyTypedId.CompareTo((IEntityId <Order, long>)anotherStronglyTypedId);
                var result2 = anotherStronglyTypedId.CompareTo((IEntityId <Order, long>)stronglyTypedId);

                var baseResult1 = stronglyTypedId.Value.CompareTo(anotherStronglyTypedId.Value);
                var baseResult2 = anotherStronglyTypedId.Value.CompareTo(stronglyTypedId.Value);

                // assert
                result1.Should().Be(baseResult1);
                result2.Should().Be(baseResult2);
            }
            public void ShouldProvideFormattedWithFormatterValueString(string format, CultureInfo cultureInfo)
            {
                // arrange
                var targetId                = Faker.Random.Long();
                var zeroId                  = new LongFor <Order>(0);
                var stronglyTypedId         = new LongFor <Order>(targetId);
                var oppositeStronglyTypedId = new LongFor <Order>(-1 * targetId);

                // act
                var results = new Dictionary <LongFor <Order>, string>()
                {
                    { zeroId, zeroId.ToString(format, cultureInfo) },
                    { stronglyTypedId, stronglyTypedId.ToString(format, cultureInfo) },
                    { oppositeStronglyTypedId, oppositeStronglyTypedId.ToString(format, cultureInfo) },
                };

                // assert
                foreach (var result in results)
                {
                    result.Value.Should().Be(result.Key.Value.ToString(format, cultureInfo));
                }
            }