Subversion Repositories Remote Hare Voting

Rev

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

Rev Author Line No. Line
72 jtkorb 1
#!/usr/bin/env python
15 jtkorb 2
 
3
import os
4
import random
45 jtkorb 5
import cStringIO
15 jtkorb 6
 
7
import parseinput
8
import tally
45 jtkorb 9
import vote
15 jtkorb 10
 
11
def testfile(dirpath, filename):
12
    print filename + ":",
45 jtkorb 13
    tally.fdOut = cStringIO.StringIO()
14
 
15 jtkorb 15
    filenameCSV = os.path.join(dirpath, filename)
16
    filenameOut = os.path.splitext(filenameCSV)[0] + ".out"
45 jtkorb 17
    nWinners, ballots = parseinput.parsefile(filenameCSV)
15 jtkorb 18
 
19
    random.seed(1)
63 jtkorb 20
    vote.doparallel(nWinners, ballots)
45 jtkorb 21
    result = tally.fdOut.getvalue()
15 jtkorb 22
 
23
    if os.path.isfile(filenameOut):
24
        fOut = open(filenameOut)
25
        correct = fOut.read()
26
        if result == correct:
21 jtkorb 27
            print "OK"
28
        else:
29
            print "***** MISMATCH *****"
56 jtkorb 30
            print "      EXPECTED: '" + correct + "'"
31
            print "      GOT:      '" + result + "'"
15 jtkorb 32
    else:
21 jtkorb 33
        print "***** Creating output for " + filename + ": " + result,
15 jtkorb 34
        fOut = open(filenameOut, "w")
35
        fOut.write(result)
36
 
37
def main(dir):
38
    for dirpath, dirnames, filenames in os.walk(dir):
39
        for filename in filenames:
21 jtkorb 40
            if filename.endswith(".csv"):
41
                testfile(dirpath, filename)
15 jtkorb 42
 
43
if __name__=="__main__":
44
    main("tests")