Home Reference Source

src/ballotBox.test.ts

const bb = require('./ballotBox')
const _const = require('./const')
const Account = require('eth-lib/lib/account')


test('create and verify proxy ballots', () => {
    const privKey = "0x0100000000000000000000000000000000000000000000000000000000000000"
    const acct = Account.fromPrivate(privKey)
    const {address} = acct

    const proxyVote = bb.mkSignedBallotForProxy(
        "0x0000000000000000053970000000000000000000000000000000000000000000", // some ballot id
        1, // sequence num
        "0x4000000000000000000000000000000000000000000000000000000000000000", // some voteData
        "0x", // trivial extra
        privKey
    )

    const verificationResp = bb.verifySignedBallotForProxy(proxyVote)

    expect(verificationResp.address.toLowerCase()).toEqual(address.toLowerCase())
    expect(verificationResp.verified).toEqual(true)
})


test('generates correct range3 voteData', () => {
    // trivial case
    expect(bb.genRange3VoteData([])).toEqual(_const.zeroHash)

    // format for binary-no votes
    expect(bb.genRange3VoteData([-1])).toEqual("0x4000000000000000000000000000000000000000000000000000000000000000")

    // format for binary-yes votes
    expect(bb.genRange3VoteData([1])).toEqual("0x8000000000000000000000000000000000000000000000000000000000000000")

    // more complex examples

    // raw vote bits: 000 001 010 011 100 101 110
    expect(bb.genRange3VoteData([-3,-2,-1,0,1,2,3])).toEqual("0x0539700000000000000000000000000000000000000000000000000000000000")

    // 000 000 010
    expect(bb.genRange3VoteData([-3,-3,-1])).toEqual("0x0100000000000000000000000000000000000000000000000000000000000000")

    // 000 000 010 000 000 100
    expect(bb.genRange3VoteData([-3,-3,-1,-3,-3,1])).toEqual("0x0101000000000000000000000000000000000000000000000000000000000000")

    // 000 000 100
    expect(bb.genRange3VoteData([-3,-3,1])).toEqual("0x0200000000000000000000000000000000000000000000000000000000000000")
})