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) }) })