public async Task ExecuteAsync_DoesNotSaveTheResult_IfPresentButResultDoesNotHaveId() { this.action = new PushAction(this.opQueue.Object, this.store.Object, MobileServiceTableKind.Table, null, this.handler.Object, this.client.Object, this.context.Object, CancellationToken.None); var op = new InsertOperation("table", MobileServiceTableKind.Table, "id") { Item = new JObject() }; await TestResultSave(op, status : null, resultId : null, saved : false); }
public void Initialize() { this.store = new Mock <IMobileServiceLocalStore>(MockBehavior.Strict); this.opQueue = new Mock <OperationQueue>(MockBehavior.Strict, this.store.Object); this.opQueue.Setup(q => q.UpdateAsync(It.IsAny <MobileServiceTableOperation>())).Returns(Task.FromResult(0)); this.handler = new Mock <IMobileServiceSyncHandler>(MockBehavior.Strict); this.client = new Mock <MobileServiceClient>(); this.client.Object.Serializer = new MobileServiceSerializer(); this.context = new Mock <MobileServiceSyncContext>(this.client.Object); this.context.Setup(c => c.GetTable(It.IsAny <string>())).Returns(Task.FromResult(new MobileServiceTable("test", this.client.Object))); this.action = new PushAction(this.opQueue.Object, this.store.Object, MobileServiceTableKind.Table, null, this.handler.Object, this.client.Object, this.context.Object, CancellationToken.None); }
private static NetworkMessage CreatePushMessage(PushAction action, JObject content) { var message = new NetworkMessage { MessageType = NetworkMessageType.Push, Payload = JObject.FromObject(new PushInfo { Content = content, PushAction = action }) }; return(message); }
private PushAction createPushAction(string question, NodeReference correctAnswer) { var relevantUtterances = lastRelevantUtterances(question, correctAnswer); var orderedUtterances = (from utterance in relevantUtterances orderby getFowardTargets(utterance).Count select utterance).ToArray(); if (!orderedUtterances.Any()) { return(null); } var pushPart = orderedUtterances.Last(); var pushAction = new PushAction(pushPart); return(pushAction); }
IEnumerator _PrisonBreak() { AllDoors = GameObject.FindGameObjectsWithTag("Door"); foreach (GameObject door in AllDoors) { PushAction doorPushAction = door.GetComponent <PushAction> (); if (doorPushAction != null) { doorPushAction.Push(); yield return(new WaitForSeconds(Random.value * 0.2f)); } else { Debug.Log("No push action found on: " + door.name); } } }
public override ActionResult GetActionResult(BoardState aBoardState) { Debug.Log(this.id + " MoveAction.GetActionResult"); BoardState simBoardState = aBoardState; EntityState simEntityState = simBoardState.GetEntityById(this.id); Vector2Int startPos = simEntityState.pos; Vector2Int endPos = startPos + this.direction; if (!simEntityState.mobData.HasValue) { Debug.Log(this.id + " MoveAction.GetActionResult is not a mob RETURNING"); return(new ActionResult(this, null)); } if (!simBoardState.DoesFloorExist(endPos, simEntityState.id)) { Debug.Log(this.id + " MoveAction.GetActionResult couldnt find floor (pre-sweep) RETURNING"); return(new ActionResult(this, null)); } Dictionary <Vector2Int, BoardCell> affectedBoardSlice = simBoardState.GetBoardCellSlice(endPos, simEntityState.size); // getting a list of entities inside the new position HashSet <int> affectedEntityIdSet = new HashSet <int>(); foreach (BoardCell affectedBoardCell in affectedBoardSlice.Values) { int?affectedEntityId = affectedBoardCell.GetEntityId(simEntityState.isFront); if (affectedEntityId.HasValue && affectedEntityId.Value != simEntityState.id) { affectedEntityIdSet.Add(affectedEntityId.Value); } } ActionResult? deathActionResult = null; List <ActionResult> requiredActionResultList = new List <ActionResult>(); // for each entity thats gonna get affected by this action foreach (int affectedEntityId in affectedEntityIdSet) { // flag thats true if all entities i encounter can be moved out of the way somehow bool foundValidActionForAffectedEntity = false; foreach (EntityActionEnum requiredActionEnum in this.priorityList) { EntityAction requiredAction; // for each possible action that nextEntity can perform switch (requiredActionEnum) { case EntityActionEnum.MOVE: throw new NotImplementedException(); case EntityActionEnum.FALL: throw new NotImplementedException(); case EntityActionEnum.DIE: requiredAction = new DieAction(affectedEntityId, simEntityState.id, DeathTypeEnum.BUMP); break; case EntityActionEnum.PUSH: Vector2Int pushDirection = new Vector2Int(this.direction.x, 0); requiredAction = new PushAction(affectedEntityId, simEntityState.id, pushDirection); break; case EntityActionEnum.TURN: throw new NotImplementedException(); case EntityActionEnum.WAIT: throw new NotImplementedException(); default: throw new ArgumentOutOfRangeException(); } // simulate that action and get result Debug.Log(this.id + " --- UP STACK to " + affectedEntityId + "---"); ActionResult requiredActionResult = requiredAction.GetActionResult(simBoardState); Debug.Log(this.id + " --- DOWN STACK from " + affectedEntityId + " ---"); // if nextAction was valid if (requiredActionResult.boardState.HasValue) { simBoardState = requiredActionResult.boardState.Value; // if the action is one perscribed for me by the thing i encountered if (requiredActionResult.entityAction.id == this.id) { if (requiredActionResult.entityAction.entityActionEnum == EntityActionEnum.DIE) { deathActionResult = requiredActionResult; } } else { Debug.Assert(requiredActionResult.entityAction.id == affectedEntityId); requiredActionResultList.Add(requiredActionResult); } foundValidActionForAffectedEntity = true; } else { Debug.Log(this.id + " MoveAction.GetActionResult failed to do " + requiredAction.GetType() + " on " + affectedEntityId); } } if (!foundValidActionForAffectedEntity) { Debug.Log(this.id + " MoveAction.GetActionResult exhausted possible actions on " + affectedEntityId + " RETURNING"); return(new ActionResult(this, null)); } if (deathActionResult.HasValue) { requiredActionResultList.Clear(); Debug.Log(this.id + " MoveAction.GetActionResult had only one viable move causing self-death"); return(deathActionResult.Value); } } // another floor check if (!simBoardState.DoesFloorExist(endPos, simEntityState.id)) { Debug.Log(this.id + " MoveAction.GetActionResult couldnt find floor (post-sweep) RETURNING"); return(new ActionResult(this, null)); } simBoardState = ApplyAction(simBoardState); Debug.Log(this.id + " MoveAction.GetActionResult returned a valid result RETURNING"); return(new ActionResult(this, simBoardState, requiredActionResultList)); }
private static NetworkMessage CreatePushMessage(PushAction action, JObject content) { var message = new NetworkMessage { MessageType = NetworkMessageType.Push, Payload = JObject.FromObject(new PushInfo { Content = content, PushAction = action }) }; return message; }
internal void Add(PushAction <TViewModel> action) { _pushes.Add(action); }