Skip to content

Commit 2be1e24

Browse files
committed
adds tests for IN
1 parent cf34af7 commit 2be1e24

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

tests/sql.py

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
from cs50.sql import SQL
99

10+
1011
class SQLTests(unittest.TestCase):
1112

1213
def test_multiple_statements(self):
@@ -142,6 +143,7 @@ def tearDownClass(self):
142143
if not str(e).startswith("(1051"):
143144
raise e
144145

146+
145147
class MySQLTests(SQLTests):
146148
@classmethod
147149
def setUpClass(self):
@@ -150,6 +152,7 @@ def setUpClass(self):
150152
def setUp(self):
151153
self.db.execute("CREATE TABLE cs50 (id INTEGER NOT NULL AUTO_INCREMENT, val VARCHAR(16), bin BLOB, PRIMARY KEY (id))")
152154

155+
153156
class PostgresTests(SQLTests):
154157
@classmethod
155158
def setUpClass(self):
@@ -161,7 +164,9 @@ def setUp(self):
161164
def test_cte(self):
162165
self.assertEqual(self.db.execute("WITH foo AS ( SELECT 1 AS bar ) SELECT bar FROM foo"), [{"bar": 1}])
163166

167+
164168
class SQLiteTests(SQLTests):
169+
165170
@classmethod
166171
def setUpClass(self):
167172
open("test.db", "w").close()
@@ -207,27 +212,44 @@ def test_qmark(self):
207212
self.assertEqual(self.db.execute("SELECT * FROM foo WHERE firstname = ? AND lastname = ?", ["qux", "quux"]), [{"firstname": "qux", "lastname": "quux"}])
208213
self.db.execute("DELETE FROM foo")
209214

215+
self.db.execute("INSERT INTO foo VALUES (?)", ("bar", "baz"))
216+
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
217+
self.db.execute("DELETE FROM foo")
218+
210219
self.db.execute("INSERT INTO foo VALUES (?, ?)", ("bar", "baz"))
211220
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
212221
self.db.execute("DELETE FROM foo")
213222

214-
self.db.execute("INSERT INTO foo VALUES (?, ?)", ["bar", "baz"])
223+
self.db.execute("INSERT INTO foo VALUES (?)", ["bar", "baz"])
215224
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
216225
self.db.execute("DELETE FROM foo")
217226

227+
self.db.execute("INSERT INTO foo VALUES (?, ?)", ["bar", "baz"])
228+
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
229+
self.db.execute("DELETE FROM foo")
218230

219231
self.db.execute("INSERT INTO foo VALUES (?,?)", "bar", "baz")
220232
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
221233
self.db.execute("DELETE FROM foo")
222234

223235
self.db.execute("CREATE TABLE bar (firstname STRING)")
236+
224237
self.db.execute("INSERT INTO bar VALUES (?)", "baz")
225238
self.assertEqual(self.db.execute("SELECT * FROM bar"), [{"firstname": "baz"}])
239+
self.db.execute("DELETE FROM bar")
240+
241+
self.db.execute("INSERT INTO bar VALUES (?)", "baz")
242+
self.db.execute("INSERT INTO bar VALUES (?)", "qux")
243+
self.assertEqual(self.db.execute("SELECT * FROM bar WHERE firstname IN (?)", ("baz", "qux")), [{"firstname": "baz"}, {"firstname": "qux"}])
244+
self.db.execute("DELETE FROM bar")
245+
246+
self.db.execute("INSERT INTO bar VALUES (?)", "baz")
247+
self.db.execute("INSERT INTO bar VALUES (?)", "qux")
248+
self.assertEqual(self.db.execute("SELECT * FROM bar WHERE firstname IN (?)", ["baz", "qux"]), [{"firstname": "baz"}, {"firstname": "qux"}])
249+
self.db.execute("DELETE FROM bar")
226250

227251
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (?)")
228252
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (?, ?)")
229-
# self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (?)", ('bar', 'baz'))
230-
# self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (?)", ['bar', 'baz'])
231253
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (?, ?)", 'bar', 'baz', 'qux')
232254
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (?, ?)", ('bar', 'baz', 'qux'))
233255
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (?, ?)", ['bar', 'baz', 'qux'])

0 commit comments

Comments
 (0)