Skip to content

Commit

Permalink
Merge pull request dojoengine#110 from dojoengine/fix-format-u256
Browse files Browse the repository at this point in the history
Fix u256 format
  • Loading branch information
broody authored Jan 17, 2024
2 parents 299d31b + 3c1e68c commit 8980503
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 4 deletions.
1 change: 1 addition & 0 deletions packages/torii-wasm/crate/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/torii-wasm/crate/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ opt-level = 1

[dev-dependencies]
wasm-bindgen-test = "=0.3.38"
crypto-bigint = { version = "0.5.3", features = [ "serde" ] }

[features]
console-error-panic = ["dep:console_error_panic_hook"]
90 changes: 86 additions & 4 deletions packages/torii-wasm/crate/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ fn primitive_value_json(primitive: Primitive) -> Value {
Primitive::U64(Some(value)) => Value::Number(value.into()),
Primitive::USize(Some(value)) => Value::Number(value.into()),
Primitive::U128(Some(value)) => Value::String(format!("{value:#x}")),
Primitive::U256(Some(value)) => Value::String(format!("{value:#x}")),
Primitive::U256(Some(value)) => Value::String(format!("0x{value:#x}")),
Primitive::Felt252(Some(value)) => Value::String(format!("{value:#x}")),
Primitive::ClassHash(Some(value)) => Value::String(format!("{value:#x}")),
Primitive::ContractAddress(Some(value)) => Value::String(format!("{value:#x}")),
Expand All @@ -72,10 +72,11 @@ fn primitive_value_json(primitive: Primitive) -> Value {
mod test {
wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser);

use crypto_bigint::U256;
use dojo_types::schema::{Enum, EnumOption, Member, Struct};
use serde_json::json;
use starknet::macros::felt;
use torii_grpc::types::{Entity, Model};
use torii_grpc::types::schema::{Entity, Model};
use wasm_bindgen_test::*;

use super::*;
Expand Down Expand Up @@ -227,7 +228,7 @@ mod test {
#[wasm_bindgen_test]
fn parse_entity_to_value() {
let entity = Entity {
key: felt!("0x123"),
hashed_keys: felt!("0x123"),
models: vec![
Model {
name: "position".into(),
Expand Down Expand Up @@ -288,7 +289,7 @@ mod test {
name: "is_dead".into(),
key: false,
ty: Ty::Primitive(Primitive::Bool(Some(false))),
},
}
],
},
],
Expand All @@ -314,4 +315,85 @@ mod test {
let actual_json = parse_entities_as_json_str(vec![entity]);
assert_eq!(expected_json, actual_json)
}

#[wasm_bindgen_test]
fn primitive_types_test() {
let expected_ty = Ty::Struct(Struct {
name: "Types".into(),
children: vec![
Member {
name: "type_bool".into(),
key: false,
ty: Ty::Primitive(Primitive::Bool(Some(true))),
},
Member {
name: "type_u8".into(),
key: false,
ty: Ty::Primitive(Primitive::U8(Some(1))),
},
Member {
name: "type_u16".into(),
key: false,
ty: Ty::Primitive(Primitive::U16(Some(2))),
},
Member {
name: "type_u32".into(),
key: false,
ty: Ty::Primitive(Primitive::U32(Some(3))),
},
Member {
name: "type_u64".into(),
key: false,
ty: Ty::Primitive(Primitive::U64(Some(4))),
},
Member {
name: "type_usize".into(),
key: false,
ty: Ty::Primitive(Primitive::USize(Some(5))),
},
Member {
name: "type_u128".into(),
key: false,
ty: Ty::Primitive(Primitive::U128(Some(6))),
},
Member {
name: "type_felt252".into(),
key: false,
ty: Ty::Primitive(Primitive::Felt252(Some(felt!("0x123456789abcdef123456789abcdef12"))))
},
Member {
name: "type_class_hash".into(),
key: false,
ty: Ty::Primitive(Primitive::ClassHash(Some(felt!("0x123456789abcdef123456789abcdef12"))))
},
Member {
name: "type_contract_address".into(),
key: false,
ty: Ty::Primitive(Primitive::ContractAddress(Some(felt!("0x123456789abcdef123456789abcdef12"))))
},
Member {
name: "type_u256".into(),
key: false,
ty: Ty::Primitive(Primitive::U256(Some(U256::from_be_hex("aaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbccccccccccccccccdddddddddddddddd"))))
},
],
});

let expected_json = json!({
"type_bool": true,
"type_u8": 1,
"type_u16": 2,
"type_u32": 3,
"type_u64": 4,
"type_usize": 5,
"type_u128": "0x6",
"type_felt252": "0x123456789abcdef123456789abcdef12",
"type_class_hash": "0x123456789abcdef123456789abcdef12",
"type_contract_address": "0x123456789abcdef123456789abcdef12",
"type_u256": "0xaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbccccccccccccccccdddddddddddddddd"
});

let actual_json = parse_ty_as_json_str(&expected_ty);
assert_eq!(expected_json, actual_json)
}
}

0 comments on commit 8980503

Please sign in to comment.