templar_common/vault/
gas.rs1use super::*;
2
3#[must_use]
5pub const fn buffer(size: u64) -> Gas {
6 Gas::from_tgas((size * 6).div_ceil(5))
7}
8
9pub fn require_at_least(needed: Gas) {
10 let gas = env::prepaid_gas();
11 require!(
12 gas >= needed,
13 format!("Insufficient gas: {}, needed: {needed}", gas)
14 );
15}
16
17#[cfg(test)]
18mod tests {
19 use super::{buffer, require_at_least};
20 use near_sdk::{test_utils::VMContextBuilder, testing_env, Gas};
21
22 #[test]
23 fn buffer_adds_twenty_percent_ceiling() {
24 assert_eq!(buffer(5), Gas::from_tgas(6));
25 assert_eq!(buffer(6), Gas::from_tgas(8));
26 }
27
28 #[test]
29 fn require_at_least_accepts_sufficient_gas() {
30 let mut builder = VMContextBuilder::new();
31 builder.prepaid_gas(Gas::from_tgas(10));
32 testing_env!(builder.build());
33
34 require_at_least(Gas::from_tgas(8));
35 }
36}