예제 #1
0
        public void TestSetPerform()
        {
            var set = new Short("Set1");
            var instrumentGuitar = new Guitar();
            var instrumentDrums  = new Drums();
            var performer        = new Performer("Ivan", 23);
            var song1            = new Song("Song1", new TimeSpan(0, 1, 1));

            this.stage.AddSet(set);
            performer.AddInstrument(instrumentGuitar);
            performer.AddInstrument(instrumentDrums);
            set.AddPerformer(performer);
            set.AddSong(song1);


            var actual   = this.setController.PerformSets();
            var expected = $@"1. Set1:
-- 1. Song1 (01:01)
-- Set Successful";

            var actualInstrumentWear   = instrumentGuitar.Wear;
            var expectedInstrumentWear = 40;

            Assert.That(actual, Is.EqualTo(expected));
            Assert.That(actualInstrumentWear, Is.EqualTo(expectedInstrumentWear));
        }
예제 #2
0
        public void Test()
        {
            var stage      = new Stage();
            var performer1 = new Performer("Gosho", 21);

            performer1.AddInstrument(new Guitar());
            performer1.AddInstrument(new Microphone());
            var performer2 = new Performer("Pesho", 23);

            performer2.AddInstrument(new Drums());
            var performer3 = new Performer("Ivan", 20);

            performer3.AddInstrument(new Microphone());
            var set = new Long("TestSet");

            set.AddPerformer(performer1);
            set.AddPerformer(performer2);
            set.AddPerformer(performer3);
            var song1 = new Song("song1", new TimeSpan(0, 20, 0));
            var song2 = new Song("song2", new TimeSpan(0, 20, 0));
            var song3 = new Song("song3", new TimeSpan(0, 19, 0));
            var song4 = new Song("song4", new TimeSpan(0, 0, 1));

            set.AddSong(song1);
            set.AddSong(song2);
            set.AddSong(song3);
            set.AddSong(song4);
            stage.AddSet(set);

            var controller = new SetController(stage);
            var result     = controller.PerformSets();

            Assert.That(result, Is.EqualTo("1. TestSet:\r\n-- 1. song1 (20:00)\r\n-- 2. song2 (20:00)\r\n-- 3. song3 (19:00)\r\n-- 4. song4 (00:01)\r\n-- Set Successful"));
        }
예제 #3
0
        public void Test2()
        {
            var stage      = new Stage();
            var performer1 = new Performer("Gosho", 21);
            var guitar     = new Guitar();

            guitar.WearDown();
            guitar.WearDown();
            guitar.WearDown();
            guitar.WearDown();
            guitar.WearDown();
            guitar.WearDown();
            guitar.WearDown();
            guitar.WearDown();
            guitar.WearDown();
            guitar.WearDown();
            guitar.WearDown();
            guitar.WearDown();
            guitar.WearDown();
            guitar.WearDown();
            performer1.AddInstrument(new Guitar());
            performer1.AddInstrument(new Microphone());
            var performer2 = new Performer("Pesho", 23);

            performer2.AddInstrument(new Drums());
            var performer3 = new Performer("Ivan", 20);

            performer3.AddInstrument(guitar);
            var set = new Long("TestSet");

            set.AddPerformer(performer1);
            set.AddPerformer(performer2);
            set.AddPerformer(performer3);
            var song1 = new Song("song1", new TimeSpan(0, 20, 0));
            var song2 = new Song("song2", new TimeSpan(0, 20, 0));
            var song3 = new Song("song3", new TimeSpan(0, 19, 0));
            var song4 = new Song("song4", new TimeSpan(0, 0, 1));

            set.AddSong(song1);
            set.AddSong(song2);
            set.AddSong(song3);
            set.AddSong(song4);
            stage.AddSet(set);

            var controller = new SetController(stage);
            var result     = controller.PerformSets();

            Assert.That(result, Is.EqualTo("1. TestSet:\r\n-- Did not perform"));
        }
        public void PerformCommandReturnsSuccessResult()
        {
            IStage stage = new Stage();
            ISet   set   = new Short("Set1");

            TimeSpan duration = TimeSpan.FromSeconds((1 * 60) + 2);
            ISong    song     = new Song("Song1", duration);

            IPerformer performer = new Performer("Gosho", 20);

            performer.AddInstrument(new Guitar());

            set.AddPerformer(performer);
            set.AddSong(song);

            stage.AddSong(song);

            stage.AddSet(set);
            stage.AddSong(song);
            stage.AddPerformer(performer);

            ISetController setController = new SetController(stage);

            string actual   = "1. Set1:\r\n-- 1. Song1 (01:02)\r\n-- Set Successful";
            string expected = setController.PerformSets();

            Assert.AreEqual(actual, expected);
        }
