summaryrefslogtreecommitdiff
path: root/jstests/core/hashtest1.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/core/hashtest1.js')
-rw-r--r--jstests/core/hashtest1.js129
1 files changed, 65 insertions, 64 deletions
diff --git a/jstests/core/hashtest1.js b/jstests/core/hashtest1.js
index d0307c2e59e..631aee522da 100644
--- a/jstests/core/hashtest1.js
+++ b/jstests/core/hashtest1.js
@@ -1,79 +1,80 @@
-//hashtest1.js
-//Simple tests to check hashing of various types
-//make sure that different numeric types hash to same thing, and other sanity checks
-
-var hash = function( v , seed ){
- if (seed)
- return db.runCommand({"_hashBSONElement" : v , "seed" : seed})["out"];
- else
- return db.runCommand({"_hashBSONElement" : v})["out"];
+// hashtest1.js
+// Simple tests to check hashing of various types
+// make sure that different numeric types hash to same thing, and other sanity checks
+
+var hash = function(v, seed) {
+ if (seed)
+ return db.runCommand({"_hashBSONElement": v, "seed": seed})["out"];
+ else
+ return db.runCommand({"_hashBSONElement": v})["out"];
};
-var oidHash = hash( ObjectId() );
-var oidHash2 = hash( ObjectId() );
-var oidHash3 = hash( ObjectId() );
-assert(! friendlyEqual( oidHash, oidHash2) , "ObjectIDs should hash to different things");
-assert(! friendlyEqual( oidHash, oidHash3) , "ObjectIDs should hash to different things");
-assert(! friendlyEqual( oidHash2, oidHash3) , "ObjectIDs should hash to different things");
-
-var intHash = hash( NumberInt(3) );
-var doubHash = hash( 3 );
-var doubHash2 = hash( 3.0 );
-var longHash = hash( NumberLong(3) );
-var fracHash = hash( NumberInt(3.5) );
-assert.eq( intHash , doubHash );
-assert.eq( intHash , doubHash2 );
-assert.eq( intHash , longHash );
-assert.eq( intHash , fracHash );
-
-var trueHash = hash( true );
-var falseHash = hash( false );
-assert(! friendlyEqual( trueHash, falseHash) , "true and false should hash to different things");
-
-var nullHash = hash( null );
-assert(! friendlyEqual( falseHash , nullHash ) , "false and null should hash to different things");
-
-var dateHash = hash( new Date() );
+var oidHash = hash(ObjectId());
+var oidHash2 = hash(ObjectId());
+var oidHash3 = hash(ObjectId());
+assert(!friendlyEqual(oidHash, oidHash2), "ObjectIDs should hash to different things");
+assert(!friendlyEqual(oidHash, oidHash3), "ObjectIDs should hash to different things");
+assert(!friendlyEqual(oidHash2, oidHash3), "ObjectIDs should hash to different things");
+
+var intHash = hash(NumberInt(3));
+var doubHash = hash(3);
+var doubHash2 = hash(3.0);
+var longHash = hash(NumberLong(3));
+var fracHash = hash(NumberInt(3.5));
+assert.eq(intHash, doubHash);
+assert.eq(intHash, doubHash2);
+assert.eq(intHash, longHash);
+assert.eq(intHash, fracHash);
+
+var trueHash = hash(true);
+var falseHash = hash(false);
+assert(!friendlyEqual(trueHash, falseHash), "true and false should hash to different things");
+
+var nullHash = hash(null);
+assert(!friendlyEqual(falseHash, nullHash), "false and null should hash to different things");
+
+var dateHash = hash(new Date());
// Sleep so we get a new date. Sleeping for 1 sometimes returns the same date, so 2
sleep(2);
-var isodateHash = hash( ISODate() );
-assert(! friendlyEqual( dateHash, isodateHash) , "different dates should hash to different things");
+var isodateHash = hash(ISODate());
+assert(!friendlyEqual(dateHash, isodateHash), "different dates should hash to different things");
-var stringHash = hash( "3" );
-assert(! friendlyEqual( intHash , stringHash ), "3 and \"3\" should hash to different things");
+var stringHash = hash("3");
+assert(!friendlyEqual(intHash, stringHash), "3 and \"3\" should hash to different things");
-var regExpHash = hash( RegExp("3") );
-assert(! friendlyEqual( stringHash , regExpHash) , "\"3\" and RegExp(3) should hash to different things");
+var regExpHash = hash(RegExp("3"));
+assert(!friendlyEqual(stringHash, regExpHash),
+ "\"3\" and RegExp(3) should hash to different things");
-var intHash4 = hash( 4 );
-assert(! friendlyEqual( intHash , intHash4 ), "3 and 4 should hash to different things");
+var intHash4 = hash(4);
+assert(!friendlyEqual(intHash, intHash4), "3 and 4 should hash to different things");
-var intHashSeeded = hash( 4 , 3 );
-assert(! friendlyEqual(intHash4 , intHashSeeded ), "different seeds should make different hashes");
+var intHashSeeded = hash(4, 3);
+assert(!friendlyEqual(intHash4, intHashSeeded), "different seeds should make different hashes");
-var minkeyHash = hash( MinKey );
-var maxkeyHash = hash( MaxKey );
-assert(! friendlyEqual(minkeyHash , maxkeyHash ), "minkey and maxkey should hash to different things");
+var minkeyHash = hash(MinKey);
+var maxkeyHash = hash(MaxKey);
+assert(!friendlyEqual(minkeyHash, maxkeyHash), "minkey and maxkey should hash to different things");
-var arrayHash = hash( [0,1.0,NumberLong(2)] );
-var arrayHash2 = hash( [0,NumberInt(1),2] );
-assert.eq( arrayHash , arrayHash2 , "didn't squash numeric types in array");
+var arrayHash = hash([0, 1.0, NumberLong(2)]);
+var arrayHash2 = hash([0, NumberInt(1), 2]);
+assert.eq(arrayHash, arrayHash2, "didn't squash numeric types in array");
-var objectHash = hash( {"0":0, "1" : NumberInt(1), "2" : 2} );
-assert(! friendlyEqual(objectHash , arrayHash2) , "arrays and sub-objects should hash to different things");
+var objectHash = hash({"0": 0, "1": NumberInt(1), "2": 2});
+assert(!friendlyEqual(objectHash, arrayHash2),
+ "arrays and sub-objects should hash to different things");
-var c = hash( {a : {}, b : 1} );
-var d = hash( {a : {b : 1}} );
-assert(! friendlyEqual( c , d ) , "hashing doesn't group sub-docs and fields correctly");
+var c = hash({a: {}, b: 1});
+var d = hash({a: {b: 1}});
+assert(!friendlyEqual(c, d), "hashing doesn't group sub-docs and fields correctly");
-var e = hash( {a : 3 , b : [NumberLong(3), {c : NumberInt(3)}]} );
-var f = hash( {a : NumberLong(3) , b : [NumberInt(3), {c : 3.0}]} );
-assert.eq( e , f , "recursive number squashing doesn't work");
+var e = hash({a: 3, b: [NumberLong(3), {c: NumberInt(3)}]});
+var f = hash({a: NumberLong(3), b: [NumberInt(3), {c: 3.0}]});
+assert.eq(e, f, "recursive number squashing doesn't work");
-var nanHash = hash( 0/0 );
-var zeroHash = hash( 0 );
-assert.eq( nanHash , zeroHash , "NaN and Zero should hash to the same thing");
+var nanHash = hash(0 / 0);
+var zeroHash = hash(0);
+assert.eq(nanHash, zeroHash, "NaN and Zero should hash to the same thing");
-
-//should also test that CodeWScope hashes correctly
-//but waiting for SERVER-3391 (CodeWScope support in shell)
+// should also test that CodeWScope hashes correctly
+// but waiting for SERVER-3391 (CodeWScope support in shell)