public void AddNewPiece_EmptyPointAtPosition_ReturnsNewPieceAndIsNotNull() { // Arrange var stubPoints = TestHelper.CreatePointsWithBounds(5); var stubBoardService = Substitute.For <IBoardService>(); stubBoardService.CreateInitialBoard() .Returns(new Tuple <List <PointModel>, List <List <PointModel> > >(stubPoints, null)); var stubBoardModel = Substitute.For <BoardModel>(stubBoardService); var stubEventSubscriber = new MockEventSubscriber(); stubBoardModel.NewPieceAdded += stubEventSubscriber.Handle; var stubPlayer = Substitute.For <PlayerModel>(1, Colors.Yellow); var boardController = new BoardController(stubBoardModel); // Act boardController.AddNewPiece(stubPoints[0], stubPlayer); // Assert Assert.IsNotNull(stubPoints[0].Piece); }
public void ChangeSelection_PieceSelected_OldPieceIsNotSelected() { // Arrange var stubPoints = TestHelper.CreatePointsWithBounds(5); var stubBoardService = Substitute.For <IBoardService>(); stubBoardService.CreateInitialBoard() .Returns(new Tuple <List <PointModel>, List <List <PointModel> > >(stubPoints, null)); var mockBoardModel = Substitute.For <BoardModel>(stubBoardService); var stubEventSubscriber = new MockEventSubscriber(); mockBoardModel.NewPieceAdded += stubEventSubscriber.Handle; mockBoardModel.SelectionChanged += stubEventSubscriber.Handle; var stubPlayer = Substitute.For <PlayerModel>(1, Colors.Yellow); var boardController = new BoardController(mockBoardModel); boardController.AddNewPiece(stubPoints[2], stubPlayer); boardController.AddNewPiece(stubPoints[4], stubPlayer); // Act boardController.ChangeSelection(stubPoints[4], stubPlayer, true); // Assert var oldPoint = mockBoardModel.Points.Where(p => p.Bounds.Contains(stubPoints[2].Bounds)).First(); Assert.IsFalse(oldPoint.Piece.IsSelected); }
public void AddNewPiece_InvalidPosition_NoPieceIsAdded( int pieceCount, int newPointModelIndex, int stubPointModelIndex) { // Arrange var stubPoints = TestHelper.CreatePointsWithBounds(pieceCount); var stubBoardService = Substitute.For <IBoardService>(); stubBoardService.CreateInitialBoard() .Returns(new Tuple <List <PointModel>, List <List <PointModel> > >(stubPoints, null)); var mockBoardModel = Substitute.For <BoardModel>(stubBoardService); var stubEventSubscriber = new MockEventSubscriber(); mockBoardModel.NewPieceAdded += stubEventSubscriber.Handle; var stubPlayer = Substitute.For <PlayerModel>(1, Colors.Yellow); var boardController = new BoardController(mockBoardModel); boardController.AddNewPiece(stubPoints[stubPointModelIndex], stubPlayer); // Act boardController.AddNewPiece(stubPoints[newPointModelIndex], stubPlayer); // Assert Assert.AreEqual(1, mockBoardModel.Points.Count(p => p.Piece != null)); }
public void ChangeSelection_ValidPoint_PieceIsSelected() { // Arrange var stubPoints = TestHelper.CreatePointsWithBounds(5); var stubBoardService = Substitute.For <IBoardService>(); stubBoardService.CreateInitialBoard() .Returns(new Tuple <List <PointModel>, List <List <PointModel> > >(stubPoints, null)); var mockBoardModel = Substitute.For <BoardModel>(stubBoardService); var stubEventSubscriber = new MockEventSubscriber(); mockBoardModel.NewPieceAdded += stubEventSubscriber.Handle; mockBoardModel.SelectionChanged += stubEventSubscriber.Handle; var stubPlayer = Substitute.For <PlayerModel>(1, Colors.Yellow); var boardController = new BoardController(mockBoardModel); boardController.AddNewPiece(stubPoints[2], stubPlayer); // Act boardController.ChangeSelection(stubPoints[2], stubPlayer, true); // Assert var selectedCount = mockBoardModel.Points.Count(p => p.Piece != null && p.Piece.IsSelected); Assert.AreEqual(1, selectedCount); }
public void ChangeSelection_Position_SelectionChangedRaised( int pointCount, int newPointModelIndex, int stubPointModelIndex, int expectedCallCount) { // Arrange var stubPoints = TestHelper.CreatePointsWithBounds(pointCount); var stubBoardService = Substitute.For <IBoardService>(); stubBoardService.CreateInitialBoard() .Returns(new Tuple <List <PointModel>, List <List <PointModel> > >(stubPoints, null)); var stubBoardModel = Substitute.For <BoardModel>(stubBoardService); var mockEventSubscriber = new MockEventSubscriber(); stubBoardModel.NewPieceAdded += mockEventSubscriber.Handle; stubBoardModel.SelectionChanged += mockEventSubscriber.Handle; var stubPlayer = Substitute.For <PlayerModel>(1, Colors.Yellow); var boardController = new BoardController(stubBoardModel); boardController.AddNewPiece(stubPoints[stubPointModelIndex], stubPlayer); mockEventSubscriber.Reset(); // Act boardController.ChangeSelection(stubPoints[newPointModelIndex], stubPlayer, true); // Assert Assert.AreEqual(expectedCallCount, mockEventSubscriber.HitCount); }
public void RemovePiece_ValidPosition_PieceIsRemoved() { // Arrange var stubPoints = TestHelper.CreatePointsWithBounds(5); var stubBoardService = Substitute.For <IBoardService>(); stubBoardService.CreateInitialBoard() .Returns(new Tuple <List <PointModel>, List <List <PointModel> > >(stubPoints, null)); var mockBoardModel = Substitute.For <BoardModel>(stubBoardService); var stubEventSubscriber = new MockEventSubscriber(); mockBoardModel.NewPieceAdded += stubEventSubscriber.Handle; mockBoardModel.PieceRemoved += stubEventSubscriber.Handle; var stubPlayer = Substitute.For <PlayerModel>(1, Colors.Yellow); var boardController = new BoardController(mockBoardModel); boardController.AddNewPiece(stubPoints[1], stubPlayer); // Act boardController.RemovePiece(stubPoints[1]); // Assert var expectedPoint = mockBoardModel.Points.Where(p => p.Bounds.Contains(stubPoints[1].Bounds)).First(); Assert.IsNull(expectedPoint.Piece); }
public void MoveSelectedPiece_InvalidNewPoint_PieceIsNotMoved( int pointCount, int newPointModelIndex, int stubPointModelIndex) { // Arrange var stubPoints = TestHelper.CreatePointsWithBounds(pointCount); var stubBoardService = Substitute.For <IBoardService>(); stubBoardService.CreateInitialBoard() .Returns(new Tuple <List <PointModel>, List <List <PointModel> > >(stubPoints, null)); var mockBoardModel = Substitute.For <BoardModel>(stubBoardService); var stubEventSubscriber = new MockEventSubscriber(); mockBoardModel.NewPieceAdded += stubEventSubscriber.Handle; mockBoardModel.SelectionChanged += stubEventSubscriber.Handle; mockBoardModel.PieceMoved += stubEventSubscriber.Handle; var stubPlayer = Substitute.For <PlayerModel>(1, Colors.Yellow); var boardController = new BoardController(mockBoardModel); boardController.AddNewPiece(stubPoints[stubPointModelIndex], stubPlayer); boardController.ChangeSelection(stubPoints[stubPointModelIndex], stubPlayer, true); // Act boardController.MoveSelectedPiece(stubPoints[newPointModelIndex]); // Assert var expectedPoint = mockBoardModel.Points.Where(p => p.Bounds.Contains(stubPoints[stubPointModelIndex].Bounds)).First(); Assert.IsNotNull(expectedPoint.Piece); }
public void SetUp() { this.mockServer = new MockHassServerWebSocket(); this.connectionChangedSubscriber = new MockEventSubscriber(); this.connectionCTS = new CancellationTokenSource(); this.wsClient = new HassClientWebSocket(); this.wsClient.ConnectionStateChanged += connectionChangedSubscriber.Handle; }
public async Task AddEventHandlerSubscriptionForAnyEvent() { var testEventHandler = new MockEventHandler <EventResultInfo>(); var subscriber = new MockEventSubscriber(); testEventHandler.Event += subscriber.Handle; var result = await this.hassWSApi.AddEventHandlerSubscriptionAsync(testEventHandler.EventHandler); Assert.IsTrue(result); await this.ForceStateChangedAndGetEventData(subscriber); Assert.NotZero(subscriber.HitCount); }
public void UserMessage_EventSubscriber_PropertyChangedRaised() { // Arrange var boardViewModel = new BoardViewModel(null, null, null); var mockEventSubscriber = new MockEventSubscriber(); boardViewModel.PropertyChanged += mockEventSubscriber.Handle; // Act boardViewModel.UserMessage = "Test message"; // Assert Assert.AreEqual(1, mockEventSubscriber.HitCount); }
public async Task AddEventHandlerSubscriptionForStateChangedEvents() { var testEventHandler = new MockEventHandler <EventResultInfo>(); var subscriber = new MockEventSubscriber(); testEventHandler.Event += subscriber.Handle; var result = await this.hassWSApi.AddEventHandlerSubscriptionAsync(testEventHandler.EventHandler, KnownEventTypes.StateChanged); Assert.IsTrue(result); var eventData = await this.ForceStateChangedAndGetEventData(subscriber); Assert.NotZero(subscriber.HitCount); Assert.IsTrue(eventData.EntityId == testEntitytId); Assert.NotNull(eventData.NewState.State); }
private async Task <StateChangedEvent> ForceStateChangedAndGetEventData(MockEventSubscriber subscriber) { var domain = testEntitytId.GetDomain(); var update = await this.hassWSApi.CallServiceForEntitiesAsync(domain, "toggle", testEntitytId); Assert.NotNull(update, "SetUp failed"); var eventResultInfo = await subscriber.WaitFirstEventArgWithTimeoutAsync <EventResultInfo>( (x) => HassSerializer.TryGetEnumFromSnakeCase <KnownEventTypes>(x.EventType, out var knownEventType) && knownEventType == KnownEventTypes.StateChanged, 500); Assert.NotNull(eventResultInfo, "SetUp failed"); return(eventResultInfo.DeserializeData <StateChangedEvent>()); }
public void CurrentPlayerColor_EventSubscriber_PropertyChangedRaised() { // Arrange var boardViewModel = new BoardViewModel(null, null, null); var mockEventSubscriber = new MockEventSubscriber(); boardViewModel.PropertyChanged += mockEventSubscriber.Handle; // Act boardViewModel.CurrentPlayerColor = new SolidColorBrush() { Color = Colors.Black }; // Assert Assert.AreEqual(1, mockEventSubscriber.HitCount); }
public void RemovingItemRemovesSubscribersAndPublishers() { WorkItem workItem = new TestableRootWorkItem(); EventBrokerStrategy strat = new EventBrokerStrategy(); MockBuilderContext context = new MockBuilderContext(strat); MockEventObject thing = new MockEventObject(); MockEventSubscriber sub = new MockEventSubscriber(); context.Locator.Add(new DependencyResolutionLocatorKey(typeof(WorkItem), null), workItem); strat.BuildUp(context, typeof(MockEventObject), thing, null); strat.BuildUp(context, typeof(MockEventSubscriber), sub, null); Assert.IsFalse(thing.SomeEventIsNull()); Assert.IsFalse(thing.SomeEvent2IsNull()); strat.TearDown(context, thing); Assert.IsTrue(thing.SomeEventIsNull()); Assert.IsTrue(thing.SomeEvent2IsNull()); }
public async Task AddMultipleEventHandlerSubscriptionForAnyEvent() { var testEventHandler1 = new MockEventHandler <EventResultInfo>(); var testEventHandler2 = new MockEventHandler <EventResultInfo>(); var subscriber1 = new MockEventSubscriber(); var subscriber2 = new MockEventSubscriber(); testEventHandler1.Event += subscriber1.Handle; testEventHandler2.Event += subscriber2.Handle; var result1 = await this.hassWSApi.AddEventHandlerSubscriptionAsync(testEventHandler1.EventHandler); var result2 = await this.hassWSApi.AddEventHandlerSubscriptionAsync(testEventHandler2.EventHandler); Assert.IsTrue(result1); Assert.IsTrue(result2); var eventData = await this.ForceStateChangedAndGetEventData(subscriber1); Assert.NotZero(subscriber1.HitCount); Assert.AreEqual(subscriber1.HitCount, subscriber2.HitCount); Assert.IsTrue(eventData.EntityId == testEntitytId); }
public void StartGame_EmptyBoard_CurrentPlayerIsSet() { // Arrange var stubPlayers = TestHelper.CreateDefaultPlayers(); var stubBoardService = Substitute.For <IBoardService>(); stubBoardService.CreatePlayers().Returns(stubPlayers); var mockGameModel = Substitute.For <GameModel>(stubBoardService); var stubEventSubscriber = new MockEventSubscriber(); mockGameModel.TurnTaken += stubEventSubscriber.Handle; var gameController = new GameController(mockGameModel); // Act gameController.StartGame(); // Assert Assert.IsNotNull(mockGameModel.CurrentPlayer); }
public void StartGame_EmptyBoard_RaisesTurnTaken() { // Arrange var stubPlayers = TestHelper.CreateDefaultPlayers(); var stubBoardService = Substitute.For <IBoardService>(); stubBoardService.CreatePlayers().Returns(stubPlayers); var stubGameModel = Substitute.For <GameModel>(stubBoardService); var mockEventSubscriber = new MockEventSubscriber(); stubGameModel.TurnTaken += mockEventSubscriber.Handle; var gameController = new GameController(stubGameModel); // Act gameController.StartGame(); // Assert Assert.AreEqual(1, mockEventSubscriber.HitCount); }
public void MoveSelectedPiece_ValidSelectedPoint_PieceIsMovedToCorrectPoint() { // Arrange var stubPoints = TestHelper.CreatePointsWithBounds(5); stubPoints[2].Neighbors = new List <PointModel> { stubPoints[3] }; var stubBoardService = Substitute.For <IBoardService>(); stubBoardService.CreateInitialBoard() .Returns(new Tuple <List <PointModel>, List <List <PointModel> > >(stubPoints, null)); var mockBoardModel = Substitute.For <BoardModel>(stubBoardService); var stubEventSubscriber = new MockEventSubscriber(); mockBoardModel.NewPieceAdded += stubEventSubscriber.Handle; mockBoardModel.SelectionChanged += stubEventSubscriber.Handle; mockBoardModel.PieceMoved += stubEventSubscriber.Handle; var stubPlayer = Substitute.For <PlayerModel>(1, Colors.Yellow); var boardController = new BoardController(mockBoardModel); boardController.AddNewPiece(stubPoints[1], stubPlayer); boardController.ChangeSelection(stubPoints[1], stubPlayer, true); // Act boardController.MoveSelectedPiece(stubPoints[2]); // Assert var expectedPoint = mockBoardModel.Points.Where(p => p.Bounds.Contains(stubPoints[2].Bounds)).First(); Assert.AreEqual(stubPoints[2].Piece, expectedPoint.Piece); }