/**
 * 
 */
package com.orsomethinglikethat.example;

import junit.framework.Assert;
import junit.framework.TestCase;

/**
 * @author lpillow
 */
public class MenuItemTest extends TestCase
{
    private Double salesTaxRate = new Double( 0.07 );

    public void testToString()
    {
        Assert.assertEquals( MenuItem.CHEESEBURGER.getDisplayName(), MenuItem.CHEESEBURGER.toString() );
        Assert.assertEquals( MenuItem.DRINK.getDisplayName(), MenuItem.DRINK.toString() );
        Assert.assertEquals( MenuItem.FRIES.getDisplayName(), MenuItem.FRIES.toString() );
        Assert.assertEquals( MenuItem.DOUBLE_CHEESE_MEAL.getDisplayName(), MenuItem.DOUBLE_CHEESE_MEAL.toString() );
    }

    public void testGetPriceDOUBLE_CHEESE_MEAL()
    {
        Double expectedMealPrice = ( MenuItem.CHEESEBURGER.getPrice() * 2 ) + MenuItem.FRIES.getPrice() + MenuItem.DRINK.getPrice();
        Assert.assertEquals( expectedMealPrice, MenuItem.DOUBLE_CHEESE_MEAL.getPrice() );
    }

    public void testCalculateSalePrice()
    {
        Double expectedCheeseburgerSalesPrice = MenuItem.CHEESEBURGER.getPrice() + ( MenuItem.CHEESEBURGER.getPrice() * this.salesTaxRate );
        Double expectedDrinkSalesPrice = MenuItem.DRINK.getPrice() + ( MenuItem.DRINK.getPrice() * this.salesTaxRate );
        Double expectedFriesSalesPrice = MenuItem.FRIES.getPrice() + ( MenuItem.FRIES.getPrice() * this.salesTaxRate );
        Double expectedMealSalesPrice = MenuItem.DOUBLE_CHEESE_MEAL.getPrice() + ( MenuItem.DOUBLE_CHEESE_MEAL.getPrice() * this.salesTaxRate );

        Assert.assertEquals( expectedCheeseburgerSalesPrice, MenuItem.CHEESEBURGER.calculateSalePrice( this.salesTaxRate ) );
        Assert.assertEquals( expectedDrinkSalesPrice, MenuItem.DRINK.calculateSalePrice( this.salesTaxRate ) );
        Assert.assertEquals( expectedFriesSalesPrice, MenuItem.FRIES.calculateSalePrice( this.salesTaxRate ) );
        Assert.assertEquals( expectedMealSalesPrice, MenuItem.DOUBLE_CHEESE_MEAL.calculateSalePrice( this.salesTaxRate ) );
    }
    
    public void testEnumIsObject()
    {
        Assert.assertTrue( "Enum not instance of Object", MenuItem.CHEESEBURGER instanceof Object );
    }
}
