All files / lib/utils BigIntUtils.ts

62.5% Statements 20/32
44.44% Branches 8/18
66.67% Functions 4/6
60% Lines 18/30

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65    1x   14887x       14887x       14887x 14887x 14887x 14877x     14887x       14887x       14887x       14887x 14887x 14887x 8x     14887x                                         14887x       1x 19887x    
import BigNumber from 'bignumber.js';
 
export class BigIntMath {
  static max(...values: bigint[]): bigint {
    Iif (values.length === 0) {
      return null;
    }
 
    Iif (values.length === 1) {
      return values[0];
    }
 
    let max = values[0];
    for (let i = 1; i < values.length; i++) {
      if (values[i] > max) {
        max = values[i];
      }
    }
    return max;
  }
 
  static min(...values: bigint[]): bigint {
    Iif (values.length === 0) {
      return null;
    }
 
    Iif (values.length === 1) {
      return values[0];
    }
 
    let min = values[0];
    for (let i = 1; i < values.length; i++) {
      if (values[i] < min) {
        min = values[i];
      }
    }
    return min;
  }
 
  static sign(value: bigint): bigint {
    if (value > BigInt(0)) {
      return BigInt(1);
    }
    if (value < BigInt(0)) {
      return BigInt(-1);
    }
    return BigInt(0);
  }
 
  static abs(value: bigint): bigint {
    if (this.sign(value) === BigInt(-1)) {
      return -value;
    }
    return value;
  }
 
  static clamp(min: bigint, val: bigint, max: bigint): bigint {
    return this.max(min, this.min(val, max));
  }
}
 
export function toBigInt(num: BigNumber): bigint {
  return BigInt(num.integerValue().toString());
}