예제 #5
0
        public void PerformSetShouldDecreaseInstrumentWear()
        {
            IStage         stage         = new Stage();
            ISetController setController = new SetController(stage);


            ISet        set        = new Short("Set1");
            IPerformer  performer  = new Performer("Pesho", 18);
            IInstrument instrument = new Guitar();

            performer.AddInstrument(instrument);
            set.AddPerformer(performer);

            ISong song = new Song("Zaz - Ututudu", new TimeSpan(0, 2, 32));

            set.AddSong(song);

            stage.AddSet(set);

            double instrumentWearBeforePerforming = instrument.Wear;

            setController.PerformSets();

            double instrumentWearAfterPerforming = instrument.Wear;

            Assert.That(instrumentWearAfterPerforming, Is.Not.EqualTo(instrumentWearBeforePerforming));
        }
예제 #6
0
    public void PerformSetsShouldWearDownInstrument()
    {
        // Arrange
        ISet set1 = new Short("Set1");

        this.stage.AddSet(set1);

        IPerformer  performer  = new Performer("Ivan", 20);
        IInstrument instrument = new Guitar();

        performer.AddInstrument(instrument);
        this.stage.AddPerformer(performer);
        set1.AddPerformer(performer);

        ISong song = new Song("Song1", new TimeSpan(0, 1, 2));

        set1.AddSong(song);

        // Act
        string result = this.setController.PerformSets();

        // Assert
        double actualWear = instrument.Wear;

        Assert.That(actualWear, Is.EqualTo(40));
    }
예제 #7
0
        public void InstrumentsToRepair()
        {
            Stage stage = new Stage();

            ISetController setController = new SetController(stage);
            Performer      performer     = new Performer("Ivan", 24);

            performer.AddInstrument(new Drums());
            stage.AddPerformer(performer);
            Song song = new Song("pesen", new TimeSpan(0, 3, 0));
            Set  set  = new Medium("Set1");

            set.AddPerformer(performer);
            set.AddSong(song);
            stage.AddSet(set);

            int expectedInstrumets = 1;

            setController.PerformSets();

            var instrumentsToRepair = stage.Performers
                                      .SelectMany(p => p.Instruments)
                                      .Where(i => i.Wear <= 100)
                                      .ToArray();

            Assert.That(instrumentsToRepair.Length, Is.EqualTo(expectedInstrumets));
        }
        public void SetControllerShouldWearDownInstruments()
        {
            Performer   performer  = new Performer("Ivo", 26);
            IInstrument instrument = new Guitar();

            performer.AddInstrument(instrument);

            ISet set = new Short("ShortSet");

            set.AddPerformer(performer);
            ISong song = new Song("Chico loco", new TimeSpan(0, 2, 30));

            set.AddSong(song);

            var stage = new Stage();

            stage.AddPerformer(performer);
            stage.AddSong(song);
            stage.AddSet(set);

            var setController = new SetController(stage);

            var instrumentWearBefore = instrument.Wear;

            setController.PerformSets();

            var instrumentWearAfter = instrument.Wear;

            Assert.AreNotEqual(instrumentWearAfter, instrumentWearBefore);
        }
예제 #9
0
        public void TestMessageWhenSetIsSuccessful()
        {
            IInstrument instrument = new Guitar();
            IPerformer  performer  = new Performer("Ivan", 20);

            performer.AddInstrument(instrument);

            ISong song = new Song("Song1", new TimeSpan(0, 1, 2));

            this.stage.AddSong(song);

            ISet set = new Short("Set1");

            set.AddPerformer(performer);
            set.AddSong(song);

            this.stage.AddSet(set);

            string actual = this.setController.PerformSets().Trim();

            string expected =
                "1. Set1:" + Environment.NewLine + "-- 1. Song1 (01:02)" + Environment.NewLine + "-- Set Successful";

            Assert.That(actual, Is.EqualTo(expected));
        }
