Subversion Repositories Local Hare Voting

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
15 jtkorb 1
#!/p/python/python
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)
45 jtkorb 20
    vote.domany(10, nWinners, ballots)
21
    tally.trace("")
22
    vote.doone(nWinners, ballots)
23
    result = tally.fdOut.getvalue()
15 jtkorb 24
 
25
    if os.path.isfile(filenameOut):
26
        fOut = open(filenameOut)
27
        correct = fOut.read()
28
        if result == correct:
21 jtkorb 29
            print "OK"
30
        else:
31
            print "***** MISMATCH *****"
56 jtkorb 32
            print "      EXPECTED: '" + correct + "'"
33
            print "      GOT:      '" + result + "'"
15 jtkorb 34
    else:
21 jtkorb 35
        print "***** Creating output for " + filename + ": " + result,
15 jtkorb 36
        fOut = open(filenameOut, "w")
37
        fOut.write(result)
38
 
39
def main(dir):
40
    for dirpath, dirnames, filenames in os.walk(dir):
41
        for filename in filenames:
21 jtkorb 42
            if filename.endswith(".csv"):
43
                testfile(dirpath, filename)
15 jtkorb 44
 
45
if __name__=="__main__":
46
    main("tests")