@@ -1573,41 +1573,55 @@ describe('BSON', function () {
15731573 */
15741574 it ( 'ObjectId should have a correct cached representation of the hexString' , function ( done ) {
15751575 ObjectId . cacheHexString = true ;
1576+ // generated ObjectID uses lazy caching
15761577 var a = new ObjectId ( ) ;
1578+ expect ( a . isCached ( ) ) . to . be . false ;
15771579 a . toHexString ( ) ;
1578- var __id = a . __id ;
1579- expect ( __id ) . to . equal ( a . toHexString ( ) ) ;
1580+ expect ( a . isCached ( ) ) . to . be . true ;
1581+ expect ( a . toHexString ( ) ) . to . equal ( a . toHexString ( ) ) ;
15801582
1581- // hexString
1582- a = new ObjectId ( __id ) ;
1583+ // hexString caches immediately
1584+ a = new ObjectId ( a . toHexString ( ) ) ;
1585+ expect ( a . isCached ( ) ) . to . be . true ;
15831586 a . toHexString ( ) ;
1584- expect ( __id ) . to . equal ( a . toHexString ( ) ) ;
1587+ expect ( a . isCached ( ) ) . to . be . true ;
1588+ expect ( a . toHexString ( ) ) . to . equal ( a . toHexString ( ) ) ;
15851589
15861590 // fromHexString
1587- a = ObjectId . createFromHexString ( __id ) ;
1591+ a = ObjectId . createFromHexString ( a . toHexString ( ) ) ;
1592+ expect ( a . isCached ( ) ) . to . be . false ;
15881593 a . toHexString ( ) ;
1589- expect ( a . __id ) . to . equal ( a . toHexString ( ) ) ;
1590- expect ( __id ) . to . equal ( a . toHexString ( ) ) ;
1594+ expect ( a . isCached ( ) ) . to . be . true ;
1595+ expect ( a . toHexString ( ) ) . to . equal ( a . toHexString ( ) ) ;
15911596
15921597 // number
15931598 var genTime = a . generationTime ;
15941599 a = new ObjectId ( genTime ) ;
1600+ expect ( a . isCached ( ) ) . to . be . false ;
15951601 a . toHexString ( ) ;
1596- __id = a . __id ;
1597- expect ( __id ) . to . equal ( a . toHexString ( ) ) ;
1602+ expect ( a . isCached ( ) ) . to . be . true ;
1603+ expect ( a . toHexString ( ) ) . to . equal ( a . toHexString ( ) ) ;
15981604
15991605 // generationTime
1600- delete a . __id ;
16011606 a . generationTime = genTime ;
1602- expect ( __id ) . to . equal ( a . toHexString ( ) ) ;
1607+ expect ( a . isCached ( ) ) . to . be . true ;
1608+ expect ( a . toHexString ( ) ) . to . equal ( a . toHexString ( ) ) ;
16031609
16041610 // createFromTime
16051611 a = ObjectId . createFromTime ( genTime ) ;
1612+ expect ( a . isCached ( ) ) . to . be . false ;
16061613 a . toHexString ( ) ;
1607- __id = a . __id ;
1608- expect ( __id ) . to . equal ( a . toHexString ( ) ) ;
1614+ expect ( a . isCached ( ) ) . to . be . true ;
1615+ expect ( a . toHexString ( ) ) . to . equal ( a . toHexString ( ) ) ;
1616+
16091617 ObjectId . cacheHexString = false ;
16101618
1619+ // No longer caches after cache is disabled
1620+ a = new ObjectId ( ) ;
1621+ expect ( a . isCached ( ) ) . to . be . false ;
1622+ a . toHexString ( ) ;
1623+ expect ( a . isCached ( ) ) . to . be . false ;
1624+
16111625 done ( ) ;
16121626 } ) ;
16131627
@@ -1792,7 +1806,7 @@ describe('BSON', function () {
17921806 ) ;
17931807 expect ( inspect ( code ) ) . to . equal (
17941808 /* eslint-disable */
1795- `new Code(
1809+ `new Code(
17961810'function iLoveJavaScript() {\\n' +
17971811 ' do {\\n' +
17981812 " console.log('hello!');\\n" +
0 commit comments