Exemplo n.º 1
0
        public void CanSelectExistingAndNewGenres(params string[] genres)
        {
            var dummyGames    = GetListOfDummyGames();
            var selectedGames = dummyGames.Take(4).ToArray();

            _launchboxDataManagerMock.GetAllGames()
            .Returns(dummyGames);

            // Creating a temporary thread to run the form.
            // Implementation based on: https://ourcodeworld.com/articles/read/890/how-to-solve-csharp-exception-current-thread-must-be-set-to-single-thread-apartment-sta-mode-before-ole-calls-can-be-made-ensure-that-your-main-function-has-stathreadattribute-marked-on-it
            Thread t = new Thread((ThreadStart)(() => {
                var sutForm = new FormGenreEditor(_launchboxDataManagerMock, selectedGames);
                foreach (var genre in genres)
                {
                    sutForm.SelectGenres(genre);
                }
                sutForm.AddSelectedGenres();
            }));

            // Run your code from a thread that joins the STA Thread
            t.SetApartmentState(ApartmentState.STA);
            t.Start();
            t.Join();

            // Check that all our selected games now have all the genres we've selected
            foreach (var game in selectedGames)
            {
                var gameGenres = game.GenresString.Split(';');
                Assert.Equal(genres.Length, gameGenres.Intersect(genres).Count());
            }

            // Now check that these genres were not also applied to the other games.
            var otherGames = dummyGames.Except(selectedGames);

            foreach (var game in otherGames)
            {
                var gameGenres = game.GenresString.Split(';');
                Assert.NotEqual(genres.Length, gameGenres.Intersect(genres).Count());
            }
        }
Exemplo n.º 2
0
        public void CanRemoveGenres(params string[] genres)
        {
            var dummyGames    = GetListOfDummyGames();
            var selectedGames = dummyGames.Take(2).ToArray();

            _launchboxDataManagerMock.GetAllGames()
            .Returns(dummyGames);

            // Creating a temporary thread to run the form.
            Thread t = new Thread((ThreadStart)(() => {
                var sutForm = new FormGenreEditor(_launchboxDataManagerMock, selectedGames);
                foreach (var genre in genres)
                {
                    sutForm.SelectGenres(genre);
                }
                sutForm.RemoveSelectedGenres();
            }));

            // Run your code from a thread that joins the STA Thread
            t.SetApartmentState(ApartmentState.STA);
            t.Start();
            t.Join();

            // Check that none of our selected games have the genres that we've removed
            foreach (var game in selectedGames)
            {
                var gameGenres = game.GenresString.Split(';');
                Assert.Empty(gameGenres.Intersect(genres));
            }

            // Now check that these genres were not also applied to the other 2 games for which we have known values.
            var otherGames = dummyGames.Except(selectedGames);

            foreach (var game in selectedGames.Skip(2).Take(2))
            {
                var gameGenres = game.GenresString.Split(';');
                Assert.NotEmpty(gameGenres.Intersect(genres));
            }
        }