Skip to content

Commit a4f2dfa

Browse files
author
Kareem Zidane
committed
add sqlite test cases
1 parent 3408e7e commit a4f2dfa

File tree

1 file changed

+135
-0
lines changed

1 file changed

+135
-0
lines changed

tests/sql.py

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,141 @@ def test_foreign_key_support(self):
126126
self.db1.execute("CREATE TABLE bar(foo_id INTEGER, FOREIGN KEY (foo_id) REFERENCES foo(id))")
127127
self.assertEqual(self.db1.execute("INSERT INTO bar VALUES(50)"), None)
128128

129+
130+
def test_qmark(self):
131+
self.db.execute("DROP TABLE IF EXISTS foo")
132+
self.db.execute("CREATE TABLE foo (firstname STRING, lastname STRING)")
133+
134+
self.db.execute("INSERT INTO foo VALUES (?, 'bar')", "baz")
135+
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "baz", "lastname": "bar"}])
136+
self.db.execute("DELETE FROM foo")
137+
138+
self.db.execute("INSERT INTO foo VALUES ('bar', ?)", "baz")
139+
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
140+
self.db.execute("DELETE FROM foo")
141+
142+
self.db.execute("INSERT INTO foo VALUES (?, ?)", "bar", "baz")
143+
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
144+
145+
self.db.execute("INSERT INTO foo VALUES ('qux', 'quux')")
146+
self.assertEqual(self.db.execute("SELECT * FROM foo WHERE firstname = ?", 'qux'), [{"firstname": "qux", "lastname": "quux"}])
147+
self.assertEqual(self.db.execute("SELECT * FROM foo WHERE firstname = ? AND lastname = ?", "qux", "quux"), [{"firstname": "qux", "lastname": "quux"}])
148+
self.assertEqual(self.db.execute("SELECT * FROM foo WHERE firstname = ? AND lastname = ?", ("qux", "quux")), [{"firstname": "qux", "lastname": "quux"}])
149+
self.assertEqual(self.db.execute("SELECT * FROM foo WHERE firstname = ? AND lastname = ?", ["qux", "quux"]), [{"firstname": "qux", "lastname": "quux"}])
150+
self.db.execute("DELETE FROM foo")
151+
152+
self.db.execute("INSERT INTO foo VALUES (?, ?)", ("bar", "baz"))
153+
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
154+
self.db.execute("DELETE FROM foo")
155+
156+
self.db.execute("INSERT INTO foo VALUES (?, ?)", ["bar", "baz"])
157+
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
158+
self.db.execute("DELETE FROM foo")
159+
160+
161+
self.db.execute("INSERT INTO foo VALUES (?,?)", "bar", "baz")
162+
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
163+
self.db.execute("DELETE FROM foo")
164+
165+
self.db.execute("DROP TABLE IF EXISTS bar")
166+
self.db.execute("CREATE TABLE bar (firstname STRING)")
167+
self.db.execute("INSERT INTO bar VALUES (?)", "baz")
168+
self.assertEqual(self.db.execute("SELECT * FROM bar"), [{"firstname": "baz"}])
169+
170+
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (?)")
171+
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (?, ?)")
172+
# self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (?)", ('bar', 'baz'))
173+
# self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (?)", ['bar', 'baz'])
174+
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (?, ?)", 'bar', 'baz', 'qux')
175+
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (?, ?)", ('bar', 'baz', 'qux'))
176+
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (?, ?)", ['bar', 'baz', 'qux'])
177+
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (?, ?)", 'bar', baz='baz')
178+
179+
def test_named(self):
180+
self.db.execute("DROP TABLE IF EXISTS foo")
181+
self.db.execute("CREATE TABLE foo (firstname STRING, lastname STRING)")
182+
183+
self.db.execute("INSERT INTO foo VALUES (:baz, 'bar')", baz="baz")
184+
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "baz", "lastname": "bar"}])
185+
self.db.execute("DELETE FROM foo")
186+
187+
self.db.execute("INSERT INTO foo VALUES ('bar', :baz)", baz="baz")
188+
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
189+
self.db.execute("DELETE FROM foo")
190+
191+
self.db.execute("INSERT INTO foo VALUES (:bar, :baz)", bar="bar", baz="baz")
192+
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
193+
194+
self.db.execute("INSERT INTO foo VALUES ('qux', 'quux')")
195+
self.assertEqual(self.db.execute("SELECT * FROM foo WHERE firstname = :qux", qux='qux'), [{"firstname": "qux", "lastname": "quux"}])
196+
self.assertEqual(self.db.execute("SELECT * FROM foo WHERE firstname = :qux AND lastname = :quux", qux="qux", quux="quux"), [{"firstname": "qux", "lastname": "quux"}])
197+
self.db.execute("DELETE FROM foo")
198+
199+
self.db.execute("INSERT INTO foo VALUES (:bar,:baz)", bar="bar", baz="baz")
200+
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
201+
self.db.execute("DELETE FROM foo")
202+
203+
self.db.execute("DROP TABLE IF EXISTS bar")
204+
self.db.execute("CREATE TABLE bar (firstname STRING)")
205+
self.db.execute("INSERT INTO bar VALUES (:baz)", baz="baz")
206+
self.assertEqual(self.db.execute("SELECT * FROM bar"), [{"firstname": "baz"}])
207+
208+
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:bar)")
209+
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:bar, :baz)")
210+
# self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:bar, :baz)", bar='bar', baz='baz', qux='qux')
211+
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:bar, :baz)", 'baz', bar='bar')
212+
213+
214+
def test_numeric(self):
215+
self.db.execute("DROP TABLE IF EXISTS foo")
216+
self.db.execute("CREATE TABLE foo (firstname STRING, lastname STRING)")
217+
218+
self.db.execute("INSERT INTO foo VALUES (:1, 'bar')", "baz")
219+
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "baz", "lastname": "bar"}])
220+
self.db.execute("DELETE FROM foo")
221+
222+
self.db.execute("INSERT INTO foo VALUES ('bar', :1)", "baz")
223+
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
224+
self.db.execute("DELETE FROM foo")
225+
226+
self.db.execute("INSERT INTO foo VALUES (:1, :2)", "bar", "baz")
227+
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
228+
229+
self.db.execute("INSERT INTO foo VALUES ('qux', 'quux')")
230+
self.assertEqual(self.db.execute("SELECT * FROM foo WHERE firstname = :1", 'qux'), [{"firstname": "qux", "lastname": "quux"}])
231+
self.assertEqual(self.db.execute("SELECT * FROM foo WHERE firstname = :1 AND lastname = :2", "qux", "quux"), [{"firstname": "qux", "lastname": "quux"}])
232+
self.assertEqual(self.db.execute("SELECT * FROM foo WHERE firstname = :1 AND lastname = :2", ("qux", "quux")), [{"firstname": "qux", "lastname": "quux"}])
233+
self.assertEqual(self.db.execute("SELECT * FROM foo WHERE firstname = :1 AND lastname = :2", ["qux", "quux"]), [{"firstname": "qux", "lastname": "quux"}])
234+
self.db.execute("DELETE FROM foo")
235+
236+
self.db.execute("INSERT INTO foo VALUES (:1, :2)", ("bar", "baz"))
237+
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
238+
self.db.execute("DELETE FROM foo")
239+
240+
self.db.execute("INSERT INTO foo VALUES (:1, :2)", ["bar", "baz"])
241+
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
242+
self.db.execute("DELETE FROM foo")
243+
244+
245+
self.db.execute("INSERT INTO foo VALUES (:1,:2)", "bar", "baz")
246+
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
247+
self.db.execute("DELETE FROM foo")
248+
249+
self.db.execute("DROP TABLE IF EXISTS bar")
250+
self.db.execute("CREATE TABLE bar (firstname STRING)")
251+
self.db.execute("INSERT INTO bar VALUES (:1)", "baz")
252+
self.assertEqual(self.db.execute("SELECT * FROM bar"), [{"firstname": "baz"}])
253+
254+
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:1)")
255+
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:1, :2)")
256+
# self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:1)", ('bar', 'baz'))
257+
# self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:1)", ['bar', 'baz'])
258+
# self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:1, :2)", 'bar', 'baz', 'qux')
259+
# self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:1, :2)", ('bar', 'baz', 'qux'))
260+
# self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:1, :2)", ['bar', 'baz', 'qux'])
261+
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:1, :2)", 'bar', baz='baz')
262+
263+
129264
if __name__ == "__main__":
130265
suite = unittest.TestSuite([
131266
unittest.TestLoader().loadTestsFromTestCase(SQLiteTests),

0 commit comments

Comments
 (0)