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