diff --git a/src/game/lib/number_util.js b/src/game/lib/number_util.js index 8c9b954..c8217aa 100644 --- a/src/game/lib/number_util.js +++ b/src/game/lib/number_util.js @@ -5,6 +5,9 @@ class NumberUtil { } static numberOfDigits(number) { + if(number === 1000) + return 4; + return Math.floor(Math.log(number) / Math.LN10 + 1); // bug : 1000 -> expected 4 but 3 } diff --git a/src/game/typing/practice/game.js b/src/game/typing/practice/game.js index 6ac6699..38c1160 100644 --- a/src/game/typing/practice/game.js +++ b/src/game/typing/practice/game.js @@ -52,7 +52,10 @@ class TypingPractice { this.keyMapper = new KeyMapper(); - new Keyboard(this.keyMapper); + if(sessionStorageManager.playingAppName.indexOf("korean") > 0) + new Keyboard(this.keyMapper, Keyboard.KOREAN); + else + new Keyboard(this.keyMapper, Keyboard.ENGLISH); game.input.keyboard.processKeyPress = () => { self.checkTypingContents(event); diff --git a/src/game/typing/practice/key_mapper.js b/src/game/typing/practice/key_mapper.js index 5af0309..6c513e6 100644 --- a/src/game/typing/practice/key_mapper.js +++ b/src/game/typing/practice/key_mapper.js @@ -1,3 +1,12 @@ +class KeyData { + + constructor() { + this.functionKey = null; + this.englishKey = null; + this.koreanKey = null; + } +} + class KeyTextData { constructor(normalText, shiftText) { @@ -7,6 +16,8 @@ class KeyTextData { } + + class KeyMapper { constructor() { @@ -20,112 +31,143 @@ class KeyMapper { registerFunctionKey() { - this.registerKeyTextData("Backquote", "`", "~"); - this.registerKeyTextData("Digit1", "1", "!"); - this.registerKeyTextData("Digit2", "2", "@"); - this.registerKeyTextData("Digit3", "3", "#"); - this.registerKeyTextData("Digit4", "4", "$"); - this.registerKeyTextData("Digit5", "5", "%"); - this.registerKeyTextData("Digit6", "6", "^"); - this.registerKeyTextData("Digit7", "7", "&"); - this.registerKeyTextData("Digit8", "8", "*"); - this.registerKeyTextData("Digit9", "9", "("); - this.registerKeyTextData("Digit0", "0", ")"); - this.registerKeyTextData("Minus", "-", "_"); - this.registerKeyTextData("Equal", "=", "+"); - this.registerKeyTextData("Backspace", "backspace", "backspace"); + this.registerFunctionKeyTextData("Backquote", "`", "~"); + this.registerFunctionKeyTextData("Digit1", "1", "!"); + this.registerFunctionKeyTextData("Digit2", "2", "@"); + this.registerFunctionKeyTextData("Digit3", "3", "#"); + this.registerFunctionKeyTextData("Digit4", "4", "$"); + this.registerFunctionKeyTextData("Digit5", "5", "%"); + this.registerFunctionKeyTextData("Digit6", "6", "^"); + this.registerFunctionKeyTextData("Digit7", "7", "&"); + this.registerFunctionKeyTextData("Digit8", "8", "*"); + this.registerFunctionKeyTextData("Digit9", "9", "("); + this.registerFunctionKeyTextData("Digit0", "0", ")"); + this.registerFunctionKeyTextData("Minus", "-", "_"); + this.registerFunctionKeyTextData("Equal", "=", "+"); + this.registerFunctionKeyTextData("Backspace", "backspace", "backspace"); - this.registerKeyTextData("Tab", "tab", "tab"); - this.registerKeyTextData("BracketLeft", "[", "{"); - this.registerKeyTextData("BracketRight", "]", "}"); - this.registerKeyTextData("Backslash", "\\", "|"); + this.registerFunctionKeyTextData("Tab", "tab", "tab"); + this.registerFunctionKeyTextData("BracketLeft", "[", "{"); + this.registerFunctionKeyTextData("BracketRight", "]", "}"); + this.registerFunctionKeyTextData("Backslash", "\\", "|"); - this.registerKeyTextData("CapsLock", "caps lock", "caps lock"); - this.registerKeyTextData("Semicolon", ";", ":"); - this.registerKeyTextData("Quote", "'", "\""); - this.registerKeyTextData("Enter", "enter", "enter"); + this.registerFunctionKeyTextData("CapsLock", "caps lock", "caps lock"); + this.registerFunctionKeyTextData("Semicolon", ";", ":"); + this.registerFunctionKeyTextData("Quote", "'", "\""); + this.registerFunctionKeyTextData("Enter", "enter", "enter"); - this.registerKeyTextData("ShiftLeft", "left_shift", "left_shift"); - this.registerKeyTextData("ShiftRight", "right_shift", "right_shift"); - this.registerKeyTextData("Comma", ",", "<"); - this.registerKeyTextData("Period", ".", ">"); - this.registerKeyTextData("Slash", "/", "?"); + this.registerFunctionKeyTextData("ShiftLeft", "left_shift", "left_shift"); + this.registerFunctionKeyTextData("ShiftRight", "right_shift", "right_shift"); + this.registerFunctionKeyTextData("Comma", ",", "<"); + this.registerFunctionKeyTextData("Period", ".", ">"); + this.registerFunctionKeyTextData("Slash", "/", "?"); - this.registerKeyTextData("ControlLeft", "ctrl", "ctrl"); - this.registerKeyTextData("window", "window", "window"); - this.registerKeyTextData("AltLeft", "alt", "alt"); - this.registerKeyTextData("chinese", "한자", "한자"); - this.registerKeyTextData("Space", "space", "space"); - this.registerKeyTextData("korean_english", "한/영", "한/영"); - this.registerKeyTextData("AltRight", "alt", "alt"); - this.registerKeyTextData("ControlRight", "ctrl", "ctrl"); + this.registerFunctionKeyTextData("ControlLeft", "ctrl", "ctrl"); + this.registerFunctionKeyTextData("window", "window", "window"); + this.registerFunctionKeyTextData("AltLeft", "alt", "alt"); + this.registerFunctionKeyTextData("Chinese", "한자", "한자"); + this.registerFunctionKeyTextData("Space", "space", "space"); + this.registerFunctionKeyTextData("KoreanEnglish", "한/영", "한/영"); + this.registerFunctionKeyTextData("AltRight", "alt", "alt"); + this.registerFunctionKeyTextData("ControlRight", "ctrl", "ctrl"); } registerEnglishKey() { - this.registerKeyTextData("KeyQ", "q", "Q"); - this.registerKeyTextData("KeyW", "w", "W"); - this.registerKeyTextData("KeyE", "e", "E"); - this.registerKeyTextData("KeyR", "r", "R"); - this.registerKeyTextData("KeyT", "t", "T"); - this.registerKeyTextData("KeyY", "y", "Y"); - this.registerKeyTextData("KeyU", "u", "U"); - this.registerKeyTextData("KeyI", "i", "I"); - this.registerKeyTextData("KeyO", "o", "O"); - this.registerKeyTextData("KeyP", "p", "P"); + this.registerEnglishKeyTextData("KeyQ", "q", "Q"); + this.registerEnglishKeyTextData("KeyW", "w", "W"); + this.registerEnglishKeyTextData("KeyE", "e", "E"); + this.registerEnglishKeyTextData("KeyR", "r", "R"); + this.registerEnglishKeyTextData("KeyT", "t", "T"); + this.registerEnglishKeyTextData("KeyY", "y", "Y"); + this.registerEnglishKeyTextData("KeyU", "u", "U"); + this.registerEnglishKeyTextData("KeyI", "i", "I"); + this.registerEnglishKeyTextData("KeyO", "o", "O"); + this.registerEnglishKeyTextData("KeyP", "p", "P"); - this.registerKeyTextData("KeyA", "a", "A"); - this.registerKeyTextData("KeyS", "s", "S"); - this.registerKeyTextData("KeyD", "d", "D"); - this.registerKeyTextData("KeyF", "f", "F"); - this.registerKeyTextData("KeyG", "g", "G"); - this.registerKeyTextData("KeyH", "h", "H"); - this.registerKeyTextData("KeyJ", "j", "J"); - this.registerKeyTextData("KeyK", "k", "K"); - this.registerKeyTextData("KeyL", "l", "L"); + this.registerEnglishKeyTextData("KeyA", "a", "A"); + this.registerEnglishKeyTextData("KeyS", "s", "S"); + this.registerEnglishKeyTextData("KeyD", "d", "D"); + this.registerEnglishKeyTextData("KeyF", "f", "F"); + this.registerEnglishKeyTextData("KeyG", "g", "G"); + this.registerEnglishKeyTextData("KeyH", "h", "H"); + this.registerEnglishKeyTextData("KeyJ", "j", "J"); + this.registerEnglishKeyTextData("KeyK", "k", "K"); + this.registerEnglishKeyTextData("KeyL", "l", "L"); - this.registerKeyTextData("KeyZ", "z", "Z"); - this.registerKeyTextData("KeyX", "x", "X"); - this.registerKeyTextData("KeyC", "c", "C"); - this.registerKeyTextData("KeyV", "v", "V"); - this.registerKeyTextData("KeyB", "b", "B"); - this.registerKeyTextData("KeyN", "n", "N"); - this.registerKeyTextData("KeyM", "m", "M"); + this.registerEnglishKeyTextData("KeyZ", "z", "Z"); + this.registerEnglishKeyTextData("KeyX", "x", "X"); + this.registerEnglishKeyTextData("KeyC", "c", "C"); + this.registerEnglishKeyTextData("KeyV", "v", "V"); + this.registerEnglishKeyTextData("KeyB", "b", "B"); + this.registerEnglishKeyTextData("KeyN", "n", "N"); + this.registerEnglishKeyTextData("KeyM", "m", "M"); } registerKoreanKey() { - this.registerKeyTextData("KeyQ", "ㅂ", "ㅃ"); - this.registerKeyTextData("KeyW", "ㅈ", "ㅉ"); - this.registerKeyTextData("KeyE", "ㄷ", "ㄸ"); - this.registerKeyTextData("KeyR", "ㄱ", "ㄲ"); - this.registerKeyTextData("KeyT", "ㅅ", "ㅆ"); - this.registerKeyTextData("KeyY", "ㅛ", "ㅛ"); - this.registerKeyTextData("KeyU", "ㅕ", "ㅕ"); - this.registerKeyTextData("KeyI", "ㅑ", "ㅑ"); - this.registerKeyTextData("KeyO", "ㅐ", "ㅒ"); - this.registerKeyTextData("KeyP", "ㅔ", "ㅖ"); + this.registerKoreanKeyTextData("KeyQ", "ㅂ", "ㅃ"); + this.registerKoreanKeyTextData("KeyW", "ㅈ", "ㅉ"); + this.registerKoreanKeyTextData("KeyE", "ㄷ", "ㄸ"); + this.registerKoreanKeyTextData("KeyR", "ㄱ", "ㄲ"); + this.registerKoreanKeyTextData("KeyT", "ㅅ", "ㅆ"); + this.registerKoreanKeyTextData("KeyY", "ㅛ", "ㅛ"); + this.registerKoreanKeyTextData("KeyU", "ㅕ", "ㅕ"); + this.registerKoreanKeyTextData("KeyI", "ㅑ", "ㅑ"); + this.registerKoreanKeyTextData("KeyO", "ㅐ", "ㅒ"); + this.registerKoreanKeyTextData("KeyP", "ㅔ", "ㅖ"); - this.registerKeyTextData("KeyA", "ㅁ", "ㅁ"); - this.registerKeyTextData("KeyS", "ㄴ", "ㄴ"); - this.registerKeyTextData("KeyD", "ㅇ", "ㅇ"); - this.registerKeyTextData("KeyF", "ㄹ", "ㄹ"); - this.registerKeyTextData("KeyG", "ㅎ", "ㅎ"); - this.registerKeyTextData("KeyH", "ㅗ", "ㅗ"); - this.registerKeyTextData("KeyJ", "ㅓ", "ㅓ"); - this.registerKeyTextData("KeyK", "ㅏ", "ㅏ"); - this.registerKeyTextData("KeyL", "ㅣ", "ㅣ"); + this.registerKoreanKeyTextData("KeyA", "ㅁ", "ㅁ"); + this.registerKoreanKeyTextData("KeyS", "ㄴ", "ㄴ"); + this.registerKoreanKeyTextData("KeyD", "ㅇ", "ㅇ"); + this.registerKoreanKeyTextData("KeyF", "ㄹ", "ㄹ"); + this.registerKoreanKeyTextData("KeyG", "ㅎ", "ㅎ"); + this.registerKoreanKeyTextData("KeyH", "ㅗ", "ㅗ"); + this.registerKoreanKeyTextData("KeyJ", "ㅓ", "ㅓ"); + this.registerKoreanKeyTextData("KeyK", "ㅏ", "ㅏ"); + this.registerKoreanKeyTextData("KeyL", "ㅣ", "ㅣ"); - this.registerKeyTextData("KeyZ", "ㅋ", "ㅋ"); - this.registerKeyTextData("KeyX", "ㅌ", "ㅌ"); - this.registerKeyTextData("KeyC", "ㅊ", "ㅊ"); - this.registerKeyTextData("KeyV", "ㅍ", "ㅍ"); - this.registerKeyTextData("KeyB", "ㅠ", "ㅠ"); - this.registerKeyTextData("KeyN", "ㅜ", "ㅜ"); - this.registerKeyTextData("KeyM", "ㅡ", "ㅡ"); + this.registerKoreanKeyTextData("KeyZ", "ㅋ", "ㅋ"); + this.registerKoreanKeyTextData("KeyX", "ㅌ", "ㅌ"); + this.registerKoreanKeyTextData("KeyC", "ㅊ", "ㅊ"); + this.registerKoreanKeyTextData("KeyV", "ㅍ", "ㅍ"); + this.registerKoreanKeyTextData("KeyB", "ㅠ", "ㅠ"); + this.registerKoreanKeyTextData("KeyN", "ㅜ", "ㅜ"); + this.registerKoreanKeyTextData("KeyM", "ㅡ", "ㅡ"); } - registerKeyTextData(keyID, normalText, shiftText) { - this.keyboardKeyMap[keyID] = new KeyTextData(normalText, shiftText); + registerFunctionKeyTextData(keyID, normalText, shiftText) { + if(this.keyboardKeyMap[keyID] === undefined) { + this.keyboardKeyMap[keyID] = new KeyData(); + } + this.keyboardKeyMap[keyID].functionKey = new KeyTextData(normalText, shiftText); + + if(this.inputKeyMap[keyID] === undefined) + this.inputKeyMap[keyID] = keyID; + if(this.inputKeyMap[normalText] === undefined) + this.inputKeyMap[normalText] = keyID; + if(this.inputKeyMap[shiftText] === undefined) + this.inputKeyMap[shiftText] = keyID; + } + + registerEnglishKeyTextData(keyID, normalText, shiftText) { + if(this.keyboardKeyMap[keyID] === undefined) { + this.keyboardKeyMap[keyID] = new KeyData(); + } + this.keyboardKeyMap[keyID].englishKey = new KeyTextData(normalText, shiftText); + + if(this.inputKeyMap[keyID] === undefined) + this.inputKeyMap[keyID] = keyID; + if(this.inputKeyMap[normalText] === undefined) + this.inputKeyMap[normalText] = keyID; + if(this.inputKeyMap[shiftText] === undefined) + this.inputKeyMap[shiftText] = keyID; + } + + registerKoreanKeyTextData(keyID, normalText, shiftText) { + if(this.keyboardKeyMap[keyID] === undefined) { + this.keyboardKeyMap[keyID] = new KeyData(); + } + this.keyboardKeyMap[keyID].koreanKey = new KeyTextData(normalText, shiftText); if(this.inputKeyMap[keyID] === undefined) this.inputKeyMap[keyID] = keyID; @@ -136,20 +178,52 @@ class KeyMapper { } - getNormalText(keyID) { + getNormalText(keyID, language) { if(this.keyboardKeyMap[keyID] === undefined) { console.log(keyID); return "?"; } - return this.keyboardKeyMap[keyID].normalText; + + // console.log(keyID); + // console.log(language); + // console.log(this.keyboardKeyMap[keyID]); + let keyData = this.keyboardKeyMap[keyID]; + if(language === Keyboard.ENGLISH && keyData.englishKey !== null) { + return keyData.englishKey.normalText; + } + else if(language === Keyboard.KOREAN && keyData.koreanKey !== null) { + return keyData.koreanKey.normalText; + } + else if(keyData.functionKey !== undefined) { + return keyData.functionKey.normalText; + } + else { + return "?"; + } } - getShiftText(keyID) { + getShiftText(keyID, language) { if(this.keyboardKeyMap[keyID] === undefined) { console.log(keyID); return "?"; } - return this.keyboardKeyMap[keyID].shiftText; + + // console.log(keyID); + // console.log(language); + // console.log(this.keyboardKeyMap[keyID]); + let keyData = this.keyboardKeyMap[keyID]; + if(language === Keyboard.ENGLISH && keyData.englishKey !== null) { + return keyData.englishKey.shiftText; + } + else if(language === Keyboard.KOREAN && keyData.koreanKey !== null) { + return keyData.koreanKey.shiftText; + } + else if(keyData.functionKey !== undefined) { + return keyData.functionKey.shiftText; + } + else { + return "?"; + } } @@ -160,12 +234,16 @@ class KeyMapper { isShiftText(text) { let keyID = this.getKeyIDOfText(text); - let keyTextData = this.keyboardKeyMap[keyID]; + let keyData = this.keyboardKeyMap[keyID]; - if(keyTextData.normalText === text) - return false; + if(keyData.englishKey !== null && keyData.englishKey.shiftText === text) + return true; + else if(keyData.koreanKey !== null && keyData.koreanKey.shiftText === text) + return true; + else if(keyData.functionKey !== null && keyData.functionKey.shiftText === text) + return true; - return true; + return false; } } diff --git a/src/game/typing/practice/keyboard.js b/src/game/typing/practice/keyboard.js index e2e5846..d209ea2 100644 --- a/src/game/typing/practice/keyboard.js +++ b/src/game/typing/practice/keyboard.js @@ -1,7 +1,8 @@ class Keyboard { - constructor(keyMapper) { + constructor(keyMapper, language) { this.keyMapper = keyMapper; + this.language = language; this.keyIndex = 0; this.keyDataList = []; @@ -129,8 +130,8 @@ class Keyboard { addFunctionKeyData(keyID, handSide, fingerType, x, y, width, height, type) { - let normalText = this.keyMapper.getNormalText(keyID); - let shiftText = this.keyMapper.getShiftText(keyID); + let normalText = this.keyMapper.getNormalText(keyID, this.language); + let shiftText = this.keyMapper.getShiftText(keyID, this.language); let newKey = this.makeKeyDataObject( keyID, @@ -146,8 +147,8 @@ class Keyboard { addNextFunctionKeyData(keyID, handSide, fingerType, width, height, type) { let prevKey = this.keyDataList[this.keyIndex - 1]; - let normalText = this.keyMapper.getNormalText(keyID); - let shiftText = this.keyMapper.getShiftText(keyID); + let normalText = this.keyMapper.getNormalText(keyID, this.language); + let shiftText = this.keyMapper.getShiftText(keyID, this.language); let newKey = this.makeKeyDataObject( keyID, @@ -165,8 +166,8 @@ class Keyboard { addNextNormalKeyData(keyID, handSide, fingerType) { let prevKey = this.keyDataList[this.keyIndex - 1]; - let normalText = this.keyMapper.getNormalText(keyID); - let shiftText = this.keyMapper.getShiftText(keyID); + let normalText = this.keyMapper.getNormalText(keyID, this.language); + let shiftText = this.keyMapper.getShiftText(keyID, this.language); let newKey = this.makeNextNormalKeyDataObject( keyID, @@ -329,7 +330,7 @@ class Keyboard { KeyButton.LEFT_FUNCTION_KEY ); this.addNextFunctionKeyData( - "chinese", + "Chinese", KeyButton.LEFT_HAND, KeyButton.NONE_FINGER, Keyboard.CHINESE_KEY_WIDTH_PX, @@ -345,7 +346,7 @@ class Keyboard { KeyButton.CENTER_FUNCTION_KEY ); this.addNextFunctionKeyData( - "korean_english", + "KoreanEnglish", KeyButton.RIGHT_HAND, KeyButton.NONE_FINGER, Keyboard.KOREAN_ENGLISH_KEY_WIDTH_PX, @@ -373,6 +374,9 @@ class Keyboard { } +Keyboard.ENGLISH = "english"; +Keyboard.KOREAN = "korean"; + Keyboard.DEFAULT_KEY_SIZE_PX = 46; Keyboard.BACKSPACE_KEY_WIDTH_PX = Keyboard.DEFAULT_KEY_SIZE_PX * 1.5; Keyboard.TAB_KEY_WIDTH_PX = Keyboard.DEFAULT_KEY_SIZE_PX * 1.5; diff --git a/src/web/client/typing_practice.html b/src/web/client/typing_practice.html index f89df3e..634f5f4 100644 --- a/src/web/client/typing_practice.html +++ b/src/web/client/typing_practice.html @@ -52,8 +52,6 @@ - - diff --git a/test/db_connect_manager.html b/test/db_connect_manager.html index 35d9e59..1cc9331 100644 --- a/test/db_connect_manager.html +++ b/test/db_connect_manager.html @@ -19,6 +19,6 @@ - + \ No newline at end of file diff --git a/test/key_mapper.js b/test/key_mapper.js index 07f454d..0b8fa69 100644 --- a/test/key_mapper.js +++ b/test/key_mapper.js @@ -1,71 +1,70 @@ -let englishKeyMapper = new EnglishKeyMapper(); -let koreanKeyMapper = new KoreanKeyMapper(); +let keyMapper = new KeyMapper(); QUnit.test( "getNormalText", function( assert ) { - assert.equal(englishKeyMapper.getNormalText("Backquote"), "`", "getNormalText - `"); - assert.equal(englishKeyMapper.getNormalText("Slash"), "/", "getNormalText - /"); + assert.equal(keyMapper.getNormalText("Backquote"), "`", "getNormalText - `"); + assert.equal(keyMapper.getNormalText("Slash"), "/", "getNormalText - /"); - assert.equal(englishKeyMapper.getNormalText("KeyQ"), "q", "getNormalText - q"); - assert.equal(englishKeyMapper.getNormalText("KeyM"), "m", "getNormalText - m"); + assert.equal(keyMapper.getNormalText("KeyQ"), "q", "getNormalText - q"); + assert.equal(keyMapper.getNormalText("KeyM"), "m", "getNormalText - m"); - assert.equal(koreanKeyMapper.getNormalText("KeyQ"), "ㅂ", "getNormalText - ㅂ"); - assert.equal(koreanKeyMapper.getNormalText("KeyM"), "ㅡ", "getNormalText - ㅡ"); + assert.equal(keyMapper.getNormalText("KeyQ"), "ㅂ", "getNormalText - ㅂ"); + assert.equal(keyMapper.getNormalText("KeyM"), "ㅡ", "getNormalText - ㅡ"); }); QUnit.test( "getShiftText", function( assert ) { - assert.equal(englishKeyMapper.getShiftText("Backquote"), "~", "getShiftText - ~"); - assert.equal(englishKeyMapper.getShiftText("Slash"), "?", "getShiftText - ?"); + assert.equal(keyMapper.getShiftText("Backquote"), "~", "getShiftText - ~"); + assert.equal(keyMapper.getShiftText("Slash"), "?", "getShiftText - ?"); - assert.equal(englishKeyMapper.getShiftText("KeyQ"), "Q", "getShiftText - Q"); - assert.equal(englishKeyMapper.getShiftText("KeyM"), "M", "getShiftText - M"); + assert.equal(keyMapper.getShiftText("KeyQ"), "Q", "getShiftText - Q"); + assert.equal(keyMapper.getShiftText("KeyM"), "M", "getShiftText - M"); - assert.equal(koreanKeyMapper.getShiftText("KeyQ"), "ㅃ", "getShiftText - ㅃ"); - assert.equal(koreanKeyMapper.getShiftText("KeyM"), "ㅡ", "getShiftText - ㅡ"); + assert.equal(keyMapper.getShiftText("KeyQ"), "ㅃ", "getShiftText - ㅃ"); + assert.equal(keyMapper.getShiftText("KeyM"), "ㅡ", "getShiftText - ㅡ"); }); QUnit.test( "getShiftHandSide", function( assert ) { - assert.equal(englishKeyMapper.getShiftHandSide("Backquote"), KeyTextData.RIGHT_HAND, "getShiftHandSide - `"); - assert.equal(englishKeyMapper.getShiftHandSide("Slash"), KeyTextData.LEFT_HAND, "getShiftHandSide - /"); + assert.equal(keyMapper.getShiftHandSide("Backquote"), KeyTextData.RIGHT_HAND, "getShiftHandSide - `"); + assert.equal(keyMapper.getShiftHandSide("Slash"), KeyTextData.LEFT_HAND, "getShiftHandSide - /"); - assert.equal(englishKeyMapper.getShiftHandSide("Space"), KeyTextData.BOTH_HAND, "getShiftHandSide - space"); + assert.equal(keyMapper.getShiftHandSide("Space"), KeyTextData.BOTH_HAND, "getShiftHandSide - space"); - assert.equal(englishKeyMapper.getShiftHandSide("KeyQ"), KeyTextData.RIGHT_HAND, "getShiftHandSide - q"); - assert.equal(englishKeyMapper.getShiftHandSide("KeyM"), KeyTextData.LEFT_HAND, "getShiftHandSide - m"); + assert.equal(keyMapper.getShiftHandSide("KeyQ"), KeyTextData.RIGHT_HAND, "getShiftHandSide - q"); + assert.equal(keyMapper.getShiftHandSide("KeyM"), KeyTextData.LEFT_HAND, "getShiftHandSide - m"); - assert.equal(koreanKeyMapper.getShiftHandSide("KeyQ"), KeyTextData.RIGHT_HAND, "getShiftHandSide - q"); - assert.equal(koreanKeyMapper.getShiftHandSide("KeyM"), KeyTextData.LEFT_HAND, "getShiftHandSide - m"); + assert.equal(keyMapper.getShiftHandSide("KeyQ"), KeyTextData.RIGHT_HAND, "getShiftHandSide - q"); + assert.equal(keyMapper.getShiftHandSide("KeyM"), KeyTextData.LEFT_HAND, "getShiftHandSide - m"); }); QUnit.test( "getKeyIDOfText", function( assert ) { - assert.equal(englishKeyMapper.getKeyIDOfText("`"), "Backquote", "getKeyIDOfText - `"); - assert.equal(englishKeyMapper.getKeyIDOfText("~"), "Backquote", "getKeyIDOfText - ~"); - assert.equal(englishKeyMapper.getKeyIDOfText("/"), "Slash", "getKeyIDOfText - /"); - assert.equal(englishKeyMapper.getKeyIDOfText("?"), "Slash", "getKeyIDOfText - ?"); + assert.equal(keyMapper.getKeyIDOfText("`"), "Backquote", "getKeyIDOfText - `"); + assert.equal(keyMapper.getKeyIDOfText("~"), "Backquote", "getKeyIDOfText - ~"); + assert.equal(keyMapper.getKeyIDOfText("/"), "Slash", "getKeyIDOfText - /"); + assert.equal(keyMapper.getKeyIDOfText("?"), "Slash", "getKeyIDOfText - ?"); - assert.equal(englishKeyMapper.getKeyIDOfText("q"), "KeyQ", "getKeyIDOfText - q"); - assert.equal(englishKeyMapper.getKeyIDOfText("Q"), "KeyQ", "getKeyIDOfText - Q"); - assert.equal(englishKeyMapper.getKeyIDOfText("m"), "KeyM", "getKeyIDOfText - m"); - assert.equal(englishKeyMapper.getKeyIDOfText("M"), "KeyM", "getKeyIDOfText - M"); + assert.equal(keyMapper.getKeyIDOfText("q"), "KeyQ", "getKeyIDOfText - q"); + assert.equal(keyMapper.getKeyIDOfText("Q"), "KeyQ", "getKeyIDOfText - Q"); + assert.equal(keyMapper.getKeyIDOfText("m"), "KeyM", "getKeyIDOfText - m"); + assert.equal(keyMapper.getKeyIDOfText("M"), "KeyM", "getKeyIDOfText - M"); - assert.equal(koreanKeyMapper.getKeyIDOfText("ㅂ"), "KeyQ", "getKeyIDOfText - ㅂ"); - assert.equal(koreanKeyMapper.getKeyIDOfText("ㅃ"), "KeyQ", "getKeyIDOfText - ㅃ"); - assert.equal(koreanKeyMapper.getKeyIDOfText("ㅡ"), "KeyM", "getKeyIDOfText - ㅡ"); + assert.equal(keyMapper.getKeyIDOfText("ㅂ"), "KeyQ", "getKeyIDOfText - ㅂ"); + assert.equal(keyMapper.getKeyIDOfText("ㅃ"), "KeyQ", "getKeyIDOfText - ㅃ"); + assert.equal(keyMapper.getKeyIDOfText("ㅡ"), "KeyM", "getKeyIDOfText - ㅡ"); - assert.equal(koreanKeyMapper.getKeyIDOfText("Backspace"), "Backspace", "getKeyIDOfText - ㅂ"); + assert.equal(keyMapper.getKeyIDOfText("Backspace"), "Backspace", "getKeyIDOfText - ㅂ"); }); QUnit.test( "getShiftTypeOfText", function( assert ) { - assert.equal(englishKeyMapper.getShiftTypeOfText("`"), KeyTextData.RIGHT_HAND, "getShiftHandSide - `"); - assert.equal(englishKeyMapper.getShiftTypeOfText("/"), KeyTextData.LEFT_HAND, "getShiftHandSide - /"); + assert.equal(keyMapper.getShiftTypeOfText("`"), KeyTextData.RIGHT_HAND, "getShiftHandSide - `"); + assert.equal(keyMapper.getShiftTypeOfText("/"), KeyTextData.LEFT_HAND, "getShiftHandSide - /"); - assert.equal(englishKeyMapper.getShiftTypeOfText("q"), KeyTextData.RIGHT_HAND, "getShiftHandSide - q"); - assert.equal(englishKeyMapper.getShiftTypeOfText("m"), KeyTextData.LEFT_HAND, "getShiftHandSide - m"); + assert.equal(keyMapper.getShiftTypeOfText("q"), KeyTextData.RIGHT_HAND, "getShiftHandSide - q"); + assert.equal(keyMapper.getShiftTypeOfText("m"), KeyTextData.LEFT_HAND, "getShiftHandSide - m"); - assert.equal(koreanKeyMapper.getShiftTypeOfText("ㅂ"), KeyTextData.RIGHT_HAND, "getShiftHandSide - ㅂ"); - assert.equal(koreanKeyMapper.getShiftTypeOfText("ㅃ"), KeyTextData.RIGHT_HAND, "getShiftHandSide - ㅃ"); - assert.equal(koreanKeyMapper.getShiftTypeOfText("ㅡ"), KeyTextData.LEFT_HAND, "getShiftHandSide - ㅡ"); + assert.equal(keyMapper.getShiftTypeOfText("ㅂ"), KeyTextData.RIGHT_HAND, "getShiftHandSide - ㅂ"); + assert.equal(keyMapper.getShiftTypeOfText("ㅃ"), KeyTextData.RIGHT_HAND, "getShiftHandSide - ㅃ"); + assert.equal(keyMapper.getShiftTypeOfText("ㅡ"), KeyTextData.LEFT_HAND, "getShiftHandSide - ㅡ"); }); diff --git a/test/ranking_record_manager.js b/test/ranking_record_manager.js index 440f111..93546d2 100644 --- a/test/ranking_record_manager.js +++ b/test/ranking_record_manager.js @@ -20,8 +20,8 @@ QUnit.test( "getAt", function( assert ) { assert.equal(rankingRecordManager.getUserNameAt(0), "김남희"); assert.equal(rankingRecordManager.getUserNameAt(4), "신현주"); - assert.equal(rankingRecordManager.getScoreAt(0), 1400); - assert.equal(rankingRecordManager.getScoreAt(4), 600); + assert.equal(rankingRecordManager.getBestRecordAt(0), 1400); + assert.equal(rankingRecordManager.getBestRecordAt(4), 600); }); QUnit.test( "clear", function( assert ) { diff --git a/test/tdd.html b/test/tdd.html index 1ac8142..b23d584 100644 --- a/test/tdd.html +++ b/test/tdd.html @@ -1,15 +1,30 @@ - - - QUnit Example - + + + Mata + -
-
- - +
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/tdd.js b/test/tdd.js index d979b97..b264b60 100644 --- a/test/tdd.js +++ b/test/tdd.js @@ -1,3 +1,522 @@ +////////////////////////////////////////////////// +// KeyMapper + +let keyMapper = new KeyMapper(); + +QUnit.test( "KeyMapper - getNormalText", function( assert ) { + assert.equal(keyMapper.getNormalText("Backquote"), "`", "getNormalText - `"); + assert.equal(keyMapper.getNormalText("Slash"), "/", "getNormalText - /"); + + assert.equal(keyMapper.getNormalText("KeyQ", Keyboard.ENGLISH), "q", "getNormalText - q"); + assert.equal(keyMapper.getNormalText("KeyM", Keyboard.ENGLISH), "m", "getNormalText - m"); + + assert.equal(keyMapper.getNormalText("KeyQ", Keyboard.KOREAN), "ㅂ", "getNormalText - ㅂ"); + assert.equal(keyMapper.getNormalText("KeyM", Keyboard.KOREAN), "ㅡ", "getNormalText - ㅡ"); +}); + +QUnit.test( "KeyMapper - getShiftText", function( assert ) { + assert.equal(keyMapper.getShiftText("Backquote"), "~", "getShiftText - ~"); + assert.equal(keyMapper.getShiftText("Slash"), "?", "getShiftText - ?"); + + assert.equal(keyMapper.getShiftText("KeyQ", Keyboard.ENGLISH), "Q", "getShiftText - Q"); + assert.equal(keyMapper.getShiftText("KeyM", Keyboard.ENGLISH), "M", "getShiftText - M"); + + assert.equal(keyMapper.getShiftText("KeyQ", Keyboard.KOREAN), "ㅃ", "getShiftText - ㅃ"); + assert.equal(keyMapper.getShiftText("KeyM", Keyboard.KOREAN), "ㅡ", "getShiftText - ㅡ"); +}); + +/* +QUnit.test( "KeyMapper - getShiftHandSide", function( assert ) { + assert.equal(keyMapper.getShiftHandSide("Backquote"), KeyTextData.RIGHT_HAND, "getShiftHandSide - `"); + assert.equal(keyMapper.getShiftHandSide("Slash"), KeyTextData.LEFT_HAND, "getShiftHandSide - /"); + + assert.equal(keyMapper.getShiftHandSide("Space"), KeyTextData.BOTH_HAND, "getShiftHandSide - space"); + + assert.equal(keyMapper.getShiftHandSide("KeyQ"), KeyTextData.RIGHT_HAND, "getShiftHandSide - q"); + assert.equal(keyMapper.getShiftHandSide("KeyM"), KeyTextData.LEFT_HAND, "getShiftHandSide - m"); + + assert.equal(keyMapper.getShiftHandSide("KeyQ", Keyboard.KOREAN), KeyTextData.RIGHT_HAND, "getShiftHandSide - q"); + assert.equal(keyMapper.getShiftHandSide("KeyM", Keyboard.KOREAN), KeyTextData.LEFT_HAND, "getShiftHandSide - m"); +}); +*/ + + + +QUnit.test( "KeyMapper - getKeyIDOfText", function( assert ) { + assert.equal(keyMapper.getKeyIDOfText("`"), "Backquote", "getKeyIDOfText - `"); + assert.equal(keyMapper.getKeyIDOfText("~"), "Backquote", "getKeyIDOfText - ~"); + assert.equal(keyMapper.getKeyIDOfText("/"), "Slash", "getKeyIDOfText - /"); + assert.equal(keyMapper.getKeyIDOfText("?"), "Slash", "getKeyIDOfText - ?"); + + assert.equal(keyMapper.getKeyIDOfText("q"), "KeyQ", "getKeyIDOfText - q"); + assert.equal(keyMapper.getKeyIDOfText("Q"), "KeyQ", "getKeyIDOfText - Q"); + assert.equal(keyMapper.getKeyIDOfText("m"), "KeyM", "getKeyIDOfText - m"); + assert.equal(keyMapper.getKeyIDOfText("M"), "KeyM", "getKeyIDOfText - M"); + + assert.equal(keyMapper.getKeyIDOfText("ㅂ"), "KeyQ", "getKeyIDOfText - ㅂ"); + assert.equal(keyMapper.getKeyIDOfText("ㅃ"), "KeyQ", "getKeyIDOfText - ㅃ"); + assert.equal(keyMapper.getKeyIDOfText("ㅡ"), "KeyM", "getKeyIDOfText - ㅡ"); + + assert.equal(keyMapper.getKeyIDOfText("Backspace"), "Backspace", "getKeyIDOfText - ㅂ"); +}); + +QUnit.test( "KeyMapper - isShiftText", function( assert ) { + assert.equal(keyMapper.isShiftText("`"), false, "isShiftText - `"); + assert.equal(keyMapper.isShiftText("~"), true, "isShiftText - ~"); + assert.equal(keyMapper.isShiftText("/"), false, "isShiftText - /"); + assert.equal(keyMapper.isShiftText("?"), true, "isShiftText - ?"); + + assert.equal(keyMapper.isShiftText("q"), false, "isShiftText - q"); + assert.equal(keyMapper.isShiftText("Q"), true, "isShiftText - Q"); + assert.equal(keyMapper.isShiftText("m"), false, "isShiftText - m"); + assert.equal(keyMapper.isShiftText("M"), true, "isShiftText - M"); + + assert.equal(keyMapper.isShiftText("ㅂ"), false, "isShiftText - ㅂ"); + assert.equal(keyMapper.isShiftText("ㅃ"), true, "isShiftText - ㅃ"); + assert.equal(keyMapper.isShiftText("ㅡ"), true, "isShiftText - ㅡ"); +}); + + + +////////////////////////////////////////////////// +// DBConnectManager + +let dbConnectManager = new DBConnectManager(); +dbConnectManager.setMaestroID(0); +dbConnectManager.setPlayerID(0); +dbConnectManager.setDateTime("2018-05-16", "14:50:00"); + +QUnit.test( "DBConnectManager - User login", function( assert ) { + let returnPlayerID = -1; + + let done = assert.async(); + setTimeout(function() { + dbConnectManager.requestCheckUserLogin( + "jisangs", "test", "111111", + (jsonData) => { + returnPlayerID = jsonData["UserID"]; + assert.equal(returnPlayerID, 31); + done(); + }, + (jsonData) => { + console.log(jsonData); + done(); + } + ); + }); +}); + +QUnit.test( "DBConnectManager - Player history", function( assert ) { + sessionStorageManager.maestroID = 1; // jisangs + sessionStorageManager.playerUserID = "8"; // 부현율 + sessionStorageManager.playingAppID = 29; + let date = "2018-05-16"; + + let done = assert.async(); + setTimeout(function() { + dbConnectManager.requestPlayerHistory( + 1, // maestroID for jisangs + date, + (historyRecordManager) => { + // console.log(historyRecordManager); + + assert.equal(historyRecordManager.getAppNameAt(0), "test_korean_word"); + assert.equal(historyRecordManager.getDateAt(0), "2018-05-16"); + assert.equal(historyRecordManager.getBestRecordAt(0), 108.248); + + assert.equal(historyRecordManager.getAppNameAt(4), "test_korean_word"); + assert.equal(historyRecordManager.getDateAt(4), "2018-04-23"); + assert.equal(historyRecordManager.getBestRecordAt(4), 74.2234); + + done(); + } + ); + }); +}); + +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.getUserIDAt(0), 5, "hour"); + assert.equal(rankingRecordManager.getUserNameAt(0), "김지유", "hour"); + + assert.equal(rankingRecordManager.getRankAt(5), 6, "hour"); + assert.equal(rankingRecordManager.getBestRecordAt(5), 128.436, "hour"); + assert.equal(rankingRecordManager.getUserIDAt(5), 22, "hour"); + assert.equal(rankingRecordManager.getUserNameAt(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.getUserIDAt(0), 19, "day"); + assert.equal(rankingRecordManager.getUserNameAt(0), "오지운", "day"); + + assert.equal(rankingRecordManager.getRankAt(17), 18, "day"); + assert.equal(rankingRecordManager.getBestRecordAt(17), 65.337, "day"); + assert.equal(rankingRecordManager.getUserIDAt(17), 20, "day"); + assert.equal(rankingRecordManager.getUserNameAt(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.getUserIDAt(0), 50, "month"); + assert.equal(rankingRecordManager.getUserNameAt(0), "강민준", "month"); + + assert.equal(rankingRecordManager.getRankAt(17), 18, "month"); + assert.equal(rankingRecordManager.getBestRecordAt(17), 216.279, "month"); + assert.equal(rankingRecordManager.getUserIDAt(17), 9, "month"); + assert.equal(rankingRecordManager.getUserNameAt(17), "신예성", "month"); + + done(); + } + ); + }); + +}); + +QUnit.test( "DBConnectManager - HowToPlay", function( assert ) { + let howToPlayForSpaceInvaders = "외계인이 나타났다!\\n마우스 왼쪽 버튼으로\\n외계인을 클릭해서 물리쳐 주세요."; + + let done = assert.async(2); + + setTimeout(function() { + dbConnectManager.requestHowToPlay( + 101, // space_invaders app ID + (jsonData) => { + let howToPlay = jsonData["HowToPlay"]; + assert.equal(howToPlay, howToPlayForSpaceInvaders); + done(); + }, + (jsonData) => { + console.log(jsonData); + done(); + } + ); + + dbConnectManager.requestHowToPlay( + 1, // korean basic typing + (jsonData) => { + let howToPlay = jsonData["HowToPlay"]; + assert.equal(howToPlay, ""); + done(); + }, + (jsonData) => { + console.log(jsonData); + done(); + } + ); + }); +}); + + +QUnit.test( "DBConnectManager - UpdateRecord", function( assert ) { + let todayBestRecord = 0; + + let done = assert.async(); + + setTimeout(function() { + dbConnectManager.requestTodayBestRecord( + 1, // maestro ID for "jisangs" + 1, // user ID for jisangs + 101, // space_invaders app ID + (jsonData) => { + todayBestRecord = jsonData["BestRecord"]; + }, + (jsonData) => { + console.log(jsonData); + todayBestRecord = 0; + } + ); + }); + + setTimeout(function() { + dbConnectManager.updateTodayBestRecord( + 1, // maestro ID for "jisangs" + 1, // user ID for jisangs + 101, // space_invaders app ID + todayBestRecord + 1000 // new record + ); + }, 100); + + setTimeout(function() { + dbConnectManager.requestTodayBestRecord( + 1, // maestro ID for "jisangs" + 1, // user ID for jisangs + 101, // space_invaders app ID + (jsonData) => { + let bestRecord = jsonData["BestRecord"]; + assert.equal(bestRecord, todayBestRecord + 1000); + done(); + }, + (jsonData) => { + console.log(jsonData); + done(); + } + ); + }, 200); +}); + + +////////////////////////////////////////////////// +// HeartManager + +let heartManager = new HeartManager(); + +QUnit.test( "HeartManager - MaxCount", function( assert ) { + heartManager.setCount(3); + assert.equal(heartManager.getCount(), 3); + + heartManager.setMaxCount(5); + assert.equal(heartManager.getCount(), 3); + + heartManager.setMaxCount(3); + assert.equal(heartManager.getCount(), 3); + + heartManager.setMaxCount(2); + assert.equal(heartManager.getCount(), 2); +}); + + +QUnit.test( "HeartManager - setCount", function( assert ) { + heartManager.setMaxCount(3); + + heartManager.setCount(3); + assert.equal(heartManager.getCount(), 3); + + heartManager.setCount(2); + assert.equal(heartManager.getCount(), 2); +}); + + +QUnit.test( "HeartManager - addHearts", function( assert ) { + heartManager.setMaxCount(3); + + heartManager.setCount(1); + assert.equal(heartManager.getCount(), 1); + + heartManager.addHearts(1); + assert.equal(heartManager.getCount(), 2); + + heartManager.setCount(1); + assert.equal(heartManager.getCount(), 1); + + heartManager.addHearts(2); + assert.equal(heartManager.getCount(), 3); + + heartManager.setCount(1); + assert.equal(heartManager.getCount(), 1); + + heartManager.addHearts(3); + assert.equal(heartManager.getCount(), 3); +}); + + +QUnit.test( "HeartManager - breakHearts", function( assert ) { + heartManager.setMaxCount(3); + + heartManager.setCount(3); + assert.equal(heartManager.getCount(), 3); + + heartManager.breakHearts(1); + assert.equal(heartManager.getCount(), 2); + + heartManager.breakHearts(2); + assert.equal(heartManager.getCount(), 0); +}); + + +////////////////////////////////////////////////// +// HistoryRecordManager + +let historyRecordManager = new HistoryRecordManager(); + +historyRecordManager.push(new HistoryRecord("05/10", "space_invaders", 1000)); +historyRecordManager.push(new HistoryRecord("05/11", "typing_korean_basic", 100)); +historyRecordManager.push(new HistoryRecord("05/12", "cooking_meats", 200)); +historyRecordManager.push(new HistoryRecord("05/13", "typing_english_basic", 2000)); +historyRecordManager.push(new HistoryRecord("05/14", "test", 10000)); + +QUnit.test( "HistoryRecordManager - push", function( assert ) { + assert.equal(historyRecordManager.count, 5); +}); + +QUnit.test( "HistoryRecordManager - getAt", function( assert ) { + assert.equal(historyRecordManager.getDateAt(0), "05/10"); + assert.equal(historyRecordManager.getDateAt(4), "05/14"); + + assert.equal(historyRecordManager.getAppNameAt(0), "space_invaders"); + assert.equal(historyRecordManager.getAppNameAt(4), "test"); +}); + +QUnit.test( "HistoryRecordManager - clear", function( assert ) { + let historyRecordManagerForClear = new HistoryRecordManager(); + historyRecordManagerForClear.push(new HistoryRecord("05/10", "space_invaders", 1)); + historyRecordManagerForClear.clear(); + + assert.equal(historyRecordManagerForClear.count, 0); +}); + +QUnit.test( "HistoryRecordManager - underValueForGraph", function( assert ) { + assert.equal(historyRecordManager.underValueForGraph(), 100); +}); + +QUnit.test( "HistoryRecordManager - upperValueForGraph", function( assert ) { + assert.equal(historyRecordManager.upperValueForGraph(), 10000); +}); + + + +////////////////////////////////////////////////// +// NumberUtil + +QUnit.test( "NumberUtil - NumberWithCommas", function( assert ) { + assert.equal(NumberUtil.numberWithCommas(1), "1", "NumberWithCommas"); + assert.equal(NumberUtil.numberWithCommas(1000), "1,000", "NumberWithCommas"); + assert.equal(NumberUtil.numberWithCommas(100000), "100,000", "NumberWithCommas"); + assert.equal(NumberUtil.numberWithCommas(1000000), "1,000,000", "NumberWithCommas"); +}); + +QUnit.test( "NumberUtil - NumberOfDigits", function( assert ) { + assert.equal(NumberUtil.numberOfDigits(1), 1); + assert.equal(NumberUtil.numberOfDigits(10), 2); + assert.equal(NumberUtil.numberOfDigits(100), 3); + assert.equal(NumberUtil.numberOfDigits(999), 3); + assert.equal(NumberUtil.numberOfDigits(1000), 4); + assert.equal(NumberUtil.numberOfDigits(9999), 4); + assert.equal(NumberUtil.numberOfDigits(10000), 5); + assert.equal(NumberUtil.numberOfDigits(99999), 5); +}); + + +////////////////////////////////////////////////// +// RankingRecordManager + +let rankingRecordManager = new RankingRecordManager(); + +rankingRecordManager.push(new RankingRecord(4, 1, "김남희", 1400)); +rankingRecordManager.push(new RankingRecord(5, 2, "고봉순", 900)); +rankingRecordManager.push(new RankingRecord(6, 3, "파르마", 800)); +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); +}); + +QUnit.test( "RankingRecordManager - getAt", function( assert ) { + assert.equal(rankingRecordManager.getRankAt(0), 4); + assert.equal(rankingRecordManager.getRankAt(4), 8); + + assert.equal(rankingRecordManager.getUserIDAt(0), 1); + assert.equal(rankingRecordManager.getUserIDAt(4), 5); + + assert.equal(rankingRecordManager.getUserNameAt(0), "김남희"); + assert.equal(rankingRecordManager.getUserNameAt(4), "신현주"); + + assert.equal(rankingRecordManager.getBestRecordAt(0), 1400); + assert.equal(rankingRecordManager.getBestRecordAt(4), 600); +}); + +QUnit.test( "RankingRecordManager - clear", function( assert ) { + let rankingRecordManagerForClear = new RankingRecordManager(); + rankingRecordManagerForClear.push(new RankingRecord(8, "신현주", 600)); + rankingRecordManagerForClear.clear(); + + assert.equal(rankingRecordManagerForClear.count, 0); +}); + + +////////////////////////////////////////////////// +// ScoreManager + +let scoreManager = new ScoreManager(); + +QUnit.test( "ScoreManager - plusScore", function( assert ) { + assert.equal(scoreManager.score, 0); + scoreManager.plusScore(10); + assert.equal(scoreManager.score, 10); + scoreManager.minusScore(10); + assert.equal(scoreManager.score, 0); +}); + + +////////////////////////////////////////////////// +// SessionStorageManager + +QUnit.test( "SessionStorageManager - PlayerName", function( assert ) { + sessionStorageManager.clear(); + assert.equal(sessionStorageManager.playerName, null, "playerName"); + + sessionStorageManager.playerName = "박지상"; + assert.equal(sessionStorageManager.playerName, "박지상", "playerName"); + + sessionStorageManager.removeItem("playerName"); + assert.equal(sessionStorageManager.playerName, null, "playerName"); +}); + +QUnit.test( "SessionStorageManager - playerUserID", function( assert ) { + sessionStorageManager.clear(); + assert.equal(sessionStorageManager.playerUserID, null, "playerUserID"); + + sessionStorageManager.playerUserID = 1; + assert.equal(sessionStorageManager.playerUserID, 1, "playerUserID"); + + sessionStorageManager.removeItem("playerUserID"); + assert.equal(sessionStorageManager.playerUserID, null, "playerUserID"); +}); + +QUnit.test( "SessionStorageManager - playingAppName", function( assert ) { + sessionStorageManager.clear(); + assert.equal(sessionStorageManager.playingAppName, null, "playingAppName"); + + sessionStorageManager.playingAppName = "space_invaders"; + assert.equal(sessionStorageManager.playingAppName, "space_invaders", "playingAppName"); + + sessionStorageManager.removeItem("playingAppName"); + assert.equal(sessionStorageManager.playingAppName, null, "playingAppName"); +}); + + + +////////////////////////////////////////////////// +// test + QUnit.test( "hello test", function( assert ) { assert.ok( 1 == "1", "Passed!" ); }); \ No newline at end of file