Example #1
0
        public void Add_OneElement_SendAddNotification()
        {
            // Arrange
            var limitation = new CountLimitationVM {
                Model = new CountLicenseLimitation {
                    Enabled = false, Maximum = 1
                }
            };

            col.Limitation = limitation;
            col.Model.AddRange(players);
            col.ViewModels.CollectionChanged += HandleCollectionChanged;
            var vmToAdd = new DummyPlayerVM {
                Model = new Utils.PlayerDummy()
            };

            // Act
            col.ViewModels.Add(vmToAdd);

            col.ViewModels.CollectionChanged -= HandleCollectionChanged;

            // Assert
            Assert.AreEqual(1, actionsNotified.Count());
            Assert.AreEqual(NotifyCollectionChangedAction.Add, actionsNotified [0]);
        }
Example #2
0
        public async Task ShowState_Limitation_LimitedLoadedProjects()
        {
            licenseLimitationMock.Reset();

            CountLimitationVM countLimitation = new CountLimitationVM {
                Model = limitedLimitation,
            };

            licenseLimitationMock.Setup(ls => ls.CreateBarChartVM(It.IsAny <string> (), -1, null)).Returns(
                new CountLimitationBarChartVM {
                Limitation = countLimitation,
                BarChart   = new TwoBarChartVM(new SeriesVM(), new SeriesVM(), 4)
            }
                );

            storageMock.Setup(s => s.RetrieveAll <LMProject> ()).Returns(projectList);
            var sortedProjectList = new RangeObservableCollection <LMProject> {
                futureProject,
                nowProject,
                pastProject,
            };
            await state.LoadState(null);

            await state.ShowState();

            CollectionAssert.AreNotEqual(sortedProjectList, state.ViewModel.ViewModels.Select(p => p.Model));
            Assert.AreNotEqual(limitedLimitation.Maximum, state.ViewModel.Model.Count());
            Assert.AreEqual(limitedLimitation.Maximum, state.ViewModel.ViewModels.Count());
        }
Example #3
0
        void CreateViewModels(int max, int count, bool enabled, int showOnRemaining = -1)
        {
            countLimitationVM = new CountLimitationVM {
                Model = new CountLicenseLimitation {
                    Maximum      = max,
                    Count        = count,
                    Enabled      = enabled,
                    DisplayName  = "testLimitation",
                    RegisterName = "test"
                }
            };

            twoBarChartVM = new TwoBarChartVM(new SeriesVM {
                Title = "Remaining", Elements = countLimitationVM.Remaining,
                Color = Color.Green1
            },
                                              new SeriesVM {
                Title = "Current", Elements = countLimitationVM.Count,
                Color = Color.Transparent
            }, countLimitationVM.Maximum);

            viewModel = new CountLimitationBarChartVM(showOnRemaining)
            {
                Limitation = countLimitationVM,
                BarChart   = twoBarChartVM
            };
        }
Example #4
0
        public void LimitationService_GetNonExistingCountLimitation_ReturnsNull()
        {
            CountLimitationVM          limit          = service.Get <CountLimitationVM> ("Non-existing limitation");
            IEnumerable <LimitationVM> allLimitations = service.GetAll();

            Assert.AreEqual(0, allLimitations.Count());
            Assert.IsNull(limit);
        }
Example #5
0
        /// <summary>
        /// Fills the menu item "Add to playlist" with all the playlist options
        /// </summary>
        /// <param name="addToPlaylistMenu">Add to playlist menu.</param>
        /// <param name = "playlistList">List of playlists to show in the menu</param>
        /// <param name="events">Timeline events.</param>
        //FIXME: Convert this to ViewModels (both Playlist & TimelineEvent)
        static public void FillAddToPlaylistMenu(MenuItem addToPlaylistMenu, IEnumerable <PlaylistVM> playlistList,
                                                 IEnumerable <IPlayable> events)
        {
            if (!events.Any())
            {
                addToPlaylistMenu.Visible = false;
                return;
            }

            addToPlaylistMenu.Visible = true;
            var label = String.Format("{0} ({1})", Catalog.GetString("Add to playlist"), events.Count());

            addToPlaylistMenu.SetLabel(label);

            Menu     plMenu = new Menu();
            MenuItem item;

            foreach (PlaylistVM pl in playlistList)
            {
                item = new MenuItem(pl.Name);
                plMenu.Append(item);
                item.Activated += (sender, e) => {
                    item.PublishEvent(
                        new AddPlaylistElementEvent {
                        Playlist         = pl,
                        PlaylistElements = events.ToList()
                    }
                        );
                };
            }
            item = new MenuItem(Catalog.GetString("Create new playlist..."));

            // FIXME: Longomatch has not implemented the limitation service, remove the null check when it is done
            if (App.Current.LicenseLimitationsService != null)
            {
                //FIXME: Longomatch can have playlist at project level and application level, this should be reworked when count limitation
                //applies to project (playlist) and application level (presentations)
                CountLimitationVM limitation = App.Current.LicenseLimitationsService.Get <CountLimitationVM> ("Presentations");
                if (limitation != null)
                {
                    item.Sensitive = limitation.Count < limitation.Maximum;
                }
            }

            plMenu.Append(item);
            item.Activated += (sender, e) => {
                item.PublishEvent(
                    new AddPlaylistElementEvent {
                    Playlist         = null,
                    PlaylistElements = events.ToList()
                }
                    );
            };
            plMenu.ShowAll();
            addToPlaylistMenu.Submenu = plMenu;
        }
