@@ -125,6 +125,105 @@ fn allocate_and_replace_keys_from_empty_storage(
125125 assert_eq ! ( actual_alias_per_key, expected_alias_per_key) ;
126126}
127127
128+ #[ rstest]
129+ #[ case(
130+ vec![ ] ,
131+ vec![ ] ,
132+ HashMap :: from( [ ( 0 . into( ) , 128 . into( ) ) ] ) ,
133+ HashMap :: from( [ ( 0 , 128 ) ] )
134+ ) ]
135+ #[ case(
136+ vec![ 2000 . into( ) ] ,
137+ vec![ 128 ] ,
138+ HashMap :: from( [
139+ ( 0 . into( ) , 131 . into( ) ) ,
140+ ( 2000 . into( ) , 128 . into( ) )
141+ ] ) ,
142+ HashMap :: from( [
143+ ( 0 , 131 ) ,
144+ ( 2000 , 128 ) ,
145+ ( 1999999999 , 129 ) ,
146+ ( 3000 , 130 )
147+ ] )
148+ ) ]
149+ #[ case(
150+ vec![ 2001 . into( ) ] ,
151+ vec![ 131 ] ,
152+ HashMap :: from( [
153+ ( 0 . into( ) , 132 . into( ) ) ,
154+ ( 2001 . into( ) , 131 . into( ) )
155+ ] ) ,
156+ HashMap :: from( [
157+ ( 0 , 131 ) ,
158+ ( 2000 , 128 ) ,
159+ ( 1999999999 , 129 ) ,
160+ ( 3000 , 130 )
161+ ] )
162+ ) ]
163+ #[ case(
164+ vec![ 2001 . into( ) , 2000 . into( ) , 2005 . into( ) ] ,
165+ vec![ 131 , 128 , 132 ] ,
166+ HashMap :: from( [
167+ ( 0 . into( ) , 133 . into( ) ) ,
168+ ( 2000 . into( ) , 128 . into( ) ) ,
169+ ( 2001 . into( ) , 131 . into( ) ) ,
170+ ( 2005 . into( ) , 132 . into( ) )
171+ ] ) ,
172+ HashMap :: from( [
173+ ( 0 , 131 ) ,
174+ ( 2000 , 128 ) ,
175+ ( 1999999999 , 129 ) ,
176+ ( 3000 , 130 )
177+ ] )
178+ ) ]
179+ #[ case(
180+ vec![
181+ 13 . into( ) ,
182+ 500 . into( ) ,
183+ 11 . into( ) ,
184+ 2000 . into( ) ,
185+ 89999 . into( ) ,
186+ 13 . into( ) ,
187+ 501 . into( ) ,
188+ 98 . into( ) ,
189+ 222 . into( ) ,
190+ 501 . into( )
191+ ] ,
192+ vec![ 13 , 128 , 11 , 129 , 131 , 13 , 132 , 98 , 133 , 132 ] ,
193+ HashMap :: from( [
194+ ( 0 . into( ) , 134 . into( ) ) ,
195+ ( 222 . into( ) , 133 . into( ) ) ,
196+ ( 500 . into( ) , 128 . into( ) ) ,
197+ ( 501 . into( ) , 132 . into( ) ) ,
198+ ( 2000 . into( ) , 129 . into( ) ) ,
199+ ( 89999 . into( ) , 131 . into( ) )
200+ ] ) ,
201+ HashMap :: from( [
202+ ( 0 , 131 ) ,
203+ ( 500 , 128 ) ,
204+ ( 2000 , 129 ) ,
205+ ( 2001 , 130 )
206+ ] )
207+ ) ]
208+ fn allocate_and_replace_keys_from_non_empty_storage (
209+ #[ case] keys : Vec < Felt > ,
210+ #[ case] expected_alias_per_key : Vec < u128 > ,
211+ #[ case] expected_alias_storage : HashMap < Felt , Felt > ,
212+ #[ case] initial_storage : HashMap < u128 , u128 > ,
213+ ) {
214+ let initial_storage = initial_storage
215+ . into_iter ( )
216+ . map ( |( key, value) | ( StorageKey :: from ( key) , Felt :: from ( value) ) )
217+ . collect :: < HashMap < _ , _ > > ( ) ;
218+ let expected_alias_per_key: Vec < _ > =
219+ expected_alias_per_key. into_iter ( ) . map ( Felt :: from) . collect ( ) ;
220+ let ( actual_alias_storage, actual_alias_per_key) =
221+ allocate_aliases_for_keys_and_replace ( keys, initial_storage) ;
222+
223+ assert_eq ! ( actual_alias_storage, expected_alias_storage) ;
224+ assert_eq ! ( actual_alias_per_key, expected_alias_per_key) ;
225+ }
226+
128227fn allocate_aliases_for_keys_and_replace (
129228 keys : Vec < Felt > ,
130229 initial_storage : HashMap < StorageKey , Felt > ,
0 commit comments