Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into benchmark-experiments…
Browse files Browse the repository at this point in the history
…/biginteger
  • Loading branch information
qalisander committed Jan 15, 2025
2 parents 3a43d49 + e8b6c7d commit d3df6cc
Show file tree
Hide file tree
Showing 17 changed files with 636 additions and 425 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/check-wasm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
rustflags: ""

- name: Install cargo-stylus
run: cargo install [email protected].7
run: cargo install [email protected].8

- name: Run wasm check
run: ./scripts/check-wasm.sh
2 changes: 1 addition & 1 deletion .github/workflows/e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
rustflags: ""

- name: Install cargo-stylus
run: cargo install [email protected].7
run: cargo install [email protected].8

- name: Install solc
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/gas-bench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
rustflags: ""

- name: Install cargo-stylus
run: cargo install [email protected].7
run: cargo install [email protected].8

- name: Install wasm-opt
run: cargo install [email protected]
Expand Down
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed (Breaking)

- Bump cargo-stylus to v0.5.7. #484
- Bump cargo-stylus to v0.5.8. #493
- Constants `TYPE_HASH`, `FIELDS`, `SALT` and `TYPED_DATA_PREFIX`, and type `DomainSeparatorTuple` are no longer exported from `utils::cryptography::eip712`. #478
- Bump Stylus SDK to v0.7.0. #433
- Bump `alloy` dependencies to v0.8.14. #433
Expand Down
1 change: 0 additions & 1 deletion Cargo.lock

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

1 change: 0 additions & 1 deletion contracts/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ openzeppelin-stylus-proc.workspace = true
[dev-dependencies]
alloy-primitives = { workspace = true, features = ["arbitrary"] }
motsu.workspace = true
rand.workspace = true

[features]
# Enables using the standard library. This is not included in the default
Expand Down
11 changes: 3 additions & 8 deletions contracts/src/token/erc1155/extensions/metadata_uri.rs
Original file line number Diff line number Diff line change
Expand Up @@ -75,24 +75,19 @@ impl IErc165 for Erc1155MetadataUri {

#[cfg(all(test, feature = "std"))]
mod tests {
use alloy_primitives::U256;
use stylus_sdk::alloy_primitives::uint;

use super::{Erc1155MetadataUri, IErc1155MetadataUri, IErc165};

fn random_token_id() -> U256 {
let num: u32 = rand::random();
U256::from(num)
}

#[motsu::test]
fn uri_ignores_token_id(contract: Erc1155MetadataUri) {
let uri = String::from("https://token-cdn-domain/\\{id\\}.json");
contract._uri.set_str(uri.clone());

let token_id = random_token_id();
let token_id = uint!(1_U256);
assert_eq!(uri, contract.uri(token_id));

let token_id = random_token_id();
let token_id = uint!(2_U256);
assert_eq!(uri, contract.uri(token_id));
}

Expand Down
40 changes: 16 additions & 24 deletions contracts/src/token/erc1155/extensions/uri_storage.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,128 +92,120 @@ impl Erc1155UriStorage {

#[cfg(all(test, feature = "std"))]
mod tests {
use alloy_primitives::U256;
use stylus_sdk::prelude::storage;
use stylus_sdk::{
alloy_primitives::{uint, U256},
prelude::storage,
};

use super::Erc1155UriStorage;
use crate::token::erc1155::extensions::Erc1155MetadataUri;

fn random_token_id() -> U256 {
let num: u32 = rand::random();
U256::from(num)
}

#[storage]
struct Erc1155MetadataExample {
pub metadata_uri: Erc1155MetadataUri,
pub uri_storage: Erc1155UriStorage,
}

const TOKEN_ID: U256 = uint!(1_U256);

#[motsu::test]
fn uri_returns_metadata_uri_when_token_uri_is_not_set(
contract: Erc1155MetadataExample,
) {
let token_id = random_token_id();
let uri = "https://some.metadata/token/uri";

contract.metadata_uri._uri.set_str(uri.to_owned());

assert_eq!(
uri,
contract.uri_storage.uri(token_id, &contract.metadata_uri)
contract.uri_storage.uri(TOKEN_ID, &contract.metadata_uri)
);
}

#[motsu::test]
fn uri_returns_empty_string_when_no_uri_is_set(
contract: Erc1155MetadataExample,
) {
let token_id = random_token_id();

assert!(contract
.uri_storage
.uri(token_id, &contract.metadata_uri)
.uri(TOKEN_ID, &contract.metadata_uri)
.is_empty());
}

#[motsu::test]
fn uri_returns_token_uri_when_base_uri_is_empty(
contract: Erc1155MetadataExample,
) {
let token_id = random_token_id();
let token_uri = "https://some.short/token/uri";

contract
.uri_storage
._token_uris
.setter(token_id)
.setter(TOKEN_ID)
.set_str(token_uri.to_owned());

assert_eq!(
token_uri,
contract.uri_storage.uri(token_id, &contract.metadata_uri)
contract.uri_storage.uri(TOKEN_ID, &contract.metadata_uri)
);
}

#[motsu::test]
fn uri_returns_concatenated_base_uri_and_token_uri(
contract: Erc1155MetadataExample,
) {
let token_id = random_token_id();
let base_uri = "https://some.base.uri";
let token_uri = "/some/token/uri";

contract.uri_storage._base_uri.set_str(base_uri.to_owned());
contract
.uri_storage
._token_uris
.setter(token_id)
.setter(TOKEN_ID)
.set_str(token_uri.to_owned());

assert_eq!(
base_uri.to_string() + token_uri,
contract.uri_storage.uri(token_id, &contract.metadata_uri)
contract.uri_storage.uri(TOKEN_ID, &contract.metadata_uri)
);
}

#[motsu::test]
fn uri_ignores_metadata_uri_when_token_uri_is_set(
contract: Erc1155MetadataExample,
) {
let token_id = random_token_id();
let uri = "https://some.metadata/token/uri";
let token_uri = "https://some.short/token/uri";

contract.metadata_uri._uri.set_str(uri.to_owned());
contract
.uri_storage
._token_uris
.setter(token_id)
.setter(TOKEN_ID)
.set_str(token_uri.to_owned());

assert_eq!(
token_uri,
contract.uri_storage.uri(token_id, &contract.metadata_uri)
contract.uri_storage.uri(TOKEN_ID, &contract.metadata_uri)
);
}

#[motsu::test]
fn test_set_uri(contract: Erc1155MetadataExample) {
let token_id = random_token_id();
let uri = "https://some.metadata/token/uri";
let token_uri = "https://some.short/token/uri".to_string();

contract.metadata_uri._uri.set_str(uri.to_owned());

contract.uri_storage.set_token_uri(
token_id,
TOKEN_ID,
token_uri.clone(),
&contract.metadata_uri,
);

assert_eq!(
token_uri,
contract.uri_storage.uri(token_id, &contract.metadata_uri)
contract.uri_storage.uri(TOKEN_ID, &contract.metadata_uri)
);
}

Expand Down
Loading

0 comments on commit d3df6cc

Please sign in to comment.