Example #6
0
        public void Timeline_SetLimitation_SetsInFullTimeline()
        {
            TimelineVM viewModel = new TimelineVM();

            viewModel.Model = new RangeObservableCollection <TimelineEvent> ();
            var countLimitation      = new CountLimitationVM();
            var countLimitationChart = new CountLimitationBarChartVM {
                Limitation = countLimitation
            };

            viewModel.LimitationChart = countLimitationChart;

            Assert.AreSame(countLimitation, viewModel.FullTimeline.Limitation);
        }
Example #7
0
        public void OneWayPropertyBinding_ChangedSource_BindedWithLast()
        {
            // Arrange
            CountLimitationVM source = new CountLimitationVM {
                Model = new CountLicenseLimitation {
                    DisplayName  = "source",
                    RegisterName = "source",
                    Count        = 1,
                    Maximum      = 5,
                    Enabled      = true
                }
            };
            CountLimitationVM source2 = new CountLimitationVM {
                Model = new CountLicenseLimitation {
                    DisplayName  = "source2",
                    RegisterName = "source2",
                    Count        = 2,
                    Maximum      = 10,
                    Enabled      = true
                }
            };
            CountLimitationVM destination = new CountLimitationVM {
                Model = new CountLicenseLimitation {
                    DisplayName  = "destination",
                    RegisterName = "destination",
                    Count        = 0,
                    Maximum      = 0,
                    Enabled      = false
                }
            };

            var binding = new OneWayPropertyBinding <int, int> (destination,
                                                                (vm) => ((CountLimitationVM)vm).Count,
                                                                (vm) => ((CountLimitationVM)vm).Count);

            // Act
            binding.ViewModel = source;
            binding.ViewModel = source2;
            source.Count      = 777;
            source2.Count     = 999;

            // Assert
            Assert.AreEqual("destination", destination.DisplayName);
            Assert.AreEqual("source", source.DisplayName);
            Assert.AreEqual("source2", source2.DisplayName);
            Assert.AreEqual(source2, binding.ViewModel);
            Assert.AreEqual(source2.Count, destination.Count);
            Assert.AreNotEqual(source.Count, source2.Count);
        }
Example #8
0
        public void LimitationService_AddCountLimitations()
        {
            service.Add(limitationPlayers);
            service.Add(limitationTeams);

            CountLimitationVM          testLimitationPlayers = service.Get <CountLimitationVM> ("RAPlayers");
            CountLimitationVM          testLimitationTeams   = service.Get <CountLimitationVM> ("Teams");
            IEnumerable <LimitationVM> allLimitations        = service.GetAll();

            Assert.AreEqual(2, allLimitations.Count());
            Assert.IsTrue(testLimitationPlayers.Enabled);
            Assert.AreEqual(10, testLimitationPlayers.Maximum);
            Assert.IsTrue(testLimitationTeams.Enabled);
            Assert.AreEqual(5, testLimitationTeams.Maximum);
        }
