ox
Version:
Ethereum Standard Library
92 lines (76 loc) • 2.07 kB
text/typescript
import { attest } from '@ark/attest'
import { Hex, Signature } from 'ox'
import { test } from 'vp/test'
const r = '0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf'
const s = '0x4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db8'
test('default', () => {
const signature = Signature.from({
r,
s,
yParity: 1,
})
attest(signature).type.toString.snap(`{
readonly r: "0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf"
readonly s: "0x4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db8"
readonly yParity: 1
}`)
})
test('behavior: unrecovered', () => {
const signature = Signature.from({
r,
s,
})
attest(signature).type.toString.snap(`{
readonly r: "0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf"
readonly s: "0x4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db8"
}`)
})
test('behavior: legacy', () => {
const signature = Signature.from({
r,
s,
v: 27,
})
attest(signature).type.toString.snap(
'{ r: `0x${string}`; s: `0x${string}`; yParity: number }',
)
})
test('behavior: rpc', () => {
const signature = Signature.from({
r,
s,
yParity: Hex.fromNumber(1),
})
attest(signature).type.toString.snap(
'{ r: `0x${string}`; s: `0x${string}`; yParity: number }',
)
})
test('behavior: rpc legacy', () => {
const signature = Signature.from({
r,
s,
v: Hex.fromNumber(27),
})
attest(signature).type.toString.snap(
'{ r: `0x${string}`; s: `0x${string}`; yParity: number }',
)
})
test('behavior: widened', () => {
const signature = Signature.from({
r,
s,
yParity: 1,
} as Signature.Signature)
attest(signature).type.toString.snap(
'{ r: `0x${string}`; s: `0x${string}`; yParity: number }',
)
})
test('behavior: widened, unrecovered', () => {
const signature = Signature.from({
r,
s,
} as Signature.Signature<false>)
attest(signature).type.toString.snap(
'{ r: `0x${string}`; s: `0x${string}`; yParity?: undefined }',
)
})