class TestAddition(unittest.TestCase):

    def setUp(self):
        self.addition = Addition()

    def test_beschreibung(self):
        res = raw_input(self.addition.beschreibung())
        print self.addition.pruefung(res)
        pass
print "===============================================================\n"

result = []
test = True
IMAX = 2
punkte = 0
for i in range(IMAX):
    print "\n Aufgabe %s" % i
    print "-----------"
    if random() < 0.5:
        aufgabe = Addition(stellen=1, anzahl=2)
    else:
        aufgabe = Multiplikation(stellen=1, anzahl=2)
    eingabe = raw_input(aufgabe.beschreibung())
    # Ergebnis pruefen
    aufgabe.pruefung(eingabe, test=test)
    # Aufgabe an die Ergebnisliste haengen
    result.append(aufgabe)

# Ermittle Ergebnisstatistik
# filter alle falschen Antworten
# falsche = filter((def f(x): return x.istKorrekt > 0), result)
korrekte = [x for x in result if x.istKorrekt() > 0]

print "\n Auswertung"
print "-----------"
print "Du hast %s von %s möglichen Punkten erreicht." % (len(korrekte), IMAX)
quote = round(100*len(korrekte)/(IMAX*1.0),0)
print "Eine Quote von %s Prozent." % quote
#print "Fehlerliste"
#for f in fehlerliste:
print "Rechne sie im Kopf oder auf dem Papier."
print "Andere Hilfsmittel sind nicht erlaubt."
print "===============================================================\n"

result = []
test = True
IMAX = 10
punkte = 0
for i in range(IMAX):
    print "\n Aufgabe %s" % i
    print "-----------"
    if random() < 0.5:
        aufgabe = Addition(stellen=3, anzahl=3)
    else:
        aufgabe = Multiplikation(stellen=2, anzahl=2)
    eingabe = raw_input(aufgabe.beschreibung())
    # Aufgabe an die Ergebnisliste haengen
    result.append(aufgabe.pruefung(eingabe, test=test))

# Ermittle Ergebnisstatistik
punkte = map(add, result)

print "\n Auswertung"
print "-----------"
print "Du hast %s von %s möglichen Punkten erreicht." % (punkte, IMAX)
quote = round(100 * punkte / (IMAX * 1.0), 0)
print "Eine Quote von %s Prozent." % quote
# print "Fehlerliste"
# for f in fehlerliste:
#    print f["aufgabe"].pruefung(f["eingabe"], test=False)