Example #9
0
        public void FixtureSetUp()
        {
            WibuInit.InitDependencies();

            DashboardDummy dashboard = new DashboardDummy {
                Name = "Dashboard 1"
            };

            mockGuiToolkit = new Mock <IGUIToolkit> ();
            mockDialogs    = new Mock <IDialogs> ();
            mockProvider   = new Mock <ICategoriesTemplatesProvider> ();

            mockGuiToolkit.SetupGet(x => x.DeviceScaleFactor).Returns(1.0f);
            mockGuiToolkit.Setup(x => x.CreateNewTemplate <Dashboard> (It.IsAny <IList <Dashboard> > (),
                                                                       It.IsAny <string> (),
                                                                       It.IsAny <string> (),
                                                                       It.IsAny <string> (),
                                                                       It.IsAny <CreateEvent <Dashboard> > ()
                                                                       )).ReturnsAsync(true);
            mockDialogs.Setup(x => x.OpenFile(It.IsAny <string> (), It.IsAny <string> (), It.IsAny <string> (),
                                              It.IsAny <string> (), It.IsAny <string []> ())).Returns("Dashboard.lct");
            mockDialogs.Setup(x => x.QuestionMessage(It.IsAny <string> (), It.IsAny <string> (), It.IsAny <object> ()))
            .ReturnsAsync(true);
            mockDialogs.Setup(m => m.QueryMessage(It.IsAny <string> (), null, It.IsAny <string> (),
                                                  It.IsAny <object> ())).Returns(AsyncHelpers.Return("dashboard_copy"));
            mockProvider.Setup(x => x.LoadFile(It.IsAny <string> ())).Returns(dashboard);
            mockProvider.Setup(x => x.Templates).Returns(new List <Dashboard> {
                dashboard
            });

            mockLimitationService = new Mock <ILicenseLimitationsService> ();
            countLimitationVM     = new CountLimitationVM()
            {
                Model = new CountLicenseLimitation {
                    RegisterName = LongoMatchCountLimitedObjects.Team.ToString(),
                    Enabled      = true,
                    Maximum      = 2
                }
            };
            mockLimitationService.Setup(x => x.Get <CountLimitationVM> (It.IsAny <string> ())).Returns(countLimitationVM);
            App.Current.LicenseLimitationsService = mockLimitationService.Object;

            App.Current.GUIToolkit = mockGuiToolkit.Object;
            App.Current.Dialogs    = mockDialogs.Object;
            App.Current.CategoriesTemplatesProvider = mockProvider.Object;

            controller = new DashboardsController();
        }
Example #10
0
        /// <summary>
        /// Add the specified limitation by name.
        /// </summary>
        /// <param name="limitation">Limitation.</param>
        public void Add(CountLicenseLimitation limitation, Command command = null)
        {
            if (Limitations.ContainsKey(limitation.RegisterName))
            {
                throw new InvalidOperationException("Limitations cannot be overwritten");
            }
            CountLimitationVM viewModel = new CountLimitationVM {
                Model = limitation,
            };

            if (command != null)
            {
                viewModel.UpgradeCommand = command;
            }
            Limitations [limitation.RegisterName] = viewModel;
        }
Example #11
0
        public void LimitationService_GetDisabledLimitation()
        {
            service.Add(new CountLicenseLimitation {
                Enabled      = false,
                Maximum      = 10,
                Count        = 8,
                RegisterName = "Disabled"
            });

            CountLimitationVM limitation = service.Get <CountLimitationVM> ("Disabled");
            IEnumerable <CountLimitationVM> allLimitations = service.GetAll <CountLimitationVM> ();

            Assert.AreEqual(1, allLimitations.Count());
            Assert.IsFalse(limitation.Enabled);
            Assert.AreEqual(int.MaxValue, limitation.Maximum);
            Assert.AreEqual(8, limitation.Count);
        }
        public void FixtureSetUp()
        {
            WibuInit.InitDependencies();

            DummyTeam team = new DummyTeam {
                Name = "Team 1"
            };

            mockGuiToolkit = new Mock <IGUIToolkit> ();
            mockDialogs    = new Mock <IDialogs> ();
            mockProvider   = new Mock <ITeamTemplatesProvider> ();

            mockGuiToolkit.Setup(x => x.CreateNewTemplate <Team> (It.IsAny <IList <Team> > (),
                                                                  It.IsAny <string> (),
                                                                  It.IsAny <string> (),
                                                                  It.IsAny <string> (),
                                                                  It.IsAny <CreateEvent <Team> > ()
                                                                  )).ReturnsAsync(true);
            mockDialogs.Setup(x => x.OpenFile(It.IsAny <string> (), It.IsAny <string> (), It.IsAny <string> (),
                                              It.IsAny <string> (), It.IsAny <string []> ())).Returns("Team.ltt");
            mockDialogs.Setup(m => m.QueryMessage(It.IsAny <string> (), null, It.IsAny <string> (),
                                                  It.IsAny <object> ())).Returns(AsyncHelpers.Return("team_copy"));
            mockDialogs.Setup(x => x.QuestionMessage(It.IsAny <string> (), It.IsAny <string> (), It.IsAny <object> ()))
            .ReturnsAsync(true);
            mockProvider.Setup(x => x.LoadFile(It.IsAny <string> ())).Returns(team);
            mockProvider.Setup(x => x.Templates).Returns(new List <Team> ());

            App.Current.GUIToolkit            = mockGuiToolkit.Object;
            App.Current.Dialogs               = mockDialogs.Object;
            App.Current.TeamTemplatesProvider = mockProvider.Object;

            mockLimitationService = new Mock <ILicenseLimitationsService> ();
            countLimitationVM     = new CountLimitationVM()
            {
                Model = new CountLicenseLimitation {
                    RegisterName = LongoMatchCountLimitedObjects.Team.ToString(),
                    Enabled      = true,
                    Maximum      = 2
                }
            };
            mockLimitationService.Setup(x => x.Get <CountLimitationVM> (It.IsAny <string> ())).Returns(countLimitationVM);
            App.Current.LicenseLimitationsService = mockLimitationService.Object;

            controller = new TeamsController();
        }
