Subversion Repositories Local Hare Voting

Rev

Rev 63 | Rev 75 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#!/usr/bin/env python

import os
import unittest
import random

import tally

class ModTest(unittest.TestCase):
    def testNormalCase(self):
        self.assertEqual(1, 1)

    def testUniverse(self):
        x = tally.Universe(1.0, 3, 100, quota=5)
        self.assertEqual(x.p, 1.0)
        self.assertEqual(x.id, 1)
        self.assertEqual(x.nBallots, 100)
        self.assertEqual(x.quota, 5)
        self.assertEqual(x.winners, [])

        tally.fParallel = 1

        self.assertEqual(x.forkPendingWinners([5,1,2,3]), 5)
        self.assertEqual(x.p, 1.0/4)
        self.assertEqual(len(tally.Universe.pendingUniverses), 3)

        self.assertEqual(x.forkPendingLosers(["A",1,2,3,4,5]), "A")
        self.assertEqual(x.p, 1.0/4.0/6)
        self.assertEqual(len(tally.Universe.pendingUniverses), 8)
    
        self.assertEqual(x.forkPendingRedist(["A"], "A"), "A")
        self.assertRaises(ZeroDivisionError, x.forkPendingRedist, [], None)

    def testCombinations(self):
        l = ["A", "B", "C", "D", "E"]
        self.doCombination(l, 2, 10)
        self.doCombination(l, 3, 10)
        self.doCombination(l, 4, 5)
        self.doCombination(l, 5, 1)

    def doCombination(self, l, n, t):
        c = 0
        for i in tally.combinations(l, n):
            self.assertEqual(len(i), n)
            print i
            c += 1
        self.assertEqual(c, t)

if __name__=="__main__":
    unittest.main()