@unique-nft/api
Version:
Definitely typed JS API for the Unique Network blockchain
55 lines (50 loc) • 2.5 kB
text/typescript
import {describe, expect, test} from "vitest";
import * as coins from "../coin";
describe('coin', () => {
const {quartz} = coins
const n20 = 12345678901234567890n
const randomBigintString = '329847239847239487329488723468723648'
const randomBigint = 329847239847239487329488723468723648n
test.concurrent('fractional part', () => {
expect(quartz.getFractionalPart(n20)).toBe(345678901234567890n)
expect(quartz.getFractionalPart(-1n)).toBe(-1n)
})
test.concurrent('integer part', () => {
expect(quartz.getIntegerPart(n20)).toBe(12n)
expect(quartz.getIntegerPart(-1n)).toBe(0n)
})
test.concurrent('bigintFromWei', () => {
expect(quartz.bigintFromWei(randomBigintString)).toBe(randomBigint)
expect(quartz.bigintFromWei(randomBigint)).toBe(randomBigint)
expect(() => {
//@ts-ignore
quartz.bigintFromWei(123)
}).toThrowError()
expect(() => {quartz.bigintFromWei('123q')}).toThrowError()
})
test.concurrent('format', () => {
expect(quartz.format(1_000_000_000_000_000_010n)).toBe(`1 QTZ`)
expect(quartz.format(1_500_000_000_000_000_010n)).toBe(`1.5 QTZ`)
expect(quartz.format(1_500_000_400_000_000_010n)).toBe(`1.5 QTZ`)
expect(quartz.format(1_500_000_500_000_000_010n)).toBe(`1.5 QTZ`)
expect(quartz.format(10n)).toBe(`0 QTZ`)
expect(quartz.format(10n, 17)).toBe(`0.00000000000000001 QTZ`)
expect(quartz.format(15n, 17)).toBe(`0.00000000000000001 QTZ`)
expect(quartz.format(1n, 17)).toBe(`0 QTZ`)
expect(quartz.format(117535000000000000n, 9)).toBe(`0.117535 QTZ`)
expect(quartz.format(11753500000000000n, 9)).toBe(`0.0117535 QTZ`)
expect(quartz.format(11700000000000000n)).toBe(`0.0117 QTZ`)
})
test.concurrent('dangerouslyCoinsToWei', () => {
expect(quartz.dangerouslyCoinsToWei(1.5)).toBe(1_500_000_000_000_000_000n)
expect(quartz.dangerouslyCoinsToWei(1)).toBe(1_000_000_000_000_000_000n)
expect(quartz.dangerouslyCoinsToWei(1_000_000_000.123)).toBe(1_000_000_000_123_000_000_000_000_000n)
expect(quartz.dangerouslyCoinsToWei(0.000_000_000_000_001)).toBe(1_000n)
})
test.concurrent('coinsToWei', () => {
expect(quartz.coinsToWei('1.5')).toBe(1_500_000_000_000_000_000n)
expect(quartz.coinsToWei('1')).toBe(1_000_000_000_000_000_000n)
expect(quartz.coinsToWei('1000000000.123')).toBe(1_000_000_000_123_000_000_000_000_000n)
expect(quartz.coinsToWei('0.000000000000001')).toBe(1_000n)
})
})