Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 29 additions & 1 deletion tests/stream_pause_resume.rs
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ fn multiple_pause_resume_cycles_accumulate_correctly() {
assert_eq!(client.withdrawable(), 350_000);
}

// ── Withdraw at same timestamp as resume ───────────────────────────────────────
// ── Withdraw at same timestamp as resume ───────────────────────────────────

#[test]
fn withdraw_at_same_timestamp_as_resume() {
Expand Down Expand Up @@ -223,3 +223,31 @@ fn withdraw_at_same_timestamp_as_resume() {
// Nothing more should be withdrawable (zero elapsed since resume)
assert_eq!(client.withdrawable(), 0);
}

#[test]
fn withdraw_at_same_timestamp_as_resume_yields_zero_new_tokens() {
let env = base_env();
let sender = Address::generate(&env);
let recipient = Address::generate(&env);
let (client, token_addr) = deploy_stream(&env, &sender, &recipient, 1_000, 3_600);
let tok = token::Client::new(&env, &token_addr);

// Stream 300s → 300_000 earned
advance(&env, 300);
client.pause(&sender);
// Paused for 500s (no accrual)
advance(&env, 500);
// Resume — ledger timestamp has NOT advanced yet (zero elapsed since resume)
client.resume(&sender);

// Withdrawable should still be 300_000 (no new tokens in zero seconds)
assert_eq!(client.withdrawable(), 300_000);

// Actually withdraw everything that is available
let withdrawn = client.withdraw(&300_000);
assert_eq!(withdrawn, 300_000);
assert_eq!(tok.balance(&recipient), 300_000);

// Nothing left
assert_eq!(client.withdrawable(), 0);
}
Loading