예제 #10
0
        public void TestControllerDidNotPerformSetWithBrokenInstruments()
        {
            var set1       = new Short("set1");
            var performer  = new Performer("Danny", 38);
            var instrument = new Microphone();

            performer.AddInstrument(instrument);
            var song = new Song("name", new TimeSpan(0, 0, 5, 0));

            var stage = new Stage();

            set1.AddPerformer(performer);
            set1.AddSong(song);
            stage.AddSet(set1);
            stage.AddPerformer(performer);
            stage.AddSong(song);

            var controller = new SetController(stage);

            controller.PerformSets();
            controller.PerformSets();
            var stringOutput = controller.PerformSets();
            var expected     = "1. set1:" + Environment.NewLine + "-- Did not perform";

            Assert.AreEqual(expected, stringOutput);
        }
예제 #11
0
        public string SignUpPerformer(string[] args)
        {
            string performerName = args[0];
            int    performerAge  = int.Parse(args[1]);

            string[]            instumentNames = args.Skip(2).ToArray();
            IList <IInstrument> instruments    = new List <IInstrument>();

            if (instumentNames.Length > 0)
            {
                foreach (var instumentName in instumentNames)
                {
                    IInstrument instrument = this.instrumentFactory.CreateInstrument(instumentName);
                    instruments.Add(instrument);
                }
            }

            IPerformer performer = new Performer(performerName, performerAge);

            foreach (var instr in instruments)
            {
                performer.AddInstrument(instr);
            }
            this.stage.AddPerformer(performer);
            return($"Registered performer {performerName}");
        }
예제 #12
0
        public void TestCanPerformReturnsTrue()
        {
            IStage stage = new Stage();
            ISet   set   = new Short("Shorty");

            stage.AddSet(set);

            IPerformer perf = new Performer("HrupHrupAzSumTup", 22);

            perf.AddInstrument(new Guitar());

            stage.AddPerformer(perf);

            ISong song = new Song("hrup", new System.TimeSpan(0, 5, 0));

            stage.AddSong(song);

            set.AddSong(song);

            set.AddPerformer(perf);

            ISetController setController = new SetController(stage);

            setController.PerformSets();

            Assert.That(() => stage.Sets.First().CanPerform(), Is.EqualTo(true));
        }
예제 #13
0
        public void TestPerformanceSuccessful()
        {
            IStage stage = new Stage();
            ISet   set   = new Short("Shorty");

            stage.AddSet(set);

            IPerformer perf = new Performer("HrupHrupAzSumTup", 22);

            perf.AddInstrument(new Guitar());

            stage.AddPerformer(perf);

            ISong song = new Song("hrup", new System.TimeSpan(0, 5, 0));

            stage.AddSong(song);

            set.AddSong(song);

            set.AddPerformer(perf);

            ISetController setController = new SetController(stage);

            setController.PerformSets();

            Assert.That(() => setController.PerformSets(), Is.EqualTo("1. Shorty:\r\n" +
                                                                      "-- 1. hrup (05:00)\r\n" +
                                                                      "-- Set Successful"));
        }
예제 #14
0
        public void TestInstrumentWearsDownAfterPerformance()
        {
            IStage stage = new Stage();
            ISet   set   = new Short("Shorty");

            stage.AddSet(set);

            IPerformer perf = new Performer("HrupHrupAzSumTup", 22);

            perf.AddInstrument(new Guitar());

            stage.AddPerformer(perf);

            ISong song = new Song("hrup", new System.TimeSpan(0, 5, 0));

            stage.AddSong(song);

            set.AddSong(song);

            set.AddPerformer(perf);

            ISetController setController = new SetController(stage);

            setController.PerformSets();

            Assert.That(perf.Instruments.First().Wear, Is.EqualTo(40));
        }
