diff --git a/DataStorage/LocalStorage.js b/DataStorage/LocalStorage.js index e9d6137..1ce39f6 100644 --- a/DataStorage/LocalStorage.js +++ b/DataStorage/LocalStorage.js @@ -31,15 +31,13 @@ * * @since 1.0.0 */ - - } - - jsOMS.DataStorage.LocalStorage.available = function () - { - try { - return 'localStorage' in window && window.localStorage !== null; - } catch (e) { - return false; - } + static available() + { + try { + return 'localStorage' in window && window.localStorage !== null; + } catch (e) { + return false; + } + }; }; }(window.jsOMS = window.jsOMS || {})); diff --git a/Log/LogLevel.enum.js b/Log/LogLevel.js similarity index 100% rename from Log/LogLevel.enum.js rename to Log/LogLevel.js diff --git a/Log/Logger.js b/Log/Logger.js index 133b7c5..0dc05f3 100644 --- a/Log/Logger.js +++ b/Log/Logger.js @@ -22,11 +22,11 @@ * * @since 1.0.0 */ - constructor (verbose, ui, remote) + constructor (verbose = true, ui = true, remote = false) { - this.verbose = typeof verbose !== 'undefined' ? verbose : true; - this.ui = typeof ui !== 'undefined' ? ui : true; - this.remote = typeof remote !== 'undefined' ? remote : false; + this.verbose = verbose; + this.ui = ui; + this.remote = remote; }; /** @@ -42,7 +42,7 @@ * * @since 1.0.0 */ - static getInstance (verbose, ui, remote) + static getInstance (verbose = true, ui = true, remote = false) { if(!jsOMS.Log.Logger.instance) { jsOMS.Log.Logger.instance = new jsOMS.Log.Logger(verbose, ui, remote); @@ -66,15 +66,15 @@ */ interpolate (message, context, level) { - let newMessage = jsOMS.Log.Logger.MSG_FULL; + message = typeof message === 'undefined' ? jsOMS.Log.Logger.MSG_FULL : message; for (let replace in context) { if (context.hasOwnProperty(replace)) { - newMessage = newMessage.replace('{' + replace + '}', context[replace]); + message = message.replace('{' + replace + '}', context[replace]); } } - return newMessage; + return message; }; /** @@ -121,30 +121,7 @@ context = this.createContext(message, context, level); if (this.verbose) { - let color = '000'; - - switch (level) { - case 'info': - case 'notice': - case 'log': - color = '000'; - break; - case 'debug': - color = '289E39'; - break; - case 'warning': - case 'alert': - color = 'FFA600'; - break; - case 'error': - case 'critical': - case 'emergency': - color = 'CF304A'; - break; - default: - } - - console.log('%c' + this.interpolate(message, context, level), 'color: #' + color); + this.writeVerbose(message, context, level); } if (this.ui) { @@ -152,19 +129,78 @@ } if (this.remote) { - let request = new jsOMS.Message.Request.Request(); - request.setData(context); - request.setType(jsOMS.Message.Response.Response.ResponseType.JSON); - request.setUri('/{/lang}/api/log'); - request.setMethod(jsOMS.Message.Request.Request.RequestMethod.POST); - request.setRequestHeader('Content-Type', 'application/json'); - request.setSuccess(function (xhr) - { - }); - request.send(); + this.writeRemote(message, context, level); } }; + /** + * Create local log message + * + * @param {string} message Message to display + * @param {Object} [context] Context to put into message + * @param {string} level Log level + * + * @return {void} + * + * @method + * + * @since 1.0.0 + */ + writeVerbose (message, context, level) + { + let color = '000'; + + switch (level) { + case 'info': + case 'notice': + case 'log': + color = '000'; + break; + case 'debug': + color = '289E39'; + break; + case 'warning': + case 'alert': + color = 'FFA600'; + break; + case 'error': + case 'critical': + case 'emergency': + color = 'CF304A'; + break; + default: + } + + console.log('%c' + this.interpolate(message, context, level), 'color: #' + color); + }; + + /** + * Create remote log message + * + * @param {string} message Message to display + * @param {Object} [context] Context to put into message + * @param {string} level Log level + * + * @return {void} + * + * @method + * + * @since 1.0.0 + */ + writeRemote (message, context, level) + { + let request = new jsOMS.Message.Request.Request(); + request.setData(context); + request.setType(jsOMS.Message.Response.Response.ResponseType.JSON); + request.setUri('/{/lang}/api/log'); + request.setMethod(jsOMS.Message.Request.Request.RequestMethod.POST); + request.setRequestHeader('Content-Type', 'application/json'); + request.setSuccess(function (xhr) + { + }); + request.send(); + }; + /** * Create log message * @@ -322,7 +358,6 @@ /** * Create log message * - * @param {string} level Log level * @param {string} message Message to display * @param {Object} [context] Context to put into message * @@ -332,9 +367,9 @@ * * @since 1.0.0 */ - console (level, message, context = {}) + console (message, context = {}) { - this.write(message, context, jsOMS.Log.LogLevel.INFO); + this.writeVerbose(message, context, jsOMS.Log.LogLevel.INFO); }; } diff --git a/Message/Request/BrowserType.enum.js b/Message/Request/BrowserType.js similarity index 100% rename from Message/Request/BrowserType.enum.js rename to Message/Request/BrowserType.js diff --git a/Message/Request/OSType.enum.js b/Message/Request/OSType.js similarity index 100% rename from Message/Request/OSType.enum.js rename to Message/Request/OSType.js diff --git a/Message/Request/RequestData.enum.js b/Message/Request/RequestData.js similarity index 100% rename from Message/Request/RequestData.enum.js rename to Message/Request/RequestData.js diff --git a/Message/Request/RequestMethod.enum.js b/Message/Request/RequestMethod.js similarity index 100% rename from Message/Request/RequestMethod.enum.js rename to Message/Request/RequestMethod.js diff --git a/Message/Request/RequestType.enum.js b/Message/Request/RequestType.js similarity index 100% rename from Message/Request/RequestType.enum.js rename to Message/Request/RequestType.js diff --git a/tests/Log/LogLevelTest.enum b/tests/Log/LogLevelTest.enum deleted file mode 100644 index 4231885..0000000 --- a/tests/Log/LogLevelTest.enum +++ /dev/null @@ -1,12 +0,0 @@ -describe('LogLevelTest', function () -{ - "use strict"; - - beforeEach(function () - { - }); - - afterEach(function () - { - }); -} diff --git a/tests/Log/LogLevelTest.enum.js b/tests/Log/LogLevelTest.enum.js deleted file mode 100644 index fdf7680..0000000 --- a/tests/Log/LogLevelTest.enum.js +++ /dev/null @@ -1,12 +0,0 @@ -describe('LogLevelTest', function () -{ - "use strict"; - - beforeEach(function () - { - }); - - afterEach(function () - { - }); -}); diff --git a/tests/Log/LogLevelTest.js b/tests/Log/LogLevelTest.js new file mode 100644 index 0000000..df03d01 --- /dev/null +++ b/tests/Log/LogLevelTest.js @@ -0,0 +1,24 @@ +describe('LogLevelTest', function () +{ + "use strict"; + + describe('testEnum', function () + { + it('Testing amount of enums', function () + { + expect(Object.keys(jsOMS.Log.LogLevel).length).toBe(8); + }); + + it('Testing values of enums', function () + { + expect(jsOMS.Log.LogLevel.EMERGENCY).toBe('emergency'); + expect(jsOMS.Log.LogLevel.ALERT).toBe('alert'); + expect(jsOMS.Log.LogLevel.CRITICAL).toBe('critical'); + expect(jsOMS.Log.LogLevel.ERROR).toBe('error'); + expect(jsOMS.Log.LogLevel.WARNING).toBe('warning'); + expect(jsOMS.Log.LogLevel.NOTICE).toBe('notice'); + expect(jsOMS.Log.LogLevel.INFO).toBe('info'); + expect(jsOMS.Log.LogLevel.DEBUG).toBe('debug'); + }); + }); +}); diff --git a/tests/Log/LoggerTest.js b/tests/Log/LoggerTest.js index 1f0a5c0..f2c612e 100644 --- a/tests/Log/LoggerTest.js +++ b/tests/Log/LoggerTest.js @@ -2,11 +2,229 @@ describe('LoggerTest', function () { "use strict"; - beforeEach(function () + describe('testLocalLogging', function () { + it('Testing emergency functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(true, false, false); + + log.emergency(); + expect(console.log).toHaveBeenCalled(); + }); + + it('Testing alert functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(true, false, false); + + log.alert(); + expect(console.log).toHaveBeenCalled(); + }); + + it('Testing critical functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(true, false, false); + + log.critical(); + expect(console.log).toHaveBeenCalled(); + }); + + it('Testing error functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(true, false, false); + + log.error(); + expect(console.log).toHaveBeenCalled(); + }); + + it('Testing warning functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(true, false, false); + + log.warning(); + expect(console.log).toHaveBeenCalled(); + }); + + it('Testing notice functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(true, false, false); + + log.notice(); + expect(console.log).toHaveBeenCalled(); + }); + + it('Testing info functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(true, false, false); + + log.info(); + expect(console.log).toHaveBeenCalled(); + }); + + it('Testing debug functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(true, false, false); + + log.debug(); + expect(console.log).toHaveBeenCalled(); + }); + + it('Testing log functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(true, false, false); + + log.log(); + expect(console.log).toHaveBeenCalled(); + }); + + it('Testing log functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(true, false, false); + + log.log(); + expect(console.log).toHaveBeenCalled(); + }); + + it('Testing console functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(true, false, false); + + log.console(); + expect(console.log).toHaveBeenCalled(); + }); }); - afterEach(function () + describe('testInvalidLocalLogging', function () { + it('Testing emergency functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(false, false, false); + + log.emergency(); + expect(console.log).not.toHaveBeenCalled(); + }); + + it('Testing alert functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(false, false, false); + + log.alert(); + expect(console.log).not.toHaveBeenCalled(); + }); + + it('Testing critical functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(false, false, false); + + log.critical(); + expect(console.log).not.toHaveBeenCalled(); + }); + + it('Testing error functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(false, false, false); + + log.error(); + expect(console.log).not.toHaveBeenCalled(); + }); + + it('Testing warning functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(false, false, false); + + log.warning(); + expect(console.log).not.toHaveBeenCalled(); + }); + + it('Testing notice functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(false, false, false); + + log.notice(); + expect(console.log).not.toHaveBeenCalled(); + }); + + it('Testing info functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(false, false, false); + + log.info(); + expect(console.log).not.toHaveBeenCalled(); + }); + + it('Testing debug functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(false, false, false); + + log.debug(); + expect(console.log).not.toHaveBeenCalled(); + }); + + it('Testing log functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(false, false, false); + + log.log(); + expect(console.log).not.toHaveBeenCalled(); + }); + + it('Testing log functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(false, false, false); + + log.log(); + expect(console.log).not.toHaveBeenCalled(); + }); + + it('Testing console functionality', function () + { + spyOn(console, 'log'); + + let log = new jsOMS.Log.Logger(false, false, false); + + log.console(); + expect(console.log).toHaveBeenCalled(); + }); }); }); diff --git a/tests/Math/MathProcessorTest.js b/tests/Math/MathProcessorTest.js index eb3aef1..f85f8e6 100644 --- a/tests/Math/MathProcessorTest.js +++ b/tests/Math/MathProcessorTest.js @@ -7,6 +7,7 @@ describe('MathProcessorTest', function () it('Testing formula evaluation', function () { expect(jsOMS.mathEvaluate('3 + 4 * 2 / ( 1 - 5 ) ^ 2 ^ 3 + 1.5')).toBeCloseTo(4.5, 2); + expect(jsOMS.mathEvaluate('3+4*2/(1-5)^2^3+1.5')).toBeCloseTo(4.5, 2); expect(jsOMS.mathEvaluate('invalid')).toBe(null); }); }); diff --git a/tests/SpecRunner.html b/tests/SpecRunner.html index a9cd115..362f53f 100644 --- a/tests/SpecRunner.html +++ b/tests/SpecRunner.html @@ -18,7 +18,13 @@ + + + + + + @@ -33,6 +39,9 @@ + + +