From 721cc139527123f185b76c90468b4cc678822bf8 Mon Sep 17 00:00:00 2001 From: Hollujay Date: Tue, 28 Jul 2026 09:50:50 +0100 Subject: [PATCH 1/2] test(splitter): add boundary tests for splits_of_paged (#325) --- contracts/splitter/src/test.rs | 111 +++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/contracts/splitter/src/test.rs b/contracts/splitter/src/test.rs index f58561c..d307916 100644 --- a/contracts/splitter/src/test.rs +++ b/contracts/splitter/src/test.rs @@ -2114,3 +2114,114 @@ fn splits_of_preserves_creation_order() { let splits = s.client.splits_of(&creator); assert_eq!(splits, vec![&s.env, id1, id2, id3]); } + +#[test] +fn splits_of_paged_start_beyond_list_length() { + let s = setup(); + let creator = Address::generate(&s.env); + let a = Address::generate(&s.env); + + s.client.create_split( + &creator, + &vec![&s.env, acct(&a)], + &vec![&s.env, 10_000], + &None, + ); + s.client.create_split( + &creator, + &vec![&s.env, acct(&a)], + &vec![&s.env, 10_000], + &None, + ); + s.client.create_split( + &creator, + &vec![&s.env, acct(&a)], + &vec![&s.env, 10_000], + &None, + ); + + // start == len + let page = s.client.splits_of_paged(&creator, &3, &5); + assert_eq!(page, vec![&s.env]); + + // start > len + let page = s.client.splits_of_paged(&creator, &10, &5); + assert_eq!(page, vec![&s.env]); +} + +#[test] +fn splits_of_paged_limit_zero() { + let s = setup(); + let creator = Address::generate(&s.env); + let a = Address::generate(&s.env); + + s.client.create_split( + &creator, + &vec![&s.env, acct(&a)], + &vec![&s.env, 10_000], + &None, + ); + + let page = s.client.splits_of_paged(&creator, &0, &0); + assert_eq!(page, vec![&s.env]); +} + +#[test] +fn splits_of_paged_runs_past_end() { + let s = setup(); + let creator = Address::generate(&s.env); + let a = Address::generate(&s.env); + + let _id0 = s.client.create_split( + &creator, + &vec![&s.env, acct(&a)], + &vec![&s.env, 10_000], + &None, + ); + let id1 = s.client.create_split( + &creator, + &vec![&s.env, acct(&a)], + &vec![&s.env, 10_000], + &None, + ); + let id2 = s.client.create_split( + &creator, + &vec![&s.env, acct(&a)], + &vec![&s.env, 10_000], + &None, + ); + + // start=1, limit=10 — only 2 items remain + let page = s.client.splits_of_paged(&creator, &1, &10); + assert_eq!(page, vec![&s.env, id1, id2]); +} + +#[test] +fn splits_of_paged_lands_exactly_on_last_item() { + let s = setup(); + let creator = Address::generate(&s.env); + let a = Address::generate(&s.env); + + let _id0 = s.client.create_split( + &creator, + &vec![&s.env, acct(&a)], + &vec![&s.env, 10_000], + &None, + ); + let _id1 = s.client.create_split( + &creator, + &vec![&s.env, acct(&a)], + &vec![&s.env, 10_000], + &None, + ); + let id2 = s.client.create_split( + &creator, + &vec![&s.env, acct(&a)], + &vec![&s.env, 10_000], + &None, + ); + + // start=2, limit=1 — exactly the last item + let page = s.client.splits_of_paged(&creator, &2, &1); + assert_eq!(page, vec![&s.env, id2]); +} From 77f5b070f4c1655fce37f3e4315ed66120f412ee Mon Sep 17 00:00:00 2001 From: Hollujay Date: Tue, 28 Jul 2026 10:29:05 +0100 Subject: [PATCH 2/2] fix: add missing imports for formatAmount, shortAddress, recipientLabel --- app/src/lib/tributary.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/lib/tributary.test.ts b/app/src/lib/tributary.test.ts index 25ec8fc..71282ec 100644 --- a/app/src/lib/tributary.test.ts +++ b/app/src/lib/tributary.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from "vitest"; -import { fromStroops, toStroops, ConversionError } from "./tributary"; +import { fromStroops, toStroops, ConversionError, formatAmount, shortAddress, recipientLabel } from "./tributary"; describe("fromStroops", () => { it("formats small values with up to 7 decimal places", () => {