public void Base_class_value_property_returns_same_as_strongly_typed_value_property()
        {
            var key = new SimpleKeyValue<int>(new Mock<IKey>().Object, 77);

            Assert.Equal(77, key.Value);
            Assert.Equal(77, ((IKeyValue)key).Value);
        }
        public void StartTracking_is_no_op_if_entity_is_already_tracked()
        {
            var model = BuildModel();
            var categoryType = model.FindEntityType(typeof(Category));
            var stateManager = CreateStateManager(model);

            var category = new Category { Id = 77 };
            var entityKey = new SimpleKeyValue<int>(categoryType.FindPrimaryKey(), 77);
            var valueBuffer = new ValueBuffer(new object[] { 77, "Bjork", null });

            var entry = stateManager.StartTracking(categoryType, entityKey, category, valueBuffer);

            Assert.Same(entry, stateManager.StartTracking(categoryType, entityKey, category, valueBuffer));
        }
        public void StartTracking_throws_if_different_instance_with_same_identity_is_already_tracked()
        {
            var model = BuildModel();
            var categoryType = model.FindEntityType(typeof(Category));
            var stateManager = CreateStateManager(model);

            var entityKey = new SimpleKeyValue<int>(categoryType.FindPrimaryKey(), 77);
            var valueBuffer = new ValueBuffer(new object[] { 77, "Bjork", null });

            stateManager.StartTracking(categoryType, entityKey, new Category { Id = 77 }, valueBuffer);

            Assert.Equal(
                CoreStrings.IdentityConflict("Category"),
                Assert.Throws<InvalidOperationException>(
                    () => stateManager.StartTracking(categoryType, entityKey, new Category { Id = 77 }, valueBuffer)).Message);
        }