@@ -1984,6 +1984,109 @@ describe('Test lib.js:', function() {
1984
1984
} ) ;
1985
1985
} ) ;
1986
1986
} ) ;
1987
+
1988
+ describe ( 'relinkPrivateKeys' , function ( ) {
1989
+ it ( 'ignores customdata and ids' , function ( ) {
1990
+ var fromContainer = {
1991
+ customdata : [ { _x : 1 , _y : 2 , a : 3 } ] ,
1992
+ ids : [ { _i : 4 , j : 5 } ]
1993
+ } ;
1994
+ var toContainer = {
1995
+ customdata : [ { a : 6 } ] ,
1996
+ ids : [ { j : 7 } ]
1997
+ } ;
1998
+
1999
+ Lib . relinkPrivateKeys ( toContainer , fromContainer ) ;
2000
+
2001
+ expect ( toContainer . customdata [ 0 ] . _x ) . toBeUndefined ( ) ;
2002
+ expect ( toContainer . customdata [ 0 ] . _y ) . toBeUndefined ( ) ;
2003
+ expect ( toContainer . ids [ 0 ] . _i ) . toBeUndefined ( ) ;
2004
+ } ) ;
2005
+
2006
+ it ( 'ignores any values that are ===' , function ( ) {
2007
+ var accesses = 0 ;
2008
+
2009
+ var obj = {
2010
+ get _x ( ) { accesses ++ ; return 1 ; } ,
2011
+ set _x ( v ) { accesses ++ ; }
2012
+ } ;
2013
+ var array = [ obj ] ;
2014
+ var array2 = [ obj ] ;
2015
+
2016
+ var fromContainer = {
2017
+ x : array ,
2018
+ y : array ,
2019
+ o : obj
2020
+ } ;
2021
+ var toContainer = {
2022
+ x : array ,
2023
+ y : array2 ,
2024
+ o : obj
2025
+ } ;
2026
+
2027
+ Lib . relinkPrivateKeys ( toContainer , fromContainer ) ;
2028
+
2029
+ expect ( accesses ) . toBe ( 0 ) ;
2030
+
2031
+ obj . _x = 2 ;
2032
+ expect ( obj . _x ) . toBe ( 1 ) ;
2033
+ expect ( accesses ) . toBe ( 2 ) ;
2034
+ } ) ;
2035
+
2036
+ it ( 'reinserts other private keys if they\'re not already there' , function ( ) {
2037
+ var obj1 = { a : 10 , _a : 11 } ;
2038
+ var obj2 = { a : 12 , _a : 13 } ;
2039
+ function f1 ( ) { return 1 ; }
2040
+ function f2 ( ) { return 2 ; }
2041
+
2042
+ var fromContainer = {
2043
+ a : 1 ,
2044
+ _a : 2 ,
2045
+ _b : 3 ,
2046
+ _c : obj1 ,
2047
+ _d : obj1 ,
2048
+ f : f1 , // functions are private even without _
2049
+ g : f1 ,
2050
+ array : [ { a : 3 , _a : 4 , _b : 5 , f : f1 , g : f1 } ] ,
2051
+ o : { a : 6 , _a : 7 , _b : 8 } ,
2052
+ array2 : [ { a : 9 , _a : 10 } ] ,
2053
+ o2 : { a : 11 , _a : 12 }
2054
+ } ;
2055
+ fromContainer . _circular = fromContainer ;
2056
+ fromContainer . _circular2 = fromContainer ;
2057
+ var toContainer = {
2058
+ a : 21 ,
2059
+ _a : 22 ,
2060
+ _c : obj2 ,
2061
+ f : f2 ,
2062
+ array : [ { a : 23 , _a : 24 , f : f2 } ] ,
2063
+ o : { a : 26 , _a : 27 } ,
2064
+ x : [ 28 ] ,
2065
+ _x : 29
2066
+ } ;
2067
+ toContainer . _circular = toContainer ;
2068
+
2069
+ Lib . relinkPrivateKeys ( toContainer , fromContainer ) ;
2070
+
2071
+ var expected = {
2072
+ a : 21 ,
2073
+ _a : 22 ,
2074
+ _b : 3 ,
2075
+ _c : obj2 ,
2076
+ _circular : toContainer ,
2077
+ _circular2 : fromContainer ,
2078
+ _d : obj1 ,
2079
+ f : f2 ,
2080
+ g : f1 ,
2081
+ array : [ { a : 23 , _a : 24 , _b : 5 , f : f2 , g : f1 } ] ,
2082
+ o : { a : 26 , _a : 27 , _b : 8 } ,
2083
+ x : [ 28 ] ,
2084
+ _x : 29
2085
+ } ;
2086
+
2087
+ expect ( toContainer ) . toEqual ( expected ) ;
2088
+ } ) ;
2089
+ } ) ;
1987
2090
} ) ;
1988
2091
1989
2092
describe ( 'Queue' , function ( ) {
0 commit comments