added test for negative discounts and updated code to raise an error when they come up
added standard discount test and no prices less than zero tests