diff --git a/app/assets/javascripts/sessionLatency.js b/app/assets/javascripts/sessionLatency.js index 2af0eacfb..0a7d1e739 100644 --- a/app/assets/javascripts/sessionLatency.js +++ b/app/assets/javascripts/sessionLatency.js @@ -9,7 +9,41 @@ var clientsToSessions = {}; var sessionLatency = {}; + function getSortScore(sessionId) { + return sessionLatency[sessionId].sortScore; + } + + function ensureSessionLatencyEntry(sessionId) { + if (!(sessionId in sessionLatency)) { + sessionLatency[sessionId] = { + clientLatencies: {}, + averageLatency: 0 + }; + } + } + + function setInitialSortScore(session) { + var i, + p, + score = 0, + participant = null; + + if ("invitations" in session) { + score += 2; + } + for (i=0, p=session.participants.length; i
= 2 for invited sessions", function() { + var score = sessionLatency.getSortScore('4'); + expect(score >= 2).toBeTruthy(); + }); + + it("should return < 2, >= 1 for friend sessions", function() { + var score = sessionLatency.getSortScore('3'); + expect(score < 2).toBeTruthy(); + expect(score >= 1).toBeTruthy(); + }); + it("should return < 1 for unknown sessions", function() { + var score = sessionLatency.getSortScore('2'); + expect(score < 1).toBeTruthy(); + }); + it("should return 1/AvgLatency for unknown pingable sessions", function() { + var score = sessionLatency.getSortScore('2'); + expect(score).toEqual(0.02); + }); + it("should return higher sort value for lower latency", function() { + var score1 = sessionLatency.getSortScore('1'); + var score2 = sessionLatency.getSortScore('2'); + expect(score1).toBeGreaterThan(score2); + }); + }); + });