public void ThrowsExceptionWhenPassingNullReferenceArgumentToConstructor() { FormattedText password = null; Assert.Throws(typeof(NullReferenceException), delegate() { PasswordConsumer consumer = new PasswordConsumer(password); }); }
public void StartConsumption_ThrowsExceptionWhenPassingNullReferenceArgument() { SmartWarehouse<FormattedText> warehoue = null; PasswordConsumer consumer = new PasswordConsumer(new FormattedText("abc")); Assert.Throws(typeof(NullReferenceException), delegate() { consumer.StartConsumption(warehoue); }); }
public void StartConsumption_ThrowsExceptionWhenConsumptionAlreadyStarted() { SmartWarehouse<FormattedText> warehoue = new SmartWarehouse<FormattedText>(20); PasswordConsumer consumer = new PasswordConsumer(new FormattedText("abc")); consumer.StartConsumption(warehoue); Assert.Throws(typeof(InvalidOperationException), delegate() { consumer.StartConsumption(warehoue); }); }
public void AddConsumer_ThrowsExceptionWhenPassingSameConsumerMoreThanOnce() { SmartWarehouse<FormattedText> warehouse = new SmartWarehouse<FormattedText>(20); PasswordDistributor distributor = new PasswordDistributor(warehouse); PasswordConsumer consumer = new PasswordConsumer(new FormattedText("cba")); distributor.AddConsumer(consumer); Assert.Throws(typeof(ArgumentException), delegate() { distributor.AddConsumer(consumer); }); }
public void StartConsumption_ThrowsExceptionWhenTryingToCallMethodWhenConsumptionIsNotStopped() { SmartWarehouse<FormattedText> warehouse = new SmartWarehouse<FormattedText>(20); PasswordDistributor distributor = new PasswordDistributor(warehouse); PasswordConsumer consumer = new PasswordConsumer(new FormattedText("cba")); consumer.PasswordTakingMaximumTime = 20; distributor.AddConsumer(consumer); distributor.StartConsumption(); Assert.Throws(typeof(InvalidOperationException), delegate() { distributor.StartConsumption(); }); Thread.Sleep(2); consumer.StopConsumption(); }
public void AddConsumer(PasswordConsumer consumer) { if (consumer == null) throw new NullReferenceException(); if(consumers.Contains(consumer)) throw new ArgumentException("Consumer is already on list."); consumers.Add(consumer); consumer.OnDesiredPasswordFound += (Action)OnPasswordFoundByConsumer; lock (synchronizationObject) { if (ConsumptionStarted) consumer.StartConsumption(warehouse); } }
static void Main(string[] args) { SmartWarehouse<FormattedText> warehouse = new SmartWarehouse<FormattedText>(20); PasswordProducer pp = new PasswordProducer(new FormattedText("abc")); PasswordConsumer pc = new PasswordConsumer(new FormattedText("cba")); PasswordDistributor distributor = new PasswordDistributor(warehouse); distributor.AddProducer(pp); distributor.AddConsumer(pc); distributor.StartConsumption(); PasswordConsumer consumer = new PasswordConsumer(new FormattedText("bca")); distributor.AddConsumer(consumer); distributor.StartProduction(); PasswordProducer producer = new PasswordProducer(new FormattedText("abc")); distributor.AddProducer(producer); Console.ReadLine(); Console.WriteLine(warehouse.Count); }
public void ReturnsConsumerObject() { FormattedText password = new FormattedText("abc"); PasswordConsumer consumer = new PasswordConsumer(password); Assert.IsNotNull(password); }