@@ -116,12 +116,18 @@ fn test_weakref_without_cycles() {
116116 let w1 = s1. downgrade ( ) ;
117117 let s2 = w1. upgrade ( ) . unwrap ( ) ;
118118 let w2 = w1. clone ( ) ;
119+ assert_eq ! ( s2. strong_count( ) , 2 ) ;
120+ assert_eq ! ( s2. weak_count( ) , 2 ) ;
121+ assert_eq ! ( w2. strong_count( ) , 2 ) ;
122+ assert_eq ! ( w2. weak_count( ) , 2 ) ;
119123 drop ( s1) ;
120124 drop ( s2) ;
121125 let w3 = w2. clone ( ) ;
122126 assert ! ( w3. upgrade( ) . is_none( ) ) ;
123127 assert ! ( w2. upgrade( ) . is_none( ) ) ;
124128 assert ! ( w1. upgrade( ) . is_none( ) ) ;
129+ assert_eq ! ( w3. strong_count( ) , 0 ) ;
130+ assert_eq ! ( w3. weak_count( ) , 3 ) ;
125131 } ) ;
126132 assert_eq ! (
127133 log,
@@ -135,13 +141,21 @@ fn test_weakref_with_cycles() {
135141 let log = debug:: capture_log ( || {
136142 debug:: NEXT_DEBUG_NAME . with ( |n| n. set ( 1 ) ) ;
137143 let a: Cc < RefCell < Vec < Box < dyn Trace > > > > = Cc :: new ( RefCell :: new ( Vec :: new ( ) ) ) ;
144+ assert_eq ! ( a. strong_count( ) , 1 ) ;
138145 debug:: NEXT_DEBUG_NAME . with ( |n| n. set ( 2 ) ) ;
139146 let b: Cc < RefCell < Vec < Box < dyn Trace > > > > = Cc :: new ( RefCell :: new ( Vec :: new ( ) ) ) ;
140147 a. borrow_mut ( ) . push ( Box :: new ( b. clone ( ) ) ) ;
141148 b. borrow_mut ( ) . push ( Box :: new ( a. clone ( ) ) ) ;
149+ assert_eq ! ( a. strong_count( ) , 2 ) ;
150+ assert_eq ! ( a. weak_count( ) , 0 ) ;
142151 let wa = a. downgrade ( ) ;
152+ assert_eq ! ( a. weak_count( ) , 1 ) ;
143153 let wa1 = wa. clone ( ) ;
154+ assert_eq ! ( a. weak_count( ) , 2 ) ;
144155 let wb = b. downgrade ( ) ;
156+ assert_eq ! ( wa. strong_count( ) , 2 ) ;
157+ assert_eq ! ( wa. weak_count( ) , 2 ) ;
158+ assert_eq ! ( wb. weak_count( ) , 1 ) ;
145159 drop ( a) ;
146160 drop ( b) ;
147161 assert ! ( wa. upgrade( ) . is_some( ) ) ;
@@ -151,6 +165,8 @@ fn test_weakref_with_cycles() {
151165 assert ! ( wa1. upgrade( ) . is_none( ) ) ;
152166 assert ! ( wb. upgrade( ) . is_none( ) ) ;
153167 assert ! ( wb. clone( ) . upgrade( ) . is_none( ) ) ;
168+ assert_eq ! ( wa. weak_count( ) , 2 ) ;
169+ assert_eq ! ( wa. strong_count( ) , 0 ) ;
154170 } ) ;
155171 assert_eq ! (
156172 log,
0 commit comments