예제 #15
0
        public void TestWithBrokenInstrument()
        {
            //Arrange
            string expected = "-- Did not perform";

            IStage stage = new Stage();
            ISet   set   = new Long("testSet");

            IPerformer performer = new Performer("pencho", 3);

            performer.AddInstrument(new Microphone());

            ISong song = new Song("testSong", new System.TimeSpan(0, 1, 2));

            set.AddPerformer(performer);
            set.AddSong(song);

            stage.AddSet(set);
            this.controller = new SetController(stage);

            this.controller.PerformSets();
            this.controller.PerformSets();

            //Act
            string actual = this.controller.PerformSets();

            //Assert
            Assert.IsTrue(actual.Contains(expected));
        }
예제 #16
0
        public void Test()
        {
            //Arrange
            IStage stage = new Stage();
            ISet   set   = new Medium("testSet");

            IPerformer performer = new Performer("pencho", 3);

            performer.AddInstrument(new Guitar());

            ISong song = new Song("testSong", new System.TimeSpan(0, 0, 2));

            set.AddPerformer(performer);
            set.AddSong(song);

            stage.AddSet(set);
            this.controller = new SetController(stage);

            string expectedEnd      = "-- Set Successful";
            string expectedSongText = "-- 1. testSong (00:02)";

            //Act
            string actual = this.controller.PerformSets();

            //Assert
            Assert.IsTrue(actual.Contains(expectedEnd));
            Assert.IsTrue(actual.Contains(expectedSongText));
        }
        public void InstrumentsWearTest()
        {
            ISet set = new Short("Set1");

            this.stage.AddSet(set);
            ISong song = new Song("Song1", new System.TimeSpan(0, 5, 0));

            this.stage.AddSong(song);

            set.AddSong(song);

            IPerformer performer = new Performer("Gosho", 20);

            performer.AddInstrument(new Guitar());
            this.stage.AddPerformer(performer);

            set.AddPerformer(performer);

            this.setController.PerformSets();

            FieldInfo instrumentsInfo = typeof(Performer).GetFields(BindingFlags.NonPublic | BindingFlags.Instance)
                                        .First(f => f.FieldType == typeof(List <IInstrument>));

            List <IInstrument> instruments = ((List <IInstrument>)instrumentsInfo.GetValue(performer)).Take(1).ToList();
            IInstrument        instrument  = instruments[0];

            Assert.That(instrument.Wear, Is.EqualTo(40));
        }
        public void TestInstrumentsGetBroken()
        {
            IStage stage = new Stage();
            ISet   set   = new Short("Set1");

            TimeSpan duration = TimeSpan.FromSeconds((1 * 60) + 2);
            ISong    song     = new Song("Song1", duration);

            IPerformer performer = new Performer("Gosho", 20);

            IInstrument instrument = new Guitar();

            instrument.WearDown();
            instrument.WearDown();

            performer.AddInstrument(instrument);

            set.AddPerformer(performer);
            set.AddSong(song);

            stage.AddSong(song);

            stage.AddSet(set);
            stage.AddSong(song);
            stage.AddPerformer(performer);

            ISetController setController = new SetController(stage);

            string actual   = "1. Set1:\r\n-- Did not perform";
            string expected = setController.PerformSets();

            Assert.AreEqual(actual, expected);
        }
예제 #19
0
        public void PerformSets_WearDownTest()
        {
            IStage         stage      = new Stage();
            ISetController controller = new SetController(stage);

            ISet set = new Short("Set1");

            stage.AddSet(set);

            IPerformer  performer = new Performer("Sonny", 22);
            IInstrument guitar    = new Guitar();

            performer.AddInstrument(guitar);
            set.AddPerformer(performer);

            ISong song = new Song("Song", new TimeSpan(0, 3, 24));

            set.AddSong(song);

            var wearBeforeWearDown = guitar.Wear;

            controller.PerformSets();
            var afterWearDownWear = guitar.Wear;

            Assert.That(wearBeforeWearDown, Is.Not.EqualTo(afterWearDownWear));
        }
        public void TestWhetherTheControllerGivesCorrectOutput()
        {
            var set1 = new Short("set1");

            var performer  = new Performer("Bat nasko", 30);
            var instrument = new Guitar();

            performer.AddInstrument(instrument);
            var song = new Song("name", new TimeSpan(0, 0, 10, 0));

            var stage = new Stage();

            set1.AddPerformer(performer);
            set1.AddSong(song);
            stage.AddSet(set1);
            stage.AddPerformer(performer);
            stage.AddSong(song);

            var controller   = new SetController(stage);
            var stringOutput = controller.PerformSets();

            var expectedResult = "1. set1:\r\n-- 1. name (10:00)\r\n-- Set Successful";

            Assert.AreEqual(expectedResult, stringOutput);
        }
