Subversion Repositories Remote Hare Voting

Rev

Rev 72 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#!/usr/bin/env python

import os
import random
import cStringIO

import parseinput
import tally
import vote

def testfile(dirpath, filename):
    print filename + ":",
    tally.fdOut = cStringIO.StringIO()

    filenameCSV = os.path.join(dirpath, filename)
    filenameOut = os.path.splitext(filenameCSV)[0] + ".out"
    nWinners, ballots = parseinput.parsefile(filenameCSV)

    random.seed(1)
    vote.doparallel(nWinners, ballots)
    result = tally.fdOut.getvalue()

    if os.path.isfile(filenameOut):
        fOut = open(filenameOut)
        correct = fOut.read()
        if result == correct:
            print "OK"
        else:
            print "***** MISMATCH *****"
            print "      EXPECTED: '" + correct + "'"
            print "      GOT:      '" + result + "'"
    else:
        print "***** Creating output for " + filename + ": " + result,
        fOut = open(filenameOut, "w")
        fOut.write(result)

def main(dir):
    for dirpath, dirnames, filenames in os.walk(dir):
        for filename in filenames:
            if filename.endswith(".csv"):
                testfile(dirpath, filename)

if __name__=="__main__":
    main("tests")