From 0a49999666c6b1bacff30d6bf239c00943f37fdf Mon Sep 17 00:00:00 2001 From: logicalmechanism Date: Wed, 31 Jan 2024 10:07:04 -0800 Subject: [PATCH] adding shift to moment --- CHANGELOG.md | 3 ++- lib/assist/types/moment.ak | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f12b99..215c0e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,8 @@ # v0.x.y - Added the `Wallets` type and `to_vks` to the wallet submodule. -- Added `get` and `version` to the cip68 types submodule. +- Added `get` and `version` to the cip68 submodule. +- Addded `shift` to the moment submodule. # v0.4.4 diff --git a/lib/assist/types/moment.ak b/lib/assist/types/moment.ak index 8f6fa96..5274daa 100644 --- a/lib/assist/types/moment.ak +++ b/lib/assist/types/moment.ak @@ -13,6 +13,33 @@ pub type Moment { pub type Moments = List +/// Shifts a moment by some integer amount. This is great for incrementing +/// a fixed moment of time, maybe like an epoch boundary by five days. +/// +/// ```aiken +/// moment.shift(this_moment, a_day) +/// ``` +pub fn shift(m: Moment, t: Int) -> Moment { + Moment { start: m.start + t, end: m.end + t } +} + +test no_shift() { + let m: Moment = Moment { start: 0, end: 0 } + shift(m, 0) == m +} + +test positive_shift() { + let m1: Moment = Moment { start: 1, end: 5 } + let m2: Moment = Moment { start: 11, end: 15 } + shift(m1, 10) == m2 +} + +test negative_shift() { + let m1: Moment = Moment { start: 11, end: 15 } + let m2: Moment = Moment { start: 1, end: 5 } + shift(m1, -10) == m2 +} + /// Check if a moment data structure is logical. /// /// ```aiken