Skip to content

Commit 53b62a0

Browse files
authored
expose test-only setup fn (#19)
1 parent de7d6d5 commit 53b62a0

File tree

3 files changed

+72
-2
lines changed

3 files changed

+72
-2
lines changed

contracts/suilend/sources/lending_market.move

+23-1
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,18 @@ module suilend::lending_market {
382382
fulfill_liquidity_request(lending_market, reserve_array_index, liquidity_request, ctx)
383383
}
384384

385+
// Compound interest for reserve of type T
386+
public fun compound_interest<P>(
387+
lending_market: &mut LendingMarket<P>,
388+
reserve_array_index: u64,
389+
clock: &Clock,
390+
) {
391+
assert!(lending_market.version == CURRENT_VERSION, EIncorrectVersion);
392+
let reserve = vector::borrow_mut(&mut lending_market.reserves, reserve_array_index);
393+
394+
reserve.compound_interest(clock);
395+
}
396+
385397
/// Borrow tokens of type T. A fee is charged.
386398
public fun borrow_request<P, T>(
387399
lending_market: &mut LendingMarket<P>,
@@ -790,6 +802,11 @@ module suilend::lending_market {
790802
}
791803

792804
// === Public-View Functions ===
805+
806+
public fun reserves<P>(lending_market: &LendingMarket<P>): &vector<Reserve<P>> {
807+
&lending_market.reserves
808+
}
809+
793810
fun max_borrow_amount<P>(
794811
mut rate_limiter: RateLimiter,
795812
obligation: &Obligation<P>,
@@ -870,7 +887,7 @@ module suilend::lending_market {
870887
}
871888

872889
// slow function. use sparingly.
873-
fun reserve_array_index<P, T>(lending_market: &LendingMarket<P>): u64 {
890+
public fun reserve_array_index<P, T>(lending_market: &LendingMarket<P>): u64 {
874891
let mut i = 0;
875892
while (i < vector::length(&lending_market.reserves)) {
876893
let reserve = vector::borrow(&lending_market.reserves, i);
@@ -1267,6 +1284,11 @@ module suilend::lending_market {
12671284
object::delete(id);
12681285
}
12691286

1287+
#[test_only]
1288+
public fun reserves_mut_for_testing<P>(lending_market: &mut LendingMarket<P>): &mut vector<Reserve<P>> {
1289+
&mut lending_market.reserves
1290+
}
1291+
12701292
#[test_only]
12711293
public fun add_reserve_for_testing<P, T>(
12721294
_: &LendingMarketOwnerCap<P>,

contracts/suilend/sources/reserve.move

+21
Original file line numberDiff line numberDiff line change
@@ -914,6 +914,12 @@ module suilend::reserve {
914914
reserve.price_identifier = price_identifier;
915915
}
916916

917+
// === View Functions ===
918+
919+
public fun interest_last_update_timestamp_s<P>(reserve: &Reserve<P>): u64 {
920+
reserve.interest_last_update_timestamp_s
921+
}
922+
917923
// === Private Functions ===
918924
fun log_reserve_data<P>(reserve: &Reserve<P>) {
919925
let available_amount_decimal = decimal::from(reserve.available_amount);
@@ -971,6 +977,21 @@ module suilend::reserve {
971977
price_identifier::from_byte_vec(v)
972978
}
973979

980+
#[test_only]
981+
public fun burn_ctokens_for_testing<P, T>(
982+
reserve: &mut Reserve<P>,
983+
ctokens: Balance<CToken<P, T>>
984+
) {
985+
reserve.ctoken_supply = reserve.ctoken_supply - balance::value(&ctokens);
986+
987+
let balances: &mut Balances<P, T> = dynamic_field::borrow_mut(
988+
&mut reserve.id,
989+
BalanceKey {}
990+
);
991+
992+
balance::decrease_supply(&mut balances.ctoken_supply, ctokens);
993+
}
994+
974995
#[test]
975996
fun test_accessors() {
976997
use sui::test_scenario::{Self};

contracts/suilend/tests/lending_market_tests.move

+28-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ module suilend::lending_market_tests {
115115
}
116116

117117
#[test_only]
118-
fun setup(mut reserve_args: Bag, scenario: &mut Scenario): State {
118+
public fun setup(mut reserve_args: Bag, scenario: &mut Scenario): State {
119119
use suilend::test_usdc::{TEST_USDC};
120120
use suilend::test_sui::{TEST_SUI};
121121
use suilend::reserve_config::{Self};
@@ -266,6 +266,33 @@ module suilend::lending_market_tests {
266266
}
267267
}
268268

269+
#[test_only]
270+
public fun new_args(initial_deposit: u64, config: ReserveConfig): ReserveArgs {
271+
ReserveArgs {
272+
config,
273+
initial_deposit,
274+
}
275+
}
276+
277+
#[test_only]
278+
public fun destruct_state(state: State): (
279+
Clock,
280+
LendingMarketOwnerCap<LENDING_MARKET>,
281+
LendingMarket<LENDING_MARKET>,
282+
PriceState,
283+
Bag
284+
) {
285+
let State {
286+
clock,
287+
owner_cap,
288+
lending_market,
289+
prices,
290+
type_to_index,
291+
} = state;
292+
293+
(clock, owner_cap, lending_market, prices, type_to_index)
294+
}
295+
269296

270297
#[test]
271298
public fun test_deposit() {

0 commit comments

Comments
 (0)