-
Notifications
You must be signed in to change notification settings - Fork 164
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Test adding programs using non squashed Felt252Dict (#1797)
* adding programs using non squshed Felt252 * update CHANGELOG.md * update CHANGELOG.md * add tests * update CHANGELOG.md * change CHANGELOG + lint * making requested changes * linting * linting * clarifying tests * comment fixing * requested changes --------- Co-authored-by: Pedro Fontana <[email protected]>
- Loading branch information
1 parent
309c8a7
commit 0f29713
Showing
5 changed files
with
115 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
28 changes: 28 additions & 0 deletions
28
cairo_programs/cairo-1-programs/dict_non_squashed/dict_with_struct_non_squash.cairo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
use core::nullable::{nullable_from_box, match_nullable, FromNullableResult}; | ||
|
||
|
||
#[derive(Drop, Copy)] | ||
struct FP16x16 { | ||
mag: u32, | ||
sign: bool | ||
} | ||
|
||
fn main() -> Felt252Dict<Nullable<FP16x16>> { | ||
// Create the dictionary | ||
let mut d: Felt252Dict<Nullable<FP16x16>> = Default::default(); | ||
|
||
let box_a = BoxTrait::new(identity(FP16x16 { mag: 1, sign: false })); | ||
let box_b = BoxTrait::new(identity(FP16x16 { mag: 1, sign: true })); | ||
let box_c = BoxTrait::new(identity(FP16x16 { mag: 1, sign: true })); | ||
|
||
// Insert it as a `Span` | ||
d.insert(0, nullable_from_box(box_c)); | ||
d.insert(1, nullable_from_box(box_a)); | ||
d.insert(2, nullable_from_box(box_b)); | ||
|
||
d | ||
} | ||
|
||
// TODO: remove this temporary fix once fixed in cairo | ||
#[inline(never)] | ||
fn identity<T>(t: T) -> T { t } |
15 changes: 15 additions & 0 deletions
15
cairo_programs/cairo-1-programs/dict_non_squashed/felt_dict_non_squash.cairo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
use core::nullable::{nullable_from_box, match_nullable, FromNullableResult}; | ||
|
||
fn main() -> Felt252Dict<Nullable<Span<felt252>>> { | ||
// Create the dictionary | ||
let mut d: Felt252Dict<Nullable<Span<felt252>>> = Default::default(); | ||
|
||
// Create the array to insert | ||
let a = array![8, 9, 10, 11]; | ||
let b = array![1, 2, 3]; | ||
|
||
// Insert it as a `Span` | ||
d.insert(66675, nullable_from_box(BoxTrait::new(a.span()))); | ||
d.insert(66676, nullable_from_box(BoxTrait::new(b.span()))); | ||
d | ||
} |
23 changes: 23 additions & 0 deletions
23
cairo_programs/cairo-1-programs/dict_non_squashed/nullable_box_vec_non_squash.cairo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
struct NullableVec<T> { | ||
items: Felt252Dict<Nullable<Box<T>>>, | ||
len: usize, | ||
} | ||
|
||
fn main() -> NullableVec<u32> { | ||
let mut d: Felt252Dict<Nullable<Box<u32>>> = Default::default(); | ||
|
||
// Populate the dictionary | ||
d.insert(0, nullable_from_box(BoxTrait::new(BoxTrait::new(identity(10))))); | ||
d.insert(1, nullable_from_box(BoxTrait::new(BoxTrait::new(identity(20))))); | ||
d.insert(2, nullable_from_box(BoxTrait::new(BoxTrait::new(identity(30))))); | ||
|
||
// Return NullableVec | ||
NullableVec { | ||
items: d, | ||
len: 3, | ||
} | ||
} | ||
|
||
// TODO: remove this temporary fix once fixed in cairo | ||
#[inline(never)] | ||
fn identity<T>(t: T) -> T { t } |