protected UnversionedReferenceDictionaryTests()
        {
            FirstAggregate  = new SerializableAggregateRoot();
            SecondAggregate = new SerializableAggregateRoot();
            FirstReference  = FirstAggregate.ToReference();
            SecondReference = SecondAggregate.Id.ToReference <SerializableAggregateRoot>(version: SecondAggregate.Version.Next());

            Dictionary = new UnversionedReferenceDictionary <SerializableAggregateRoot, SerializableAggregateRoot>
            {
                { FirstReference, FirstAggregate },
                { SecondReference, SecondAggregate },
            };
        }
        public void GivenAnExistingDictionaryThenAnEmptyInstanceIsReturned()
        {
            IDictionary <Reference <SerializableAggregateRoot>, SerializableAggregateRoot> existing =
                Dictionary.Snapshot();

            IDictionary <Reference <SerializableAggregateRoot>, SerializableAggregateRoot> instance =
                new UnversionedReferenceDictionary <SerializableAggregateRoot, SerializableAggregateRoot>(existing: existing);

            Assert.NotSame(existing, instance);
            Assert.Equal(existing.Count, instance.Count);
            Assert.Contains(existing, existing => instance.Contains(existing));
        }
        public void GivenNoExistingDictionaryThenAnEmptyInstanceIsReturned()
        {
            var instance = new UnversionedReferenceDictionary <SerializableAggregateRoot, int>();

            Assert.Empty(instance);
        }