@unique-nft/api
Version:
Definitely typed JS API for the Unique Network blockchain
114 lines (92 loc) • 4.65 kB
text/typescript
import {describe, expect, test} from 'vitest'
import {init, UniqueUtils} from '../../index'
describe('addresses', async () => {
await init()
const opal = '5D7WxWqqUYNm962RUNdf1UTCcuasXCigHFMGG4hWX6hkp7zU'
const quartz = 'yGDnKaHASMGaWSKS4Tv3SNQpTyJH89Ao3LfhgzcMbdhz6y2VT'
const unique = 'unfZsSFU21ZtJwkEztT1Tc7c6T9R9GxseJgeUDwFQLSs8UDLb'
const ethMirror = '0x2E61479A581F023808AAa5f2EC90bE6c2b250102'
const doubleMirror = '5HikVEnsQT3U9LyTh5X9Bewud1wv4WkS7ovxrHRMCT2DFZPY'
const ethAddress = '0x1B7AAcb25894D792601BBE4Ed34E07Ed14Fd31eB'
const subMirrorOfEthAddress = '5EctGy9Wyoa8XT8fV8hrJHL6ywaSb2ui29vs47Ybe8jfMYHR'
test.concurrent('is', () => {
expect(UniqueUtils.Address.is.substrateAddress(opal)).toBe(true)
expect(UniqueUtils.Address.is.substrateAddress(ethAddress)).toBe(false)
expect(UniqueUtils.Address.is.substrateAddress('123')).toBe(false)
expect(UniqueUtils.Address.is.ethereumAddress(opal)).toBe(false)
expect(UniqueUtils.Address.is.ethereumAddress(ethAddress)).toBe(true)
expect(UniqueUtils.Address.is.ethereumAddress('123')).toBe(false)
})
test.concurrent('subToEthMirror', () => {
expect(UniqueUtils.Address.subToEthMirror(opal)).toBe(ethMirror)
expect(() => {
UniqueUtils.Address.subToEthMirror('123')
}).toThrowError()
})
test.concurrent('ethToSubMirror', () => {
expect(UniqueUtils.Address.ethToSubMirror(ethMirror)).toBe(doubleMirror)
expect(UniqueUtils.Address.ethToSubMirror(ethAddress)).toBe(subMirrorOfEthAddress)
expect(() => {
UniqueUtils.Address.ethToSubMirror('123')
}).toThrowError()
})
test.concurrent('normalizeSubstrateAddress', () => {
expect(UniqueUtils.Address.normalizeSubstrateAddress(quartz)).toBe(opal)
expect(UniqueUtils.Address.normalizeSubstrateAddress(quartz, 7391)).toBe(unique)
expect(() => {
UniqueUtils.Address.normalizeSubstrateAddress('123')
}).toThrowError()
})
test.concurrent('normalizeEthereumAddress', () => {
expect(UniqueUtils.Address.normalizeEthereumAddress(ethMirror.toLowerCase())).toBe(ethMirror)
expect(() => {
UniqueUtils.Address.normalizeEthereumAddress('123')
}).toThrowError()
})
test.concurrent('Collection address ', () => {
expect(UniqueUtils.Address.collectionIdToEthAddress(127))
.toBe('0x17c4e6453cC49aAAAeACa894E6d9683E0000007f')
expect(() => {
UniqueUtils.Address.collectionIdToEthAddress(2 ** 32)
}).toThrow()
expect(UniqueUtils.Address.ethAddressToCollectionId('0x17c4E6453CC49AAAAEAca894E6D9683e000000fF'))
.toBe(255)
expect(() => {
UniqueUtils.Address.ethAddressToCollectionId('0x17c4E6453CC49AAAAEAca894E6D9683e000000f')
}).toThrow()
})
test.concurrent('Nesting address', () => {
expect(UniqueUtils.Address.nestingAddressToCollectionIdAndTokenId('0xF8238cCfFf8Ed887463Fd5E00000000000000000'))
.toEqual({collectionId: 0, tokenId: 0})
expect(UniqueUtils.Address.nestingAddressToCollectionIdAndTokenId('0xF8238CCFfF8ed887463fd5E0000000fE0000007F'))
.toEqual({collectionId: 254, tokenId: 127})
expect(UniqueUtils.Address.nestingAddressToCollectionIdAndTokenId('0xF8238CcFFF8ed887463fD5E0fffffFFFFFfFFffF'))
.toEqual({collectionId: 2 ** 32 - 1, tokenId: 2 ** 32 - 1})
expect(() => {UniqueUtils.Address.nestingAddressToCollectionIdAndTokenId('0xF8238CCFfF8ed887463fd5E0000000fE0000007')})
.toThrow()
expect(UniqueUtils.Address.collectionIdAndTokenIdToNestingAddress(0, 0))
.toBe('0xF8238cCfFf8Ed887463Fd5E00000000000000000')
expect(UniqueUtils.Address.collectionIdAndTokenIdToNestingAddress(254, 127))
.toBe('0xF8238CCFfF8ed887463fd5E0000000fE0000007F')
expect(UniqueUtils.Address.collectionIdAndTokenIdToNestingAddress(2 ** 32 - 1, 2 ** 32 - 1))
.toBe('0xF8238CcFFF8ed887463fD5E0fffffFFFFFfFFffF')
expect(() => {
UniqueUtils.Address.collectionIdAndTokenIdToNestingAddress(-1, 0)
}).toThrow()
expect(() => {
UniqueUtils.Address.collectionIdAndTokenIdToNestingAddress(2 ** 32, 0)
}).toThrow()
expect(() => {
UniqueUtils.Address.collectionIdAndTokenIdToNestingAddress(0, -1)
}).toThrow()
expect(() => {
UniqueUtils.Address.collectionIdAndTokenIdToNestingAddress(0, 2 ** 32)
}).toThrow()
expect(() => {
UniqueUtils.Address.collectionIdAndTokenIdToNestingAddress(-1, -1)
}).toThrow()
expect(() => {
UniqueUtils.Address.collectionIdAndTokenIdToNestingAddress(2 ** 32, 2 ** 32)
}).toThrow()
})
})