public void CookTest()
    {
        // Arrange
        BaseItem fleshItem = createTestItem();

        FleshCategory fleshCategory = (FleshCategory)fleshItem.GetItemCategoryByClass(typeof(FleshCategory));

        float expectedHealthEffect1 = fleshCategory.HealthEffect + 0.25f;
        float expectedHungerGain1   = fleshCategory.HungerGain * 1.25f;
        float expectedHealthEffect2 = expectedHealthEffect1 - 0.25f;
        float expectedHungerGain2   = expectedHungerGain1 * 0.5f;

        // Act
        fleshCategory.Cook();

        // Check
        Assert.AreEqual(expectedHealthEffect1, fleshCategory.HealthEffect);
        Assert.AreEqual(expectedHungerGain1, fleshCategory.HungerGain);
        Assert.AreEqual("Cooked Sample Flesh", fleshItem.ItemName);
        Assert.True(fleshItem.Types.Contains(ItemTypes.Edible));
        Assert.AreEqual(1, fleshItem.Types.Count);
        Assert.AreEqual("modifiedFlesh.png", fleshItem.InventorySprite);
        Assert.AreEqual("modifiedFleshModel.png", fleshItem.WorldModel);

        // Check the second time it cooks that it becomes burnt
        fleshCategory.Cook();

        Assert.AreEqual(expectedHealthEffect2, fleshCategory.HealthEffect);
        Assert.AreEqual(expectedHungerGain2, fleshCategory.HungerGain);
        Assert.AreEqual("Burnt Sample Flesh", fleshItem.ItemName);
        Assert.True(fleshItem.Types.Contains(ItemTypes.Fuel));
        Assert.AreEqual(1, fleshItem.Types.Count);
    }