~ubuntu-branches/ubuntu/saucy/solfege/saucy

« back to all changes in this revision

Viewing changes to solfege/tests/test_statistics.py

  • Committer: Bazaar Package Importer
  • Author(s): Tom Cato Amundsen
  • Date: 2010-03-28 06:34:28 UTC
  • mfrom: (1.1.10 upstream) (2.1.7 sid)
  • Revision ID: james.westby@ubuntu.com-20100328063428-wg2bqvoce2aq4xfb
Tags: 3.15.9-1
* New upstream release.
* Redo packaging. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# vim: set fileencoding=utf8 :
 
2
# Solfege - free ear training software
 
3
# Copyright (C) 2009 Tom Cato Amundsen
 
4
# License is GPL, see file COPYING
 
5
 
 
6
from __future__ import absolute_import
 
7
import unittest
 
8
from solfege import statistics
 
9
from solfege import application
 
10
from solfege import lessonfile
 
11
from solfege import optionparser
 
12
from solfege.exercises import idbyname
 
13
 
 
14
class TestDB(unittest.TestCase):
 
15
    def test_en(self):
 
16
        s1 = "var = 1"
 
17
        s2 = "#comment\nvar = 1"
 
18
        s3 = "#comment\n\nvar = 1"
 
19
        self.assertEqual(statistics.hash_lessonfile_text(s1),
 
20
                         statistics.hash_lessonfile_text(s2))
 
21
        self.assertEqual(statistics.hash_lessonfile_text(s1),
 
22
                         statistics.hash_lessonfile_text(s3))
 
23
    def test_two(self):
 
24
        opt_parser = optionparser.SolfegeOptionParser()
 
25
        options, args = opt_parser.parse_args()
 
26
        a = application.SolfegeApp(options)
 
27
        t = idbyname.Teacher('idbyname')
 
28
        t.set_lessonfile(u'solfege:lesson-files/chord-min-major')
 
29
        t.m_statistics.reset_session()
 
30
        t.m_statistics.add_wrong('minor', 'major')
 
31
        t.m_statistics.add_wrong('minor', 'major')
 
32
        t.m_statistics.add_wrong('minor', 'minor')
 
33
        t.m_statistics.add_correct('major')
 
34
        for seconds in (-1, 0, 10000):
 
35
            self.assertEquals(t.m_statistics.get_num_correct_for_key(seconds, 'minor'), 1)
 
36
            self.assertEquals(t.m_statistics.get_num_guess_for_key(seconds, 'minor'), 3)
 
37
    def test_store_variables(self):
 
38
        db = statistics.DB()
 
39
        db.set_variable('database_version', 2)
 
40
        self.assertEquals(db.get_variable('database_version'), 2)
 
41
        db.set_variable('database_version', 3)
 
42
        self.assertEquals(db.get_variable('database_version'), 3)
 
43
        self.assertRaises(db.VariableTypeError,
 
44
            lambda: db.set_variable('database_version', '3'))
 
45
        db.set_variable('textvar', u'this is кофе')
 
46
        self.assertEquals(db.get_variable('textvar'), u'this is кофе')
 
47
        self.assertEquals(db.get_variable('textvar'), 'this is кофе')
 
48
        self.assertRaises(db.VariableTypeError,
 
49
            lambda: db.set_variable('textvar', 5))
 
50
        self.assertRaises(db.VariableTypeError,
 
51
            lambda: db.set_variable('textvar', 5.5))
 
52
        self.assertRaises(db.VariableTypeError,
 
53
            lambda: db.set_variable('textvar', True))
 
54
        self.assertRaises(db.VariableTypeError,
 
55
            lambda: db.set_variable('str_text', 'string'))
 
56
        db.set_variable('known_number', 3.14159265)
 
57
        self.assertEquals(db.get_variable('known_number'), 3.14159265)
 
58
        self.assertRaises(db.VariableUndefinedError,
 
59
            lambda: db.get_variable('e'))
 
60
        db.del_variable('known_number')
 
61
        self.assertRaises(db.VariableUndefinedError, 
 
62
            lambda: db.del_variable('does_not_exist'))
 
63
 
 
64
               
 
65
suite = unittest.makeSuite(TestDB)