From 27bde43cae59bd8ef98fb168466a163663e1b725 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=A2=E1=84=91=E1=85=B3=E1=86=AF=20=E1=84=82?= =?UTF-8?q?=E1=85=A9=E1=84=90=E1=85=B3=E1=84=87=E1=85=AE=E1=86=A8?= Date: Tue, 4 Jun 2019 22:52:01 +0900 Subject: [PATCH] Fix: App ranking TDD --- src/game/lib/ranking_record_manager.js | 15 ++ test/tdd.js | 235 +++++++++++++++---------- 2 files changed, 153 insertions(+), 97 deletions(-) diff --git a/src/game/lib/ranking_record_manager.js b/src/game/lib/ranking_record_manager.js index 6c75e9d..e2c797f 100644 --- a/src/game/lib/ranking_record_manager.js +++ b/src/game/lib/ranking_record_manager.js @@ -23,21 +23,36 @@ RankingRecordManager.prototype.getCount = function() { } RankingRecordManager.prototype.getAt = function(index) { + if(typeof(this.rankingRecords[index]) == "undefined") + return null; + return this.rankingRecords[index]; } RankingRecordManager.prototype.getRankAt = function(index) { + if(typeof(this.rankingRecords[index]) == "undefined") + return -1; + return this.rankingRecords[index].rank; } RankingRecordManager.prototype.getPlayerIDAt = function(index) { + if(typeof(this.rankingRecords[index]) == "undefined") + return -1; + return this.rankingRecords[index].playerID; } RankingRecordManager.prototype.getPlayerNameAt = function(index) { + if(typeof(this.rankingRecords[index]) == "undefined") + return "no data"; + return this.rankingRecords[index].playerName; } RankingRecordManager.prototype.getBestRecordAt = function(index) { + if(typeof(this.rankingRecords[index]) == "undefined") + return -1; + return this.rankingRecords[index].bestRecord; } \ No newline at end of file diff --git a/test/tdd.js b/test/tdd.js index faab013..e53e3d3 100644 --- a/test/tdd.js +++ b/test/tdd.js @@ -1,3 +1,113 @@ +////////////////////////////////////////////////// +// DateUtil + +QUnit.test( "DateUtil", function( assert ) { + var datetime = new Date("2019-06-04T16:15:00"); + var date = datetime.getFullYear() + "-" + + ("0" + (datetime.getMonth() + 1)).slice(-2) + "-" + + ("0" + datetime.getDate()).slice(-2); + var time = ("0" + datetime.getHours()).slice(-2) + ":" + + ("0" + datetime.getMinutes()).slice(-2) + ":" + + ("0" + datetime.getSeconds()).slice(-2); + + assert.equal(DateUtil.getYYYYMMDD(datetime), date, "DateUtil - getYYYYMMDD"); + assert.equal(DateUtil.getHHMMSS(datetime), time, "DateUtil - getHHMMSS"); +}); + + +////////////////////////////////////////////////// +// App ranking + +QUnit.test( "App ranking", function( assert ) { + sessionStorageManager.setMaestroID(3); // jisangs + sessionStorageManager.setPlayingAppID(1); + + var dbConnectManager = new DBConnectManager(); + + // #1 Hour 15:00 + let date = "2018-08-23"; + let time = "15:53:00"; + + let done = assert.async(); + setTimeout(function() { + dbConnectManager.requestRanking( + DBConnectManager.TYPE_MY_RANKING_HOUR, + sessionStorageManager.getMaestroID(), + date, + time, + (type, rankingRecordManager) => { + assert.equal(rankingRecordManager.getRankAt(0), 1, "hour - rank #1"); + assert.equal(rankingRecordManager.getBestRecordAt(0), 97.33, "hour - best record"); + assert.equal(rankingRecordManager.getPlayerIDAt(0), 49, "hour - player ID"); + assert.equal(rankingRecordManager.getPlayerNameAt(0), "마가연", "hour - player name"); + + assert.equal(rankingRecordManager.getRankAt(5), 6, "hour - rank"); + assert.equal(rankingRecordManager.getBestRecordAt(5), 85.44, "hour - best record"); + assert.equal(rankingRecordManager.getPlayerIDAt(5), 79, "hour - player ID"); + assert.equal(rankingRecordManager.getPlayerNameAt(5), "박선수", "hour - player name"); + + done(); + } + ); + }); + + // #2 Hour 16:00 + let date2 = "2018-08-23"; + let time2 = "16:53:00"; + + let done2 = assert.async(); + setTimeout(function() { + dbConnectManager.requestRanking( + DBConnectManager.TYPE_MY_RANKING_HOUR, + sessionStorageManager.getMaestroID(), + date2, + time2, + (type, rankingRecordManager) => { + assert.equal(rankingRecordManager.getRankAt(0), 1, "hour - rank #2"); + assert.equal(rankingRecordManager.getBestRecordAt(0), 97.87, "hour - best record"); + assert.equal(rankingRecordManager.getPlayerIDAt(0), 51, "hour - player ID"); + assert.equal(rankingRecordManager.getPlayerNameAt(0), "김민재", "hour - player name"); + + assert.equal(rankingRecordManager.getRankAt(5), 6, "hour - rank"); + assert.equal(rankingRecordManager.getBestRecordAt(5), 87.64, "hour - best record"); + assert.equal(rankingRecordManager.getPlayerIDAt(5), 60, "hour - player ID"); + assert.equal(rankingRecordManager.getPlayerNameAt(5), "이서영", "hour - player name"); + + done2(); + } + ); + }); + + + // #3 Day 2018-08-23 + let date3 = "2018-08-23"; + let time3 = "16:53:00"; + + let done3 = assert.async(); + setTimeout(function() { + dbConnectManager.requestRanking( + DBConnectManager.TYPE_MY_RANKING_DAY, + sessionStorageManager.getMaestroID(), + date3, + time3, + (type, rankingRecordManager) => { + assert.equal(rankingRecordManager.getRankAt(0), 1, "day - rank #3"); + assert.equal(rankingRecordManager.getBestRecordAt(0), 99.18, "day - best record"); + assert.equal(rankingRecordManager.getPlayerIDAt(0), 46, "day - player ID"); + assert.equal(rankingRecordManager.getPlayerNameAt(0), "강예원", "day - player name"); + + assert.equal(rankingRecordManager.getRankAt(5), 6, "day - rank"); + assert.equal(rankingRecordManager.getBestRecordAt(5), 94.48, "day - best record"); + assert.equal(rankingRecordManager.getPlayerIDAt(5), 57, "day - player ID"); + assert.equal(rankingRecordManager.getPlayerNameAt(5), "고울", "day - player name"); + + done3(); + } + ); + }); +}); + + ////////////////////////////////////////////////// // AccountValidator @@ -178,12 +288,18 @@ QUnit.test( "TypingTextManager - slice", function( assert ) { }); QUnit.test( "TypingTextManager - makePracticeContents", function( assert ) { - typingTextMan.makePracticeContents(testContent, 2); + var repeatCount = 2; + typingTextMan.makePracticeContents(testContent, repeatCount); let contents = typingTextMan.getContents(); + var countTestContent = testContent.length * (repeatCount + 1) * 2; + // repeatCount + 1 : original list + (shuffled list * 2) + // *2 : chosung + jungsung + assert.equal(contents[0], "ㅃ", "makePracticeContents - ㅃ"); - assert.equal(contents[8], "ㅅ", "makePracticeContents - ㅅ"); - assert.equal(contents.length, testContent.length * 3, "makePracticeContents - length"); + assert.equal(contents[1], "ㅓ", "makePracticeContents - ㅓ"); + assert.equal(contents[(testContent.length - 1) * 2], "ㅅ", "makePracticeContents - ㅅ"); + assert.equal(contents.length, countTestContent, "makePracticeContents - length"); }); QUnit.test( "TypingTextManager - makeTestContents", function( assert ) { @@ -336,86 +452,11 @@ QUnit.test( "DBConnectManager - Player history", function( assert ) { ); }); }); - -QUnit.test( "DBConnectManager - Player ranking", function( assert ) { - sessionStorageManager.maestroID = 1; // jisangs - sessionStorageManager.playingAppID = 29; - let date = "2018-05-16"; - let time = "14:50:00"; - - let done = assert.async(3); - - setTimeout(function() { - dbConnectManager.requestRanking( - DBConnectManager.TYPE_MY_RANKING_HOUR, - 1, // maestroID for jisangs - date, - time, - (type, rankingRecordManager) => { - assert.equal(rankingRecordManager.getRankAt(0), 1, "hour"); - assert.equal(rankingRecordManager.getBestRecordAt(0), 302.921, "hour"); - assert.equal(rankingRecordManager.getPlayerIDAt(0), 5, "hour"); - assert.equal(rankingRecordManager.getPlayerNameAt(0), "김지유", "hour"); - - assert.equal(rankingRecordManager.getRankAt(5), 6, "hour"); - assert.equal(rankingRecordManager.getBestRecordAt(5), 128.436, "hour"); - assert.equal(rankingRecordManager.getPlayerIDAt(5), 22, "hour"); - assert.equal(rankingRecordManager.getPlayerNameAt(5), "모윤건", "hour"); - - done(); - } - ); - }); - - setTimeout(function() { - dbConnectManager.requestRanking( - DBConnectManager.TYPE_MY_RANKING_DAY, - 1, // maestroID for jisangs - date, - time, - (type, rankingRecordManager) => { - assert.equal(rankingRecordManager.getRankAt(0), 1, "day"); - assert.equal(rankingRecordManager.getBestRecordAt(0), 313.304, "day"); - assert.equal(rankingRecordManager.getPlayerIDAt(0), 19, "day"); - assert.equal(rankingRecordManager.getPlayerNameAt(0), "오지운", "day"); - - assert.equal(rankingRecordManager.getRankAt(17), 18, "day"); - assert.equal(rankingRecordManager.getBestRecordAt(17), 65.337, "day"); - assert.equal(rankingRecordManager.getPlayerIDAt(17), 20, "day"); - assert.equal(rankingRecordManager.getPlayerNameAt(17), "김민성", "day"); - - done(); - } - ); - }); - - setTimeout(function() { - dbConnectManager.requestRanking( - DBConnectManager.TYPE_MY_RANKING_MONTH, - 1, // maestroID for jisangs - date, - time, - (type, rankingRecordManager) => { - assert.equal(rankingRecordManager.getRankAt(0), 1, "month"); - assert.equal(rankingRecordManager.getBestRecordAt(0), 617.231, "month"); - assert.equal(rankingRecordManager.getPlayerIDAt(0), 50, "month"); - assert.equal(rankingRecordManager.getPlayerNameAt(0), "강민준", "month"); - - assert.equal(rankingRecordManager.getRankAt(17), 18, "month"); - assert.equal(rankingRecordManager.getBestRecordAt(17), 216.279, "month"); - assert.equal(rankingRecordManager.getPlayerIDAt(17), 9, "month"); - assert.equal(rankingRecordManager.getPlayerNameAt(17), "신예성", "month"); - - done(); - } - ); - }); - -}); */ QUnit.test( "DBConnectManager - HowToPlay", function( assert ) { - let howToPlayForSpaceInvaders = "외계인이 나타났다!\\n마우스 왼쪽 버튼으로\\n외계인을 클릭해서 물리쳐 주세요."; + let howToPlayForSpaceInvaders = "외계인이 나타났다!\\n마우스 왼쪽 버튼을 클릭해서\\n외계인이 사라지기 전에 물리쳐 주세요."; + var howToPlayForTyping = "왼손 검지를 [F] 자판위에,\\n오른손 검지를 [J] 자판위에 올린채\\n손을 움직이지 말고 글자를 입력하세요."; let done = assert.async(2); @@ -437,7 +478,7 @@ QUnit.test( "DBConnectManager - HowToPlay", function( assert ) { 1, // korean basic typing (jsonData) => { let howToPlay = jsonData["HowToPlay"]; - assert.equal(howToPlay, ""); + assert.equal(howToPlay, howToPlayForTyping); done(); }, (jsonData) => { @@ -579,7 +620,7 @@ historyRecordManager.push(new HistoryRecord("05/13", "typing_english_basic", 200 historyRecordManager.push(new HistoryRecord("05/14", "test", 10000)); QUnit.test( "HistoryRecordManager - push", function( assert ) { - assert.equal(historyRecordManager.count, 5); + assert.equal(historyRecordManager.historyRecords.length, 5); }); QUnit.test( "HistoryRecordManager - getAt", function( assert ) { @@ -595,7 +636,7 @@ QUnit.test( "HistoryRecordManager - clear", function( assert ) { historyRecordManagerForClear.push(new HistoryRecord("05/10", "space_invaders", 1)); historyRecordManagerForClear.clear(); - assert.equal(historyRecordManagerForClear.count, 0); + assert.equal(historyRecordManagerForClear.historyRecords.length, 0); }); QUnit.test( "HistoryRecordManager - underValueForGraph", function( assert ) { @@ -642,7 +683,7 @@ rankingRecordManager.push(new RankingRecord(7, 4, "박지상", 700)); rankingRecordManager.push(new RankingRecord(8, 5, "신현주", 600)); QUnit.test( "RankingRecordManager - push", function( assert ) { - assert.equal(rankingRecordManager.count, 5); + assert.equal(rankingRecordManager.rankingRecords.length, 5); }); QUnit.test( "RankingRecordManager - getAt", function( assert ) { @@ -664,7 +705,7 @@ QUnit.test( "RankingRecordManager - clear", function( assert ) { rankingRecordManagerForClear.push(new RankingRecord(8, "신현주", 600)); rankingRecordManagerForClear.clear(); - assert.equal(rankingRecordManagerForClear.count, 0); + assert.equal(rankingRecordManagerForClear.rankingRecords.length, 0); }); @@ -687,35 +728,35 @@ QUnit.test( "ScoreManager - plusScore", function( assert ) { QUnit.test( "SessionStorageManager - PlayerName", function( assert ) { sessionStorageManager.clear(); - assert.equal(sessionStorageManager.playerName, null, "playerName"); + assert.equal(sessionStorageManager.getPlayerName(), null, "playerName"); - sessionStorageManager.playerName = "박지상"; - assert.equal(sessionStorageManager.playerName, "박지상", "playerName"); + sessionStorageManager.setPlayerName("박지상"); + assert.equal(sessionStorageManager.getPlayerName(), "박지상", "playerName"); sessionStorageManager.removeItem("playerName"); - assert.equal(sessionStorageManager.playerName, null, "playerName"); + assert.equal(sessionStorageManager.getPlayerName(), null, "playerName"); }); QUnit.test( "SessionStorageManager - playerPlayerID", function( assert ) { sessionStorageManager.clear(); - assert.equal(sessionStorageManager.playerID, null, "playerID"); + assert.equal(sessionStorageManager.getPlayerID(), null, "playerID"); - sessionStorageManager.playerID = 1; - assert.equal(sessionStorageManager.playerID, 1, "playerID"); + sessionStorageManager.setPlayerID(1); + assert.equal(sessionStorageManager.getPlayerID(), 1, "playerID"); sessionStorageManager.removeItem("playerID"); - assert.equal(sessionStorageManager.playerID, null, "playerID"); + assert.equal(sessionStorageManager.getPlayerID(), null, "playerID"); }); QUnit.test( "SessionStorageManager - playingAppName", function( assert ) { sessionStorageManager.clear(); - assert.equal(sessionStorageManager.playingAppName, null, "playingAppName"); + assert.equal(sessionStorageManager.getPlayingAppName(), null, "playingAppName"); - sessionStorageManager.playingAppName = "space_invaders"; - assert.equal(sessionStorageManager.playingAppName, "space_invaders", "playingAppName"); + sessionStorageManager.setPlayingAppName("space_invaders"); + assert.equal(sessionStorageManager.getPlayingAppName(), "space_invaders", "playingAppName"); sessionStorageManager.removeItem("playingAppName"); - assert.equal(sessionStorageManager.playingAppName, null, "playingAppName"); + assert.equal(sessionStorageManager.getPlayingAppName(), null, "playingAppName"); });