| 'use strict'; | 
|   | 
| var assert = require('assert'); | 
| var crypto = require('crypto'); | 
| var hash = require('../index'); | 
| var validSha1 = /^[0-9a-f]{40}$/i; | 
| var validBase64 = /^([A-Za-z0-9+\/]{4})*([A-Za-z0-9+\/==]{4})$/; | 
|   | 
| describe('hash() without crypto.getHashes', function() { | 
|   var getHashes_; | 
|   beforeEach(function() { | 
|     getHashes_ = crypto.getHashes; | 
|     delete crypto.getHashes; | 
|   }); | 
|    | 
|   afterEach(function() { | 
|     crypto.getHashes = getHashes_; | 
|   }); | 
|    | 
|   it('should work fine for SHA1', function() { | 
|     assert.ok(validSha1.test(hash(42)), 'hash some value'); | 
|     assert.ok(validSha1.test(hash(NaN)), 'hash some value'); | 
|   }); | 
| }); | 
|   | 
| describe('hash() without Duplex streams', function() { | 
|   var createHash_; | 
|   beforeEach(function() { | 
|     createHash_ = crypto.createHash; | 
|     crypto.createHash = function(algorithm) { | 
|       var strm = createHash_(algorithm); | 
|        | 
|       return { | 
|         update: strm.write.bind(strm), | 
|         digest: strm.digest.bind(strm) | 
|       }; | 
|     }; | 
|   }); | 
|    | 
|   afterEach(function() { | 
|     crypto.createHash = createHash_; | 
|   }); | 
|    | 
|   it('should work fine for SHA1 without .write()/.read()', function() { | 
|     assert.ok(validSha1.test(hash(42)), 'hash some value'); | 
|     assert.ok(validSha1.test(hash(NaN)), 'hash some value'); | 
|   }); | 
|    | 
|   it('should work fine for SHA1 without .write()/.read() with base64', function() { | 
|     assert.ok(validBase64.test(hash(42, {encoding: 'base64'})), 'hash some value'); | 
|     assert.ok(validBase64.test(hash(NaN, {encoding: 'base64'})), 'hash some value'); | 
|   }); | 
|    | 
|   if (typeof Buffer !== 'undefined') { | 
|     it('should work fine for SHA1 without .write()/.read() with buffer', function() { | 
|       assert.ok(Buffer.isBuffer(hash(42, {encoding: 'buffer'})), 'hash some value'); | 
|       assert.ok(Buffer.isBuffer(hash(NaN, {encoding: 'buffer'})), 'hash some value'); | 
|     }); | 
|   } | 
| }); |