ox
Version:
90 lines (74 loc) • 2.46 kB
text/typescript
import { Address } from 'ox'
import { TempoAddress } from 'ox/tempo'
import { describe, expect, test } from 'vitest'
const rawAddress = Address.checksum(
'0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28',
)
describe('resolve', () => {
test('hex address passthrough', () => {
expect(TempoAddress.resolve(rawAddress)).toBe(rawAddress)
})
test('tempo address', () => {
const tempoAddr = TempoAddress.format(rawAddress)
expect(TempoAddress.resolve(tempoAddr)).toBe(rawAddress)
})
})
describe('format', () => {
test('default', () => {
expect(TempoAddress.format(rawAddress)).toMatchInlineSnapshot(
`"tempox0x742d35cc6634c0532925a3b844bc9e7595f2bd28"`,
)
})
test('tempo address input', () => {
const tempoAddr = TempoAddress.format(rawAddress)
expect(TempoAddress.format(tempoAddr)).toBe(tempoAddr)
})
test('lowercase output', () => {
const result = TempoAddress.format(rawAddress)
expect(result).toBe(result.toLowerCase())
})
test('address length', () => {
expect(TempoAddress.format(rawAddress).length).toBe(48)
})
})
describe('parse', () => {
test('default', () => {
const encoded = TempoAddress.format(rawAddress)
expect(TempoAddress.parse(encoded)).toMatchInlineSnapshot(`
{
"address": "0x742d35CC6634c0532925a3B844bc9e7595F2Bd28",
}
`)
})
test('uppercase hex', () => {
expect(
TempoAddress.parse('tempox0x742D35CC6634C0532925A3B844BC9E7595F2BD28')
.address,
).toBe(rawAddress)
})
test('error: invalid prefix', () => {
expect(() =>
TempoAddress.parse('bitcoin0x742d35cc6634c0532925a3b844bc9e7595f2bd28'),
).toThrowErrorMatchingInlineSnapshot(
`[TempoAddress.InvalidPrefixError: Tempo address "bitcoin0x742d35cc6634c0532925a3b844bc9e7595f2bd28" has an invalid prefix. Expected "tempox".]`,
)
})
test('error: invalid hex', () => {
expect(() => TempoAddress.parse('tempox0xinvalid')).toThrow()
})
test('error: missing 0x prefix', () => {
expect(() => TempoAddress.parse('tempox742d35cc')).toThrow()
})
})
describe('validate', () => {
test('valid address', () => {
const encoded = TempoAddress.format(rawAddress)
expect(TempoAddress.validate(encoded)).toBe(true)
})
test('invalid address', () => {
expect(TempoAddress.validate('invalid')).toBe(false)
})
test('invalid hex', () => {
expect(TempoAddress.validate('tempox0xinvalid')).toBe(false)
})
})