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 @@
+
+
+