Example #13
0
        public async Task LoadState_NoLimited_ListAllDashboardsAndTeams()
        {
            CountLimitationVM countLimitation = new CountLimitationVM {
                Model = new CountLicenseLimitation {
                    Enabled = false,
                    Maximum = 3
                }
            };

            mockLimitationService.Setup(ls => ls.CreateBarChartVM(It.IsAny <string> (), -1, null)).Returns(
                new CountLimitationBarChartVM {
                Limitation = countLimitation
            }
                );

            await state.LoadState(null);

            Assert.AreEqual(teams.Count, state.ViewModel.Teams.ViewModels.Count);
            Assert.AreEqual(dashboards.Count, state.ViewModel.Dashboards.ViewModels.Count);
        }
Example #14
0
        public void OneWayPropertyBinding_RemovedSourceAfterTrigger_Unbinded()
        {
            // Arrange
            CountLimitationVM source = new CountLimitationVM {
                Model = new CountLicenseLimitation {
                    DisplayName  = "source",
                    RegisterName = "source",
                    Count        = 1,
                    Maximum      = 5,
                    Enabled      = true
                }
            };
            CountLimitationVM destination = new CountLimitationVM {
                Model = new CountLicenseLimitation {
                    DisplayName  = "destination",
                    RegisterName = "destination",
                    Count        = 0,
                    Maximum      = 0,
                    Enabled      = false
                }
            };

            var binding = new OneWayPropertyBinding <int, int> (destination,
                                                                (vm) => ((CountLimitationVM)vm).Count,
                                                                (vm) => ((CountLimitationVM)vm).Count);

            // Act
            binding.ViewModel = source;
            source.Count      = 999;
            binding.ViewModel = null;
            source.Count      = 777;

            // Assert
            Assert.AreEqual("destination", destination.DisplayName);
            Assert.AreEqual("source", source.DisplayName);
            Assert.AreEqual(null, binding.ViewModel);
            Assert.AreNotEqual(source.Count, destination.Count);
            Assert.AreEqual(999, destination.Count);
        }
Example #15
0
        public void EnableLimitation_ViewModelsLimited_SendOneResetNotification()
        {
            // Arrange
            var limitation = new CountLimitationVM {
                Model = new CountLicenseLimitation {
                    Enabled = false, Maximum = 1
                }
            };

            col.Limitation = limitation;
            col.Model.AddRange(players);
            col.ViewModels.CollectionChanged += HandleCollectionChanged;

            // Act
            limitation.Model.Enabled = true;

            col.ViewModels.CollectionChanged -= HandleCollectionChanged;

            // Assert
            Assert.AreEqual(1, actionsNotified.Count());
            Assert.AreEqual(NotifyCollectionChangedAction.Reset, actionsNotified [0]);
        }
Example #16
0
        public void Delete_OneElement_SendRemoveNotification()
        {
            // Arrange
            var limitation = new CountLimitationVM {
                Model = new CountLicenseLimitation {
                    Enabled = false, Maximum = 1
                }
            };

            col.Limitation = limitation;
            col.Model.AddRange(players);
            col.ViewModels.CollectionChanged += HandleCollectionChanged;

            // Act
            col.ViewModels.RemoveAt(0);

            col.ViewModels.CollectionChanged -= HandleCollectionChanged;

            // Assert
            Assert.AreEqual(1, actionsNotified.Count());
            Assert.AreEqual(NotifyCollectionChangedAction.Remove, actionsNotified [0]);
        }
Example #17
0
        public void OneWayPropertyBinding_SetSource_DestinationUpdated()
        {
            // Arrange
            CountLimitationVM source = new CountLimitationVM {
                Model = new CountLicenseLimitation {
                    DisplayName  = "source",
                    RegisterName = "source",
                    Count        = 1,
                    Maximum      = 5,
                    Enabled      = true
                }
            };
            CountLimitationVM destination = new CountLimitationVM {
                Model = new CountLicenseLimitation {
                    DisplayName  = "destination",
                    RegisterName = "destination",
                    Count        = 0,
                    Maximum      = 0,
                    Enabled      = false
                }
            };

            var binding = new OneWayPropertyBinding <int, int> (destination,
                                                                (vm) => ((CountLimitationVM)vm).Count,
                                                                (vm) => ((CountLimitationVM)vm).Count);

            // Act
            binding.ViewModel = source;

            // Assert
            Assert.AreEqual("destination", destination.DisplayName);
            Assert.AreEqual("source", source.DisplayName);
            Assert.AreEqual(source, binding.ViewModel);
            Assert.AreEqual(source.Count, destination.Count);
            Assert.AreEqual(1, destination.Count);
        }