using System.Collections.Generic;
using System.Threading.Tasks;
namespace OperaHouse_Assignment3
private int totalNumTickets;
private double regularTicketPrice;
public DateTime EventTime { get; set; }
public int DurationMinutes { get; set; }
public string Title { get; set; }
public Performer Performer { get; set; }
public Stage Stage { get; set; }
public bool ConcessionSales { get; set; }
public Event(string title, Performer performer, int numTickets, double ticketPrice, DateTime eventTime, int durationMinutes, bool concessionSales)
this.Performer = performer;
this.totalNumTickets = numTickets;
this.regularTicketPrice = ticketPrice;
this.EventTime = eventTime;
this.DurationMinutes = durationMinutes;
this.ConcessionSales = concessionSales;
public override string ToString()
string result = Title + " by " + Performer + " on " + EventTime.ToShortDateString();
result += " at " + EventTime.ToShortTimeString() + ". Concessions: ";
result += ConcessionSales ? "Yes. " : "No. ";
result += "Tickets available: " + NumAvailableTickets;
if (EventTime.DayOfWeek == DayOfWeek.Sunday || EventTime.DayOfWeek == DayOfWeek.Saturday)
public double ShowExpenses()
double stageCost = Stage.costPerHour * DurationMinutes/60.0 + Stage.cleaningFee;
return stageCost + Performer.Fee;
return TicketSales() - ShowExpenses();
using System.Collections.Generic;
using System.Threading.Tasks;
namespace OperaHouse_Assignment3
public string Name { get; set; }
public double Fee { get; set; }
public Performer(string name, double fee)
using System.Collections.Generic;
using System.Threading.Tasks;
namespace OperaHouse_Assignment3
public string StageName { get; set; }
public double costPerHour { get; set; }
public double cleaningFee { get; set; }
public Stage(string name, double hourlyRate, double cleaningFee)
this.costPerHour = hourlyRate;
this.cleaningFee = cleaningFee;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OperaHouse_Assignment3;
using System.Collections.Generic;
Event shrek, deathShow, belushiShow;
Performer osawaHigh = new Performer("Osawa High School", 0);
shrek = new Event("Shrek", osawaHigh, 150, 12, new DateTime(2015, 4, 18, 19, 30, 0), 60, true);
drDeath = new Performer("Dr Death", 1500);
belushi = new Performer("Jim Belushi", 3500);
deathShow = new Event("Dr. Death's Musical Adventures", drDeath, 200, 20, new DateTime(2015, 4, 25, 19, 0, 0), 60, true);
belushiShow = new Event("Belushi and the Board of Comedy", belushi, 160, 33, new DateTime(2015, 3, 4, 19, 45, 0), 60, false);
main = new Stage("Main Stage", 100, 150);
lounge = new Stage("The Lounge", 75, 50);
public void TestNumTickets()
Assert.AreEqual(150, shrek.NumAvailableTickets);
public void TestSellTickets()
Assert.AreEqual(150, shrek.NumAvailableTickets);
double amountSold = shrek.SellTickets(10);
Assert.AreEqual(120, amountSold);
Assert.AreEqual(140, shrek.NumAvailableTickets);
amountSold = shrek.SellTickets(140);
Assert.AreEqual(140 * 12, amountSold);
Assert.AreEqual(0, shrek.NumAvailableTickets);
public void TestSellTooManyTickets()
public void TestReturnTickets()
List<int> ticketNums = new List<int>((new int[] { 1, 2, 3 }));
double amountReturned = shrek.ReturnTickets(ticketNums);
Assert.AreEqual(3*12, amountReturned);
Assert.AreEqual(148, shrek.NumAvailableTickets);
double amountSold = deathShow.SellTickets(10);
Assert.AreEqual(10 * 20, amountSold);
deathShow.SellTickets(5);
Assert.AreEqual(10 * 20 + 5 * 20, deathShow.TicketSales());
deathShow.SellTickets(200);
Assert.AreEqual(200 * 20, deathShow.TicketSales());
public void TestDayOfWeek()
Assert.IsTrue(deathShow.IsWeekend());
Assert.IsTrue(shrek.IsWeekend());
Assert.IsFalse(belushiShow.IsWeekend());
deathShow.SellTickets(200);
double profit = 20 * 200 - 1500 - 150 - 100;
Assert.AreEqual(profit, deathShow.Profit());
Assert.IsTrue(deathShow.Profitable());
public void TestExpenses()
double expenses = drDeath.Fee + main.costPerHour * 1 + main.cleaningFee;
Assert.AreEqual(expenses, deathShow.ShowExpenses());
belushiShow.Stage = main;
expenses = main.costPerHour * 1 + main.cleaningFee;
expenses -= expenses * 0.1;
Assert.AreEqual(expenses, belushiShow.ShowExpenses());
public static void Main()
Console.WriteLine("Hello World");
using System.Collections.Generic;
using System.Threading.Tasks;
namespace OperaHouse_Assignment3
private int totalNumTickets;
private double regularTicketPrice;
public DateTime EventTime { get; set; }
public int DurationMinutes { get; set; }
public string Title { get; set; }
public Performer Performer { get; set; }
public Stage Stage { get; set; }
public bool ConcessionSales { get; set; }
public Event(string title, Performer performer, int numTickets, double ticketPrice, DateTime eventTime, int durationMinutes, bool concessionSales)
this.Performer = performer;
this.totalNumTickets = numTickets;
this.regularTicketPrice = ticketPrice;
this.EventTime = eventTime;
this.DurationMinutes = durationMinutes;
this.ConcessionSales = concessionSales;
public override string ToString()
string result = Title + " by " + Performer + " on " + EventTime.ToShortDateString();
result += " at " + EventTime.ToShortTimeString() + ". Concessions: ";
result += ConcessionSales ? "Yes. " : "No. ";
result += "Tickets available: " + NumAvailableTickets;
if (EventTime.DayOfWeek == DayOfWeek.Sunday || EventTime.DayOfWeek == DayOfWeek.Saturday)
public double ShowExpenses()
double stageCost = Stage.costPerHour * DurationMinutes/60.0 + Stage.cleaningFee;
return stageCost + Performer.Fee;
return TicketSales() - ShowExpenses();
using System.Collections.Generic;
using System.Threading.Tasks;
namespace OperaHouse_Assignment3
public string Name { get; set; }
public double Fee { get; set; }
public Performer(string name, double fee)
using System.Collections.Generic;
using System.Threading.Tasks;
namespace OperaHouse_Assignment3
public string StageName { get; set; }
public double costPerHour { get; set; }
public double cleaningFee { get; set; }
public Stage(string name, double hourlyRate, double cleaningFee)
this.costPerHour = hourlyRate;
this.cleaningFee = cleaningFee;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OperaHouse_Assignment3;
using System.Collections.Generic;
Event shrek, deathShow, belushiShow;
Performer osawaHigh = new Performer("Osawa High School", 0);
shrek = new Event("Shrek", osawaHigh, 150, 12, new DateTime(2015, 4, 18, 19, 30, 0), 60, true);
drDeath = new Performer("Dr Death", 1500);
belushi = new Performer("Jim Belushi", 3500);
deathShow = new Event("Dr. Death's Musical Adventures", drDeath, 200, 20, new DateTime(2015, 4, 25, 19, 0, 0), 60, true);
belushiShow = new Event("Belushi and the Board of Comedy", belushi, 160, 33, new DateTime(2015, 3, 4, 19, 45, 0), 60, false);
main = new Stage("Main Stage", 100, 150);
lounge = new Stage("The Lounge", 75, 50);
public void TestNumTickets()
Assert.AreEqual(150, shrek.NumAvailableTickets);
public void TestSellTickets()
Assert.AreEqual(150, shrek.NumAvailableTickets);
double amountSold = shrek.SellTickets(10);
Assert.AreEqual(120, amountSold);
Assert.AreEqual(140, shrek.NumAvailableTickets);
amountSold = shrek.SellTickets(140);
Assert.AreEqual(140 * 12, amountSold);
Assert.AreEqual(0, shrek.NumAvailableTickets);
public void TestSellTooManyTickets()
public void TestReturnTickets()
List<int> ticketNums = new List<int>((new int[] { 1, 2, 3 }));
double amountReturned = shrek.ReturnTickets(ticketNums);
Assert.AreEqual(3*12, amountReturned);
Assert.AreEqual(148, shrek.NumAvailableTickets);
double amountSold = deathShow.SellTickets(10);
Assert.AreEqual(10 * 20, amountSold);
deathShow.SellTickets(5);
Assert.AreEqual(10 * 20 + 5 * 20, deathShow.TicketSales());
deathShow.SellTickets(200);
Assert.AreEqual(200 * 20, deathShow.TicketSales());
public void TestDayOfWeek()
Assert.IsTrue(deathShow.IsWeekend());
Assert.IsTrue(shrek.IsWeekend());
Assert.IsFalse(belushiShow.IsWeekend());
deathShow.SellTickets(200);
double profit = 20 * 200 - 1500 - 150 - 100;
Assert.AreEqual(profit, deathShow.Profit());
Assert.IsTrue(deathShow.Profitable());
public void TestExpenses()
double expenses = drDeath.Fee + main.costPerHour * 1 + main.cleaningFee;
Assert.AreEqual(expenses, deathShow.ShowExpenses());
belushiShow.Stage = main;
expenses = main.costPerHour * 1 + main.cleaningFee;
expenses -= expenses * 0.1;
Assert.AreEqual(expenses, belushiShow.ShowExpenses());