public void CreateWithNoNoise_AddsOnlyRequiredDominoPieces() { var beginCategory = new DominoTile("Begin", ""); var endCategory = new DominoTile("End", ""); var middleCategory = new DominoTile("Middle", ""); A.CallTo(() => _pathFinder.FindPath(1, 1)).WithAnyArguments().Returns(new SuggestedPath { MinimumRequiredPieces = 2 }); A.CallTo(() => _categoriesProvider.DrawTile()).ReturnsNextFromSequence(beginCategory, endCategory, middleCategory); A.CallTo(() => _categoriesProvider.DrawTileFromCategory("Begin")).Returns(beginCategory); A.CallTo(() => _categoriesProvider.DrawTileFromCategory("End")).Returns(endCategory); A.CallTo(() => _categoriesProvider.DrawTileFromCategory("Middle")).Returns(middleCategory); var builder = new GameBuilder(_pathFinder); var game = builder.Create(10, 10, 0, _categoriesProvider); Assert.Equal(2, game.PlayerPieces.Length); var firstPiece = game.PlayerPieces[0]; Assert.Equal(beginCategory.Category, firstPiece.FirstTile.Category); Assert.Equal(middleCategory.Category, firstPiece.SecondTile.Category); var secondPiece = game.PlayerPieces[1]; Assert.Equal(middleCategory.Category, secondPiece.FirstTile.Category); Assert.Equal(endCategory.Category, secondPiece.SecondTile.Category); }
public void CreateWithNoise_AdditionalPiecesAdded() { var minimumPathSize = 2; var noiseCount = 5; A.CallTo(() => _pathFinder.FindPath(1, 1)).WithAnyArguments().Returns(new SuggestedPath { MinimumRequiredPieces = minimumPathSize }); A.CallTo(() => _categoriesProvider.DrawTile()).WithAnyArguments().Returns(new DominoTile("", "")); var builder = new GameBuilder(_pathFinder); var game = builder.Create(10, 10, noiseCount, _categoriesProvider); Assert.Equal(minimumPathSize + noiseCount, game.PlayerPieces.Length); }
public void SimpleBuilderPlayground() { var gb = GameBuilder.Create <String>() .WithContext("a") .HasNameAndDescription("name", "asdsadsa") .HasEndState("name2", "asdsadsa") .HasCheckerForStateChange(s => s == "").ThenGoToState("") .HasCheckerForStateChange(s => s != "").ThenGoToState("") .HasCheckerForContextDataChange(s => s == "").ThenDo(t => t.ToCharArray()) .EndHasState() .HasStartState("", "") .EndHasState(); }
public void Create_BuildsGameOfAGivenSize(int width, int height) { A.CallTo(() => _pathFinder.FindPath(width, height)).Returns(new SuggestedPath { MinimumRequiredPieces = 3 }); A.CallTo(() => _categoriesProvider.DrawTile()).WithAnyArguments().Returns(new DominoTile("FAKE", "FAKE")); var builder = new GameBuilder(_pathFinder); var game = builder.Create(width, height, 0, _categoriesProvider); Assert.Equal(width, game.Width); Assert.Equal(height, game.Height); }
public Game <WhoIsBiggerContext> Create() { var game = GameBuilder.Create <WhoIsBiggerContext>() //.HasOneOfCommands( // "UserInput",g=> // { // }, // g=> // { // } //) .HasCommand("StartGame", g => { var cmd = new ReactiveCommand(); cmd.ListenCanExecuteObservable(g .GetValueContainer(x => x.CurrentState) .GetNullObservable() .Select(_ => g.CurrentState.Name == GameStateNames.GameStart)); cmd.Subscribe(e => g.CurrentState = g.AllStates[GameStateNames.UserInput]); return(cmd); }) .HasCommand("PlayerInput", g => { var cmd = new ReactiveCommand(); cmd.ListenCanExecuteObservable(g .GetValueContainer(x => x.CurrentState) .GetNullObservable() .Select(_ => g.CurrentState.Name == GameStateNames.UserInput || g.CurrentState.Name == GameStateNames.GameSet )); cmd.Subscribe(e => { var input = (decimal)e.EventArgs.EventArgs; g.GameExecutingContext.UserInputs.Add(input); g.GameExecutingContext.CurrentUserIndex++; } ); return(cmd); }) .HasStartState("GameStart", "Game Start") .EndHasState() .HasState(GameStateNames.UserInput) .HasCheckerForContextDataChange(c => c.CurrentUserIndex != c.UserInputs.Count) .ThenDo(c => c.CurrentUserIndex = c.UserInputs.Count) .HasCheckerForContextDataChange(c => true) .ThenDo(c => { var msg = string.Format("{0}'s input is {1}", c.Users[c.CurrentUserIndex], c.UserInputs[c.CurrentUserIndex]); c.Messages.Add(msg); c.LastMessages.Add(msg); }) .HasCheckerForContextDataChange(c => c.LastMessages.Count > c.MaxLastMessageCount) .ThenDo(c => { while (c.LastMessages.Count > c.MaxLastMessageCount) { c.LastMessages.RemoveAt(0); } }) .HasCheckerForStateChange(c => c.UserInputs.Count == c.Users.Count) .ThenGoToState(GameStateNames.GameSet) .EndHasState() .HasEndState(GameStateNames.UserInput) .EndHasState() .WithContext(new WhoIsBiggerContext { Users = new System.Collections.ObjectModel.ObservableCollection <string>() { "U1", "U2" } }) .CurrentProduct; return(game); }