public void Test_that_converter_is_used_while_not_null_value_setting()
        {
            // Arrange
            var isConvertedFromStorageEverCalled = false;
            var converter = new StorageValueConverterMock(
                v =>
            {
                isConvertedFromStorageEverCalled = true;

                return(v);
            },
                v => v);
            var accessor = new EntityPropertyAccessor(
                nameof(TestEntity.Property),
                false,
                e => null,
                (e, v) => ((TestEntity)e).Property = (string)v,
                converter);
            var entity = new TestEntity();
            var value  = "Some value";

            // Act
            accessor.SetProperty(entity, EntityProperty.GeneratePropertyForString(value));

            // Assert
            Assert.AreEqual(value, entity.Property);
            Assert.IsTrue(isConvertedFromStorageEverCalled);
        }
        public void Test_that_converter_is_used_while_not_null_value_getting()
        {
            // Arrange
            var isConvertedToStorageEverCalled = false;
            var converter = new StorageValueConverterMock(
                v => v,
                v =>
            {
                isConvertedToStorageEverCalled = true;

                return(v);
            });
            var accessor = new EntityPropertyAccessor(
                nameof(TestEntity.Property),
                false,
                e => ((TestEntity)e).Property,
                (e, v) => ((TestEntity)e).Property = (string)v,
                converter);
            var entity = new TestEntity
            {
                Property = "Some value"
            };

            // Act
            var entityProperty = accessor.GetProperty(entity);

            // Assert
            Assert.IsNotNull(entityProperty);
            Assert.AreEqual(entity.Property, entityProperty.StringValue);
            Assert.IsTrue(isConvertedToStorageEverCalled);
        }