Mercurial > hg > orthanc
comparison UnitTestsSources/SQLite.cpp @ 724:96a2d2da0fee
more sqlite tests
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 18 Feb 2014 16:55:10 +0100 |
parents | 17815b9d4280 |
children | 4689e400e0fa |
comparison
equal
deleted
inserted
replaced
723:0da078f3affc | 724:96a2d2da0fee |
---|---|
234 { | 234 { |
235 fprintf(stderr, "Exception: [%s]\n", e.What()); | 235 fprintf(stderr, "Exception: [%s]\n", e.What()); |
236 throw e; | 236 throw e; |
237 } | 237 } |
238 } | 238 } |
239 | |
240 | |
241 TEST(SQLite, Types) | |
242 { | |
243 SQLite::Connection c; | |
244 c.OpenInMemory(); | |
245 c.Execute("CREATE TABLE a(id INTEGER PRIMARY KEY, value)"); | |
246 | |
247 { | |
248 SQLite::Statement s(c, std::string("SELECT * FROM a")); | |
249 ASSERT_EQ(2, s.ColumnCount()); | |
250 ASSERT_FALSE(s.Step()); | |
251 } | |
252 | |
253 { | |
254 SQLite::Statement s(c, SQLITE_FROM_HERE, std::string("SELECT * FROM a")); | |
255 ASSERT_FALSE(s.Step()); | |
256 ASSERT_EQ("SELECT * FROM a", s.GetOriginalSQLStatement()); | |
257 } | |
258 | |
259 { | |
260 SQLite::Statement s(c, SQLITE_FROM_HERE, "INSERT INTO a VALUES(NULL, ?);"); | |
261 s.BindNull(0); ASSERT_TRUE(s.Run()); s.Reset(); | |
262 s.BindBool(0, true); ASSERT_TRUE(s.Run()); s.Reset(); | |
263 s.BindInt(0, 42); ASSERT_TRUE(s.Run()); s.Reset(); | |
264 s.BindInt64(0, 42ll); ASSERT_TRUE(s.Run()); s.Reset(); | |
265 s.BindDouble(0, 42.5); ASSERT_TRUE(s.Run()); s.Reset(); | |
266 s.BindCString(0, "Hello"); ASSERT_TRUE(s.Run()); s.Reset(); | |
267 s.BindBlob(0, "Hello", 5); ASSERT_TRUE(s.Run()); s.Reset(); | |
268 } | |
269 | |
270 { | |
271 SQLite::Statement s(c, SQLITE_FROM_HERE, std::string("SELECT * FROM a")); | |
272 ASSERT_TRUE(s.Step()); | |
273 ASSERT_EQ(SQLite::COLUMN_TYPE_NULL, s.GetColumnType(1)); | |
274 ASSERT_TRUE(s.ColumnIsNull(1)); | |
275 ASSERT_TRUE(s.Step()); | |
276 ASSERT_EQ(SQLite::COLUMN_TYPE_INTEGER, s.GetColumnType(1)); | |
277 ASSERT_TRUE(s.ColumnBool(1)); | |
278 ASSERT_TRUE(s.Step()); | |
279 ASSERT_EQ(SQLite::COLUMN_TYPE_INTEGER, s.GetColumnType(1)); | |
280 ASSERT_EQ(42, s.ColumnInt(1)); | |
281 ASSERT_TRUE(s.Step()); | |
282 ASSERT_EQ(SQLite::COLUMN_TYPE_INTEGER, s.GetColumnType(1)); | |
283 ASSERT_EQ(42ll, s.ColumnInt64(1)); | |
284 ASSERT_TRUE(s.Step()); | |
285 ASSERT_EQ(SQLite::COLUMN_TYPE_FLOAT, s.GetColumnType(1)); | |
286 ASSERT_FLOAT_EQ(42.5, s.ColumnDouble(1)); | |
287 ASSERT_TRUE(s.Step()); | |
288 ASSERT_EQ(SQLite::COLUMN_TYPE_TEXT, s.GetColumnType(1)); | |
289 ASSERT_EQ("Hello", s.ColumnString(1)); | |
290 ASSERT_TRUE(s.Step()); | |
291 ASSERT_EQ(SQLite::COLUMN_TYPE_BLOB, s.GetColumnType(1)); | |
292 ASSERT_EQ(5, s.ColumnByteLength(1)); | |
293 ASSERT_TRUE(!memcmp("Hello", s.ColumnBlob(1), 5)); | |
294 | |
295 std::string t; | |
296 ASSERT_TRUE(s.ColumnBlobAsString(1, &t)); | |
297 ASSERT_EQ("Hello", t); | |
298 | |
299 ASSERT_FALSE(s.Step()); | |
300 } | |
301 } |