Exemplo n.º 1
0
 def do_test(self, string, **kwargs):
     p = DBI(None, None)
     p.flat = True
     p.parse(string)
     for kw in kwargs:
         self.assertTrue(getattr(p, kw) == kwargs[kw],
                         "QUERY: '%s' checking '%s', %s != %s" % (
                             p.query,
                             kw, 
                             getattr(p, kw), 
                             kwargs[kw]))
Exemplo n.º 2
0
 def __init__(self, *args, **kwargs):
     self.dbi = DBI(SelectTest.DB, None) # no document here
     self.dbi.flat = True
     self.dbi.sdb = SimpleAccess(SelectTest.DB)
     self.pcount = len(SelectTest.DB._tables["Person"]["handles_func"]())
     self.john_count = 0
     with SelectTest.DB._tables["Person"]["cursor_func"]() as cursor:
         for handle, person in cursor:
             name = SelectTest.DB._tables["Person"]["class_func"](person).get_primary_name()
             if name and "John" in name.first_name:
                 self.john_count += 1
     unittest.TestCase.__init__(self, *args, **kwargs)
Exemplo n.º 3
0
class SelectTest(unittest.TestCase):
    DB = import_as_dict(os.environ["GRAMPS_RESOURCES"] + "/example/gramps/data.gramps", User())

    def __init__(self, *args, **kwargs):
        self.dbi = DBI(SelectTest.DB, None) # no document here
        self.dbi.flat = True
        self.dbi.sdb = SimpleAccess(SelectTest.DB)
        self.pcount = len(SelectTest.DB._tables["Person"]["handles_func"]())
        self.john_count = 0
        with SelectTest.DB._tables["Person"]["cursor_func"]() as cursor:
            for handle, person in cursor:
                name = SelectTest.DB._tables["Person"]["class_func"](person).get_primary_name()
                if name and "John" in name.first_name:
                    self.john_count += 1
        unittest.TestCase.__init__(self, *args, **kwargs)
    
    def runTest(self): # for python -i
        pass

    def do_test(self, test, string, count):
        self.dbi.parse(string)
        table = Table()
        self.dbi.process_table(table)
        self.assertTrue(len(table.data) == count,
                        "Test #%d, Selected %d records from example.gramps; should have been %d: '%s'" % (
                            test, len(table.data), count, string))
        return table

    def test_select1(self):
        self.do_test(1, "select * from person;", self.pcount)

    def test_select2(self):
        self.do_test(2, "select primary_name.first_name "
                     "from person "
                     "where 'John' in primary_name.first_name;", 
                     self.john_count)

    def test_select3(self):
        self.do_test(3, "update person SET primary_name.first_name='XXX' "
                     "where 'John' in primary_name.first_name;", 
                     self.john_count)

    def test_select4(self):
        self.do_test(4, "select primary_name.first_name "
                     "from person "
                     "where primary_name.first_name == 'XXX';", 
                     self.john_count)

    def test_select5(self):
        self.do_test(5, "UPDATE person SET private = (False or False) "
                     "from person "
                     "where primary_name.first_name == 'XXX';", 
                     self.john_count)

    def test_select6(self):
        self.do_test(6, "select private, primary_name "
                     "from person "
                     "where primary_name.first_name == 'XXX' and private;", 
                     0)

    def test_select7(self):
        self.do_test(7, "SELECT private, primary_name "
                     "FROM person "
                     "where primary_name.first_name == 'XXX' and not private;", 
                     self.john_count)

    def test_select8(self):
        self.do_test(8, "UPDATE person SET private = (False or True) "
                     "from person "
                     "where primary_name.first_name == 'XXX';", 
                     self.john_count)

    def test_select9(self):
        self.do_test(9, "select private, primary_name "
                     "from person "
                     "where primary_name.first_name == 'XXX' and private;", 
                     self.john_count)

    def test_select10(self):
        self.do_test(10, "select private, primary_name "
                     "from person "
                     "where primary_name.first_name == 'XXX' and not private;", 
                     0)

    def test_select11(self):
        self.do_test(11,
            "SELECT * from person LIMIT 10, 20",
            10)

    def test_select12(self):
        self.do_test(12,
            "SELECT * from person LIMIT 5",
            5)
        
    def test_select13(self):
        self.do_test(13,
            "SELECT ROWNUM, random.random() from person LIMIT 5",
            5)

    def test_select14(self):
        self.do_test(14, "select * from person where not parent_family_list[0].private;", 38)

    def test_select15(self):
        self.do_test(15.1, "UPDATE person SET private=True WHERE not parent_family_list[0].private;", 38)
        self.do_test(15.2, "SELECT * from person WHERE private;", 38)
        self.do_test(15.3, "UPDATE person SET private=False;", 60)
        self.do_test(15.4, "UPDATE person SET private=False WHERE private;", 0)
        self.do_test(15.5, "UPDATE person SET private=True;", 60)
        self.do_test(15.6, "UPDATE person SET private=True where not private;", 0)

    def test_select16(self):
        table = self.do_test(16.1, "SELECT gramps_id as id from person;", self.pcount)
        self.assertTrue(table.data[0][0] == "I0004", "First row, first col is %s, should be %s" % (table.data[0][0], "I0004"))

    def test_select17(self):
        table = self.do_test(17.1, "SELECT gramps_id as id from person where id == 'I0004';", 1)
        self.assertTrue(table.data[0][0] == "I0004", "First row, first col is %s, should be %s" % (table.data[0][0], "I0004"))

        table = self.do_test(17.2, "SELECT gramps_id, father_handle.primary_name.first_name "
                                   "FROM family WHERE father_handle.primary_name.first_name;", 23) 
        self.assertTrue(table.data[0][0] == "F0005", "First row, first col is %s, should be %s" % (table.data[0][0], "F0005"))
        self.assertTrue(table.data[0][1] == "Herman Julius", "First row, second col is %s, should be %s" % (table.data[0][1], "Herman Julius"))

        table = self.do_test(17.3, "UPDATE family SET father_handle.primary_name.first_name='Father' WHERE gramps_id == 'F0005';", 1)
        self.assertTrue(table.data[0][0] == "F0005", "First row, first col is %s, should be %s" % (table.data[0][0], "F0005"))

        table = self.do_test(17.4, "SELECT gramps_id, father_handle.primary_name.first_name, father_handle.gramps_id "
                                   "FROM family WHERE gramps_id == 'F0005';", 1) 
        self.assertTrue(table.data[0][0] == "F0005", "1 First row, first col is %s, should be %s" % (table.data[0][0], "F0005"))
        self.assertTrue(table.data[0][1] == "Father", "1 First row, second col is %s, should be %s" % (table.data[0][1], "Father"))
        self.assertTrue(table.data[0][2] == "I0012", "1 First row, third col is %s, should be %s" % (table.data[0][2], "I0012"))

        table = self.do_test(17.5, "SELECT gramps_id, primary_name.first_name "
                                   "FROM person WHERE gramps_id == 'I0012';", 1) 
        self.assertTrue(table.data[0][0] == "I0012", "First row, first col is %s, should be %s" % (table.data[0][0], "I0012"))
        self.assertTrue(table.data[0][1] == "Father", "First row, second col is %s, should be %s" % (table.data[0][1], "Father"))

    def test_select18(self):
        table = self.do_test(18.1, "SELECT gramps_id, father_handle.GIVEN from family where gramps_id == 'F0005';", 1)
        self.assertTrue(table.data[0][1] == "Father", "First row, second col is %s, should be %s" % (table.data[0][1], "Father"))