source: trunk/essentials/dev-lang/python/Lib/sqlite3/test/hooks.py

Last change on this file was 3225, checked in by bird, 19 years ago

Python 2.5

File size: 4.2 KB
Line 
1#-*- coding: ISO-8859-1 -*-
2# pysqlite2/test/hooks.py: tests for various SQLite-specific hooks
3#
4# Copyright (C) 2006 Gerhard Häring <[email protected]>
5#
6# This file is part of pysqlite.
7#
8# This software is provided 'as-is', without any express or implied
9# warranty. In no event will the authors be held liable for any damages
10# arising from the use of this software.
11#
12# Permission is granted to anyone to use this software for any purpose,
13# including commercial applications, and to alter it and redistribute it
14# freely, subject to the following restrictions:
15#
16# 1. The origin of this software must not be misrepresented; you must not
17# claim that you wrote the original software. If you use this software
18# in a product, an acknowledgment in the product documentation would be
19# appreciated but is not required.
20# 2. Altered source versions must be plainly marked as such, and must not be
21# misrepresented as being the original software.
22# 3. This notice may not be removed or altered from any source distribution.
23
24import os, unittest
25import sqlite3 as sqlite
26
27class CollationTests(unittest.TestCase):
28 def setUp(self):
29 pass
30
31 def tearDown(self):
32 pass
33
34 def CheckCreateCollationNotCallable(self):
35 con = sqlite.connect(":memory:")
36 try:
37 con.create_collation("X", 42)
38 self.fail("should have raised a TypeError")
39 except TypeError, e:
40 self.failUnlessEqual(e.args[0], "parameter must be callable")
41
42 def CheckCreateCollationNotAscii(self):
43 con = sqlite.connect(":memory:")
44 try:
45 con.create_collation("collä", cmp)
46 self.fail("should have raised a ProgrammingError")
47 except sqlite.ProgrammingError, e:
48 pass
49
50 def CheckCollationIsUsed(self):
51 if sqlite.version_info < (3, 2, 1): # old SQLite versions crash on this test
52 return
53 def mycoll(x, y):
54 # reverse order
55 return -cmp(x, y)
56
57 con = sqlite.connect(":memory:")
58 con.create_collation("mycoll", mycoll)
59 sql = """
60 select x from (
61 select 'a' as x
62 union
63 select 'b' as x
64 union
65 select 'c' as x
66 ) order by x collate mycoll
67 """
68 result = con.execute(sql).fetchall()
69 if result[0][0] != "c" or result[1][0] != "b" or result[2][0] != "a":
70 self.fail("the expected order was not returned")
71
72 con.create_collation("mycoll", None)