@@ -75,6 +75,24 @@ def test_update_returns_affected_rows(self):
7575 self .assertEqual (self .db .execute ("UPDATE cs50 SET val = 'foo' WHERE id > 1" ), 2 )
7676 self .assertEqual (self .db .execute ("UPDATE cs50 SET val = 'foo' WHERE id = -50" ), 0 )
7777
78+ def test_string_literal_with_colon (self ):
79+ rows = [
80+ {"id" : 1 , "val" : ":foo" },
81+ {"id" : 2 , "val" : "foo:bar" },
82+ {"id" : 3 , "val" : " :baz" },
83+ {"id" : 3 , "val" : ":bar :baz" },
84+ {"id" : 3 , "val" : " :bar :baz" }
85+ ]
86+ for row in rows :
87+ self .db .execute ("INSERT INTO cs50(val) VALUES(:val)" , val = row ["val" ])
88+
89+ self .assertEqual (self .db .execute ("SELECT val FROM cs50 WHERE val = ':foo'" ), [{"val" : ":foo" }])
90+ self .assertEqual (self .db .execute ("SELECT val FROM cs50 WHERE val = ':bar'" ), [])
91+ self .assertEqual (self .db .execute ("SELECT val FROM cs50 WHERE val = 'foo:bar'" ), [{"val" : "foo:bar" }])
92+ self .assertEqual (self .db .execute ("SELECT val FROM cs50 WHERE val = ' :baz'" ), [{"val" : " :baz" }])
93+ self .assertEqual (self .db .execute ("SELECT val FROM cs50 WHERE val = ':bar :baz'" ), [{"val" : ":bar :baz" }])
94+ self .assertEqual (self .db .execute ("SELECT val FROM cs50 WHERE val = ' :bar :baz'" ), [{"val" : " :bar :baz" }])
95+
7896 def tearDown (self ):
7997 self .db .execute ("DROP TABLE cs50" )
8098
0 commit comments