public void it_transitions_to_Selection_state_when_Nomination_ends() { var vt = new VoteTracker(); vt.CloseNominationPhase(); Assert.AreEqual(State.SelectionPhase, vt.CurrentState); }
public void it_keeps_track_of_votes_when_many_are_logged() { var vt = new VoteTracker(); var u1 = new User("1"); var u2 = new User("2"); var u3 = new User("3"); var u4 = new User("4"); var u5 = new User("5"); var r1 = new Restaurant("Gracie's"); var r2 = new Restaurant("L&E"); vt.LogVote(u1, r1); vt.LogVote(u2, r1); vt.LogVote(u3, r2); vt.LogVote(u4, r1); vt.LogVote(u5, r2); vt.LogVote(u1, r1); vt.LogVote(u2, r2); vt.LogVote(u3, r1); Assert.AreEqual(2, vt.VotesForUser(u1)); Assert.AreEqual(2, vt.VotesForUser(u2)); Assert.AreEqual(2, vt.VotesForUser(u3)); Assert.AreEqual(1, vt.VotesForUser(u4)); Assert.AreEqual(1, vt.VotesForUser(u5)); Assert.AreEqual(5, vt.VotesForRestaurant(r1)); Assert.AreEqual(3, vt.VotesForRestaurant(r2)); Assert.AreEqual(8, vt.TotalVotes); }
public void it_keeps_track_of_votes() { var vt = new VoteTracker(); vt.LogVote(new User(), new Restaurant()); Assert.AreEqual(1, vt.TotalVotes); }
public void it_keeps_track_of_votes_per_restaurant() { var vt = new VoteTracker(); var r = new Restaurant(); vt.LogVote(new User(), r); vt.LogVote(new User(), r); vt.LogVote(new User(), r); vt.LogVote(new User(), r); vt.LogVote(new User(), r); Assert.AreEqual(5, vt.VotesForRestaurant(r)); }
public void it_keeps_track_of_votes_per_user() { var vt = new VoteTracker(); var u = new User(); vt.LogVote(u, new Restaurant()); vt.LogVote(u, new Restaurant()); vt.LogVote(u, new Restaurant()); vt.LogVote(u, new Restaurant()); vt.LogVote(u, new Restaurant()); Assert.AreEqual(5, vt.VotesForUser(u)); }
private static VoteTracker CreateVoteTrackerWithConstraints() { var MAX_VOTES_SELECTION = 3; var MAX_VOTES_NOMINATION = 2; var vt = new VoteTracker(); var nnrConstraint = new NoNewRestaurantsConstraint(vt); var mvpuConstraint_nom = new MaxVotesPerUserConstraint(vt, MAX_VOTES_NOMINATION); var mvpuConstraint_sel = new MaxVotesPerUserConstraint(vt, MAX_VOTES_SELECTION); vt.SetConstraints(State.NominationPhase, mvpuConstraint_nom); vt.SetConstraints(State.SelectionPhase, mvpuConstraint_sel); vt.SetConstraints(State.SelectionPhase, nnrConstraint); return(vt); }
public void it_resets_vote_counts_on_state_transition() { var vt = new VoteTracker(); vt.LogVote(new User(), new Restaurant()); vt.LogVote(new User(), new Restaurant()); vt.LogVote(new User(), new Restaurant()); Assert.AreEqual(3, vt.TotalVotes); vt.CloseNominationPhase(); Assert.AreEqual(0, vt.TotalVotes); vt.LogVote(new User(), new Restaurant()); vt.LogVote(new User(), new Restaurant()); Assert.AreEqual(2, vt.TotalVotes); }
public void it_constrains_max_votes_per_user_per_state() { const int MAX_VOTES_PER_USER = 5; var u = new User(); var r = new Restaurant(); var vt = new VoteTracker(); var constraint = new MaxVotesPerUserConstraint(vt, MAX_VOTES_PER_USER); vt.SetConstraints(State.NominationPhase, constraint); for (var x = 0; x <= (MAX_VOTES_PER_USER + 1); x++) { vt.LogVote(u, r); } Assert.Fail("exception not thrown"); }
void RpcSendVote(string s, bool isSuggestion) { if (isSuggestion) { --remainingSuggestions; } EatLocation location; if (EatLocation.Presets.TryGetValue(s, out location)) { VoteTracker.AddVote(location); } else { VoteTracker.AddVote(s); } VotesWindow.singleton.RefreshVotes(); }
public async Task <CommandResponse <VoteTracker> > RecordUserVote(int voteID, int optionID, bool restrictionsPassed) { DemandAuthentication(); //TODO: Fuzzy Trap, ensure this option belongs to the vote var response = new CommandResponse <VoteTracker>(); var userName = User.Identity.Name; bool saveChanges = false; var voteRecord = await _db.VoteTracker.Where(x => x.VoteID == voteID && x.VoteOptionID == optionID && x.UserName == userName).FirstOrDefaultAsync(); if (voteRecord == null) { voteRecord = new VoteTracker() { VoteID = voteID, VoteOptionID = optionID, RestrictionsPassed = restrictionsPassed, CreationDate = CurrentDate, UserName = User.Identity.Name }; _db.VoteTracker.Add(voteRecord); saveChanges = true; } else if (voteRecord.VoteOptionID != optionID) { voteRecord.VoteOptionID = optionID; saveChanges = true; } if (saveChanges) { await _db.SaveChangesAsync(); } response.Response = voteRecord; response.Status = Status.Success; return(response); }
void RpcSendSuggestion(string s, string desc) { EatLocation location; if (!EatLocation.Presets.TryGetValue(s, out location)) { location = new EatLocation(s, desc); } VoteTracker.AddVote(location); VotesWindow.singleton.RefreshVotes(); foreach (var player in Players) { if (player != this) { ++player.remainingSuggestions; } } if (!isLocalPlayer) { ReceiveSuggestion.ShowSuggestion(location); } }
void CmdInitCards(string initStr) { VoteTracker.SetInitString(initStr); }
public MaxVotesPerUserConstraint(VoteTracker voteTracker, int maxVotesPerUser) : base(voteTracker) { _maxVotesPerUser = maxVotesPerUser; }
public void it_is_in_Nomination_state_when_initialized() { var vt = new VoteTracker(); Assert.AreEqual(State.NominationPhase, vt.CurrentState); }
protected BaseStateConstraint(VoteTracker voteTracker) { VoteTracker = voteTracker; }
public NoNewRestaurantsConstraint(VoteTracker vt) : base(vt) { }