public void CheckAndConvertEquivalentProperty_ReturnsTypedActualValue()
        {
            var    expected = new DateTime(2013, 04, 10);
            object actual   = new DateTime(2013, 04, 10, 10, 28, 10);

            var result = StoragePropertyDefinitionUnificationUtility.CheckAndConvertEquivalentProperty(
                expected,
                actual,
                "param",
                item => Tuple.Create <string, object> ("Year", item.Year));

            Assert.That(VariableTypeInferrer.GetVariableType(result), Is.SameAs(typeof(DateTime)));
            Assert.That(result, Is.EqualTo(actual));
        }
        public void CheckAndConvertEquivalentProperty_ThrowsOnPropertyMismatch()
        {
            var    expected = new DateTime(2013, 04, 10);
            object actual   = new DateTime(2014, 04, 10, 10, 28, 10);

            Assert.That(
                () => StoragePropertyDefinitionUnificationUtility.CheckAndConvertEquivalentProperty(
                    expected,
                    actual,
                    "param",
                    item => Tuple.Create <string, object> ("Year", item.Year)),
                Throws.ArgumentException.With.Message.EqualTo(
                    "Only equivalent properties can be combined, but this property has Year '2013', and the given property has Year '2014'.\r\n"
                    + "Parameter name: param"));
        }