aboutsummaryrefslogtreecommitdiff
path: root/node_modules/tsscmp/test
diff options
context:
space:
mode:
authornanalelfe <nargiza.nosirova@mail.utoronto.ca>2016-07-21 06:40:43 +0000
committernanalelfe <nargiza.nosirova@mail.utoronto.ca>2016-07-21 06:40:43 +0000
commit39ef1b6fd37bb9b725676d3a98f13e3450798200 (patch)
treeeeec60d5b56e5c69a3ba251d98a27f4684d47066 /node_modules/tsscmp/test
parentee8e1a13b60a6adfdc691b2a9b57289188397641 (diff)
parent76757d227f64e35a093d47facc260d9266e2bf38 (diff)
MERGED
Diffstat (limited to 'node_modules/tsscmp/test')
-rw-r--r--node_modules/tsscmp/test/benchmark/index.js30
-rw-r--r--node_modules/tsscmp/test/unit/index.js69
2 files changed, 99 insertions, 0 deletions
diff --git a/node_modules/tsscmp/test/benchmark/index.js b/node_modules/tsscmp/test/benchmark/index.js
new file mode 100644
index 0000000..fd93e42
--- /dev/null
+++ b/node_modules/tsscmp/test/benchmark/index.js
@@ -0,0 +1,30 @@
+'use strict';
+
+var timeSafeCompare = require('../../lib/index');
+
+function random(length) {
+
+ length = length || 32;
+ var result = "";
+ var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-+/*[]{}-=\|;\':\"<>?,./";
+
+ for( var i=0; i < length; i++ ){
+ result += possible.charAt(Math.floor(Math.random() * possible.length));
+ }
+ return result;
+}
+
+function run(count) {
+ count = count || 100*1000;
+ console.log('benchmark count: ' + count/1000 + 'k');
+ console.time('benchmark');
+
+ while(count--){
+ timeSafeCompare(random(), random());
+ }
+ console.timeEnd('benchmark');
+}
+
+run(100000);
+
+module.exports = run;
diff --git a/node_modules/tsscmp/test/unit/index.js b/node_modules/tsscmp/test/unit/index.js
new file mode 100644
index 0000000..0335423
--- /dev/null
+++ b/node_modules/tsscmp/test/unit/index.js
@@ -0,0 +1,69 @@
+'use strict';
+
+var assert = require('assert');
+var timeSafeCompare = require('../../lib/index');
+
+process.on('error', function (e) {
+ console.log('caught: ' + e);
+});
+
+function testEqual(a, b) {
+ assert(timeSafeCompare(a, b));
+
+ // lets also do a parity check with the strict equal to operator
+ assert(a === b);
+}
+
+function testNotEqual(a, b) {
+ assert(!timeSafeCompare(a, b));
+
+ // lets also do a parity check with the strict not equal to operator
+ assert(a !== b);
+}
+
+// note: lets also make sure tsscmp can be inline replaced for any types -
+// just incase if anyone is interested
+
+// positive tests
+testEqual('127e6fbfe24a750e72930c220a8e138275656b8e5d8f48a98c3c92df2caba935',
+ '127e6fbfe24a750e72930c220a8e138275656b8e5d8f48a98c3c92df2caba935',
+ 'test ');
+testEqual('a', 'a');
+testEqual('', '');
+testEqual(undefined, undefined);
+testEqual(true, true);
+testEqual(false, false);
+(function () {
+ var a = { a: 1 };
+ testEqual(a, a);
+})();
+(function () {
+ function f1() { return 1; };
+ testEqual(f1, f1);
+})();
+
+// negative tests
+testNotEqual('');
+testNotEqual('a', 'b');
+testNotEqual('a', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
+testNotEqual('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'a');
+testNotEqual('alpha', 'beta');
+testNotEqual(false, true);
+testNotEqual(false, undefined);
+testNotEqual(function () { }, function () { });
+testNotEqual({}, {});
+testNotEqual({ a: 1 }, { a: 1 });
+testNotEqual({ a: 1 }, { a: 2 });
+testNotEqual([1, 2], [1, 2]);
+testNotEqual([1, 2], [1, 2, 3]);
+(function () {
+ var a = { p: 1 };
+ var b = { p: 1 };
+ testNotEqual(a, b);
+})();
+(function () {
+ function f1() { return 1; };
+ function f2() { return 1; };
+ testNotEqual(f1, f2);
+})();
+console.log('Success: all tests complete.');