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 }