예제 #21
0
        public void TestRegisterSetWithSongs()
        {
            IPerformer performer = new Performer("Pesho", 20);

            IInstrument instrument = new AKG();

            performer.AddInstrument(instrument);

            TimeSpan span = new TimeSpan(0, 0, 5, 5, 0);

            ISong song = new Song("AAA", span);

            ISet shortSet = new Short("shortSet");

            shortSet.AddSong(song);
            shortSet.AddPerformer(performer);


            IStage testStage = new Stage();

            testStage.AddSet(shortSet);

            SetController testController = new SetController(testStage);

            string result = testController.PerformSets();

            Assert.That(result, Is.EqualTo("1. shortSet:\r\n-- 1. AAA (05:05)\r\n-- Set Successful"));
        }
        public void TestWhetherTheControllerFailsToPerform()
        {
            var set1 = new Short("set1");

            var performer  = new Performer("Woah", 39);
            var instrument = new Microphone();

            performer.AddInstrument(instrument);
            var song = new Song("WoahButSong", new TimeSpan(0, 0, 5, 0));

            var stage = new Stage();

            set1.AddPerformer(performer);
            set1.AddSong(song);
            stage.AddSet(set1);
            stage.AddPerformer(performer);
            stage.AddSong(song);

            var controller = new SetController(stage);

            controller.PerformSets();
            controller.PerformSets();
            var stringOutput = controller.PerformSets();

            var expectedResult = "1. set1:\r\n-- Did not perform";

            Assert.AreEqual(expectedResult, stringOutput);
        }
        public void SetControllerShouldReturnSuccessMessage()
        {
            var stage = new Stage();

            var performer = new Performer("Ivo", 26);

            IInstrument instrument = new Guitar();

            performer.AddInstrument(instrument);

            stage.AddPerformer(performer); //

            ISong song = new Song("Chico loco", new TimeSpan(0, 2, 30));

            stage.AddSong(song); //

            ISet set = new Short("ShortSet");

            stage.AddSet(set);

            var setController = new SetController(stage);

            var actualResult   = setController.PerformSets();
            var expectedResult = "1. ShortSet:\r\n-- Did not perform";

            Assert.AreEqual(expectedResult, actualResult);
        }
        public void PerformSetsShouldWearDownInstrument()
        {
            Stage         stage         = new Stage();
            SetController setController = new SetController(stage);
            Set           set           = new Short("WestSet");
            IPerformer    performer     = new Performer("Name", 18);
            Song          song          = new Song("SongName", new TimeSpan(0, 2, 30));
            Instrument    instrument    = new Microphone();

            performer.AddInstrument(instrument);
            set.AddSong(song);
            set.AddPerformer(performer);
            stage.AddSet(set);
            stage.AddPerformer(performer);

            setController.PerformSets();

            var currPerformer = stage.GetPerformer("Name");
            var instruments   = currPerformer.Instruments;

            var actual   = instruments.First().Wear;
            var expected = 20;

            Assert.AreEqual(expected, actual);
        }
        public void PerfrormSets_ShouldDecrease_InstrumentWear()
        {
            //Arrange
            IStage         stage         = new Stage();
            ISetController setController = new SetController(stage);

            ISet        set        = new Short("Set1");
            IPerformer  performer  = new Performer("Gaga", 29);
            ISong       song       = new Song("Song", new TimeSpan(0, 2, 30));
            IInstrument instrument = new Guitar();

            //Act
            performer.AddInstrument(instrument);
            set.AddPerformer(performer);
            set.AddSong(song);
            stage.AddSet(set);

            double instrumentWearBefore = instrument.Wear;

            setController.PerformSets();
            double instrumentWearAfter = instrument.Wear;

            //Assert
            Assert.That(instrumentWearAfter, Is.Not.EqualTo(instrumentWearBefore));
        }
        public void PerformSets_CanPerform_InstrumentWearsDown()
        {
            IStage stage = new Stage();

            ISet set = new Long("short");

            set.AddSong(new Song("s2", new TimeSpan(0, 1, 0)));

            IPerformer performer = new Performer("pesho", 100);

            IInstrument instrument = new Drums();

            performer.AddInstrument(instrument);

            set.AddPerformer(performer);

            stage.AddSet(set);

            ISetController setController = new SetController(stage);

            setController.PerformSets();

            double actualResult   = instrument.Wear;
            double expectedResult = 80;

            Assert.That(actualResult, Is.EqualTo(expectedResult));
        }
        public void PerforSetsTest()
        {
            IStage         stage         = new Stage();
            ISetController setController = new SetController(stage);
            ISet           set           = new Short("Set1");
            ISet           set2          = new Short("Set2");

            stage.AddSet(set);
            stage.AddSet(set2);
            IPerformer  performer = new Performer("Pesho", 23);
            IInstrument guitar    = new Guitar();

            stage.AddPerformer(performer);
            set.AddPerformer(performer);
            performer.AddInstrument(guitar);
            ISong song = new Song("Song1", new System.TimeSpan(0, 5, 0));

            stage.AddSong(song);
            set.AddSong(song);

            string expectedResult = "1. Set1:" + "\r\n" +
                                    "-- 1. Song1 (05:00)" + "\r\n" +
                                    "-- Set Successful" + "\r\n" +
                                    "2. Set2:" + "\r\n" +
                                    "-- Did not perform";


            string actualResult = setController.PerformSets();

            Assert.That(actualResult, Is.EqualTo(expectedResult).NoClip);
            Assert.That(guitar.Wear, Is.EqualTo(40));
        }
        public void WearDownWorks()
        {
            ISet  set  = new Short("izpulnenie");
            ISong song = new Song("despacito", new TimeSpan(0, 02, 01));

            set.AddSong(song);

            IPerformer  performer  = new Performer("ivan", 15);
            IInstrument instrument = new Drums();

            performer.AddInstrument(instrument);

            set.AddPerformer(performer);
            IStage stage = new Stage();

            stage.AddSet(set);

            ISetController setController = new SetController(stage);

            var expected = 80;

            setController.PerformSets();

            var actual = instrument.Wear;

            Assert.AreEqual(expected, actual);
        }
예제 #29
0
        public void WearShouldBeDifferent()
        {
            IStage         stage         = new Stage();
            ISetController setController = new SetController(stage);

            IPerformer performer = new Performer("Niki", 18);

            performer.AddInstrument(new Guitar());

            double instrumentWearBefore = performer.Instruments.First().Wear;
            ISet   set = new Short("short1");

            set.AddSong(new Song("Pesna", new TimeSpan(0, 1, 10)));
            set.AddPerformer(performer);
            stage.AddSet(set);

            setController.PerformSets();

            FieldInfo listField = typeof(Performer).GetFields(BindingFlags.NonPublic | BindingFlags.Instance)
                                  .FirstOrDefault(p => p.Name == "instruments");

            List <IInstrument> insturments         = (List <IInstrument>)listField.GetValue(performer);
            double             instrumentWearAfter = insturments[0].Wear;

            Assert.That(instrumentWearAfter, Is.Not.EqualTo(instrumentWearBefore));
        }
예제 #30
0
        public void OneSuccesfulSetAndOneFailed()
        {
            string expected = "1. mediumSet:" + Environment.NewLine + "-- 1. Song1 (05:00)" + Environment.NewLine + "-- Set Successful" + Environment.NewLine +
                              "2. shortSet:" + Environment.NewLine + "-- Did not perform";

            IStage stage = new Stage();

            string firstSetName = "shortSet";
            ISet   set1         = new Short(firstSetName);

            stage.AddSet(set1);

            string songName = "Song1";
            var    duration = new TimeSpan(0, 5, 0);
            ISong  song     = new Song(songName, duration);

            string performerName = "Pesho";
            int    age           = 20;
            var    performer     = new Performer(performerName, age);
            var    guitar        = new Guitar();

            performer.AddInstrument(guitar);

            string secondSetName = "mediumSet";
            ISet   set2          = new Medium(secondSetName);

            set2.AddPerformer(performer);
            set2.AddSong(song);
            stage.AddSet(set2);

            var    setController = new SetController(stage);
            string result        = setController.PerformSets();

            Assert.That(result, Is.EqualTo(expected));
        }