| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/utility/importer/edge_database_reader_win.h" | 5 #include "chrome/utility/importer/edge_database_reader_win.h" |
| 6 | 6 |
| 7 #include <windows.h> | 7 #include <windows.h> |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 #include <string.h> | 10 #include <string.h> |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 | 127 |
| 128 TEST_F(EdgeDatabaseReaderTest, OpenTableDatabaseTest) { | 128 TEST_F(EdgeDatabaseReaderTest, OpenTableDatabaseTest) { |
| 129 // Only verified to work with ESE library on Windows 7 and above. | 129 // Only verified to work with ESE library on Windows 7 and above. |
| 130 if (base::win::GetVersion() < base::win::VERSION_WIN7) | 130 if (base::win::GetVersion() < base::win::VERSION_WIN7) |
| 131 return; | 131 return; |
| 132 | 132 |
| 133 base::FilePath database_path; | 133 base::FilePath database_path; |
| 134 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); | 134 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); |
| 135 EdgeDatabaseReader reader; | 135 EdgeDatabaseReader reader; |
| 136 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); | 136 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); |
| 137 scoped_ptr<EdgeDatabaseTableEnumerator> table_enum = | 137 std::unique_ptr<EdgeDatabaseTableEnumerator> table_enum = |
| 138 reader.OpenTableEnumerator(L"TestTable"); | 138 reader.OpenTableEnumerator(L"TestTable"); |
| 139 EXPECT_NE(nullptr, table_enum); | 139 EXPECT_NE(nullptr, table_enum); |
| 140 } | 140 } |
| 141 | 141 |
| 142 TEST_F(EdgeDatabaseReaderTest, InvalidTableDatabaseTest) { | 142 TEST_F(EdgeDatabaseReaderTest, InvalidTableDatabaseTest) { |
| 143 // Only verified to work with ESE library on Windows 7 and above. | 143 // Only verified to work with ESE library on Windows 7 and above. |
| 144 if (base::win::GetVersion() < base::win::VERSION_WIN7) | 144 if (base::win::GetVersion() < base::win::VERSION_WIN7) |
| 145 return; | 145 return; |
| 146 | 146 |
| 147 base::FilePath database_path; | 147 base::FilePath database_path; |
| 148 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); | 148 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); |
| 149 EdgeDatabaseReader reader; | 149 EdgeDatabaseReader reader; |
| 150 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); | 150 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); |
| 151 scoped_ptr<EdgeDatabaseTableEnumerator> table_enum = | 151 std::unique_ptr<EdgeDatabaseTableEnumerator> table_enum = |
| 152 reader.OpenTableEnumerator(L"NotARealTableName"); | 152 reader.OpenTableEnumerator(L"NotARealTableName"); |
| 153 EXPECT_EQ(nullptr, table_enum); | 153 EXPECT_EQ(nullptr, table_enum); |
| 154 } | 154 } |
| 155 | 155 |
| 156 TEST_F(EdgeDatabaseReaderTest, NotOpenDatabaseTest) { | 156 TEST_F(EdgeDatabaseReaderTest, NotOpenDatabaseTest) { |
| 157 // Only verified to work with ESE library on Windows 7 and above. | 157 // Only verified to work with ESE library on Windows 7 and above. |
| 158 if (base::win::GetVersion() < base::win::VERSION_WIN7) | 158 if (base::win::GetVersion() < base::win::VERSION_WIN7) |
| 159 return; | 159 return; |
| 160 | 160 |
| 161 EdgeDatabaseReader reader; | 161 EdgeDatabaseReader reader; |
| 162 scoped_ptr<EdgeDatabaseTableEnumerator> table_enum = | 162 std::unique_ptr<EdgeDatabaseTableEnumerator> table_enum = |
| 163 reader.OpenTableEnumerator(L"TestTable"); | 163 reader.OpenTableEnumerator(L"TestTable"); |
| 164 EXPECT_EQ(nullptr, table_enum); | 164 EXPECT_EQ(nullptr, table_enum); |
| 165 EXPECT_EQ(JET_errDatabaseNotFound, reader.last_error()); | 165 EXPECT_EQ(JET_errDatabaseNotFound, reader.last_error()); |
| 166 } | 166 } |
| 167 | 167 |
| 168 TEST_F(EdgeDatabaseReaderTest, AlreadyOpenDatabaseTest) { | 168 TEST_F(EdgeDatabaseReaderTest, AlreadyOpenDatabaseTest) { |
| 169 // Only verified to work with ESE library on Windows 7 and above. | 169 // Only verified to work with ESE library on Windows 7 and above. |
| 170 if (base::win::GetVersion() < base::win::VERSION_WIN7) | 170 if (base::win::GetVersion() < base::win::VERSION_WIN7) |
| 171 return; | 171 return; |
| 172 | 172 |
| 173 base::FilePath database_path; | 173 base::FilePath database_path; |
| 174 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); | 174 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); |
| 175 EdgeDatabaseReader reader; | 175 EdgeDatabaseReader reader; |
| 176 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); | 176 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); |
| 177 EXPECT_FALSE(reader.OpenDatabase(database_path.value())); | 177 EXPECT_FALSE(reader.OpenDatabase(database_path.value())); |
| 178 EXPECT_EQ(JET_errOneDatabasePerSession, reader.last_error()); | 178 EXPECT_EQ(JET_errOneDatabasePerSession, reader.last_error()); |
| 179 } | 179 } |
| 180 | 180 |
| 181 TEST_F(EdgeDatabaseReaderTest, OpenTableAndReadDataDatabaseTest) { | 181 TEST_F(EdgeDatabaseReaderTest, OpenTableAndReadDataDatabaseTest) { |
| 182 // Only verified to work with ESE library on Windows 7 and above. | 182 // Only verified to work with ESE library on Windows 7 and above. |
| 183 if (base::win::GetVersion() < base::win::VERSION_WIN7) | 183 if (base::win::GetVersion() < base::win::VERSION_WIN7) |
| 184 return; | 184 return; |
| 185 | 185 |
| 186 base::FilePath database_path; | 186 base::FilePath database_path; |
| 187 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); | 187 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); |
| 188 EdgeDatabaseReader reader; | 188 EdgeDatabaseReader reader; |
| 189 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); | 189 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); |
| 190 scoped_ptr<EdgeDatabaseTableEnumerator> table_enum = | 190 std::unique_ptr<EdgeDatabaseTableEnumerator> table_enum = |
| 191 reader.OpenTableEnumerator(L"TestTable"); | 191 reader.OpenTableEnumerator(L"TestTable"); |
| 192 EXPECT_NE(nullptr, table_enum); | 192 EXPECT_NE(nullptr, table_enum); |
| 193 int row_count = 0; | 193 int row_count = 0; |
| 194 do { | 194 do { |
| 195 int32_t int_col_value = 0; | 195 int32_t int_col_value = 0; |
| 196 EXPECT_TRUE(table_enum->RetrieveColumn(L"IntCol", &int_col_value)); | 196 EXPECT_TRUE(table_enum->RetrieveColumn(L"IntCol", &int_col_value)); |
| 197 EXPECT_EQ(-row_count, int_col_value); | 197 EXPECT_EQ(-row_count, int_col_value); |
| 198 | 198 |
| 199 uint32_t uint_col_value = 0; | 199 uint32_t uint_col_value = 0; |
| 200 EXPECT_TRUE(table_enum->RetrieveColumn(L"UIntCol", &uint_col_value)); | 200 EXPECT_TRUE(table_enum->RetrieveColumn(L"UIntCol", &uint_col_value)); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 | 243 |
| 244 TEST_F(EdgeDatabaseReaderTest, CheckEnumResetDatabaseTest) { | 244 TEST_F(EdgeDatabaseReaderTest, CheckEnumResetDatabaseTest) { |
| 245 // Only verified to work with ESE library on Windows 7 and above. | 245 // Only verified to work with ESE library on Windows 7 and above. |
| 246 if (base::win::GetVersion() < base::win::VERSION_WIN7) | 246 if (base::win::GetVersion() < base::win::VERSION_WIN7) |
| 247 return; | 247 return; |
| 248 | 248 |
| 249 base::FilePath database_path; | 249 base::FilePath database_path; |
| 250 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); | 250 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); |
| 251 EdgeDatabaseReader reader; | 251 EdgeDatabaseReader reader; |
| 252 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); | 252 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); |
| 253 scoped_ptr<EdgeDatabaseTableEnumerator> table_enum = | 253 std::unique_ptr<EdgeDatabaseTableEnumerator> table_enum = |
| 254 reader.OpenTableEnumerator(L"TestTable"); | 254 reader.OpenTableEnumerator(L"TestTable"); |
| 255 EXPECT_NE(nullptr, table_enum); | 255 EXPECT_NE(nullptr, table_enum); |
| 256 int row_count = 0; | 256 int row_count = 0; |
| 257 do { | 257 do { |
| 258 row_count++; | 258 row_count++; |
| 259 } while (table_enum->Next()); | 259 } while (table_enum->Next()); |
| 260 EXPECT_NE(0, row_count); | 260 EXPECT_NE(0, row_count); |
| 261 EXPECT_TRUE(table_enum->Reset()); | 261 EXPECT_TRUE(table_enum->Reset()); |
| 262 do { | 262 do { |
| 263 row_count--; | 263 row_count--; |
| 264 } while (table_enum->Next()); | 264 } while (table_enum->Next()); |
| 265 EXPECT_EQ(0, row_count); | 265 EXPECT_EQ(0, row_count); |
| 266 } | 266 } |
| 267 | 267 |
| 268 TEST_F(EdgeDatabaseReaderTest, InvalidColumnDatabaseTest) { | 268 TEST_F(EdgeDatabaseReaderTest, InvalidColumnDatabaseTest) { |
| 269 // Only verified to work with ESE library on Windows 7 and above. | 269 // Only verified to work with ESE library on Windows 7 and above. |
| 270 if (base::win::GetVersion() < base::win::VERSION_WIN7) | 270 if (base::win::GetVersion() < base::win::VERSION_WIN7) |
| 271 return; | 271 return; |
| 272 | 272 |
| 273 base::FilePath database_path; | 273 base::FilePath database_path; |
| 274 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); | 274 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); |
| 275 EdgeDatabaseReader reader; | 275 EdgeDatabaseReader reader; |
| 276 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); | 276 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); |
| 277 scoped_ptr<EdgeDatabaseTableEnumerator> table_enum = | 277 std::unique_ptr<EdgeDatabaseTableEnumerator> table_enum = |
| 278 reader.OpenTableEnumerator(L"TestTable"); | 278 reader.OpenTableEnumerator(L"TestTable"); |
| 279 EXPECT_NE(nullptr, table_enum); | 279 EXPECT_NE(nullptr, table_enum); |
| 280 int32_t int_col_value = 0; | 280 int32_t int_col_value = 0; |
| 281 EXPECT_FALSE(table_enum->RetrieveColumn(L"NotARealNameCol", &int_col_value)); | 281 EXPECT_FALSE(table_enum->RetrieveColumn(L"NotARealNameCol", &int_col_value)); |
| 282 EXPECT_EQ(JET_errColumnNotFound, table_enum->last_error()); | 282 EXPECT_EQ(JET_errColumnNotFound, table_enum->last_error()); |
| 283 } | 283 } |
| 284 | 284 |
| 285 TEST_F(EdgeDatabaseReaderTest, NoColumnDatabaseTest) { | 285 TEST_F(EdgeDatabaseReaderTest, NoColumnDatabaseTest) { |
| 286 // Only verified to work with ESE library on Windows 7 and above. | 286 // Only verified to work with ESE library on Windows 7 and above. |
| 287 if (base::win::GetVersion() < base::win::VERSION_WIN7) | 287 if (base::win::GetVersion() < base::win::VERSION_WIN7) |
| 288 return; | 288 return; |
| 289 | 289 |
| 290 base::FilePath database_path; | 290 base::FilePath database_path; |
| 291 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); | 291 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); |
| 292 EdgeDatabaseReader reader; | 292 EdgeDatabaseReader reader; |
| 293 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); | 293 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); |
| 294 scoped_ptr<EdgeDatabaseTableEnumerator> table_enum = | 294 std::unique_ptr<EdgeDatabaseTableEnumerator> table_enum = |
| 295 reader.OpenTableEnumerator(L"NoColsTable"); | 295 reader.OpenTableEnumerator(L"NoColsTable"); |
| 296 EXPECT_NE(nullptr, table_enum); | 296 EXPECT_NE(nullptr, table_enum); |
| 297 int32_t int_col_value = 0; | 297 int32_t int_col_value = 0; |
| 298 EXPECT_FALSE(table_enum->RetrieveColumn(L"IntCol", &int_col_value)); | 298 EXPECT_FALSE(table_enum->RetrieveColumn(L"IntCol", &int_col_value)); |
| 299 EXPECT_EQ(JET_errColumnNotFound, table_enum->last_error()); | 299 EXPECT_EQ(JET_errColumnNotFound, table_enum->last_error()); |
| 300 } | 300 } |
| 301 | 301 |
| 302 TEST_F(EdgeDatabaseReaderTest, EmptyTableDatabaseTest) { | 302 TEST_F(EdgeDatabaseReaderTest, EmptyTableDatabaseTest) { |
| 303 // Only verified to work with ESE library on Windows 7 and above. | 303 // Only verified to work with ESE library on Windows 7 and above. |
| 304 if (base::win::GetVersion() < base::win::VERSION_WIN7) | 304 if (base::win::GetVersion() < base::win::VERSION_WIN7) |
| 305 return; | 305 return; |
| 306 | 306 |
| 307 base::FilePath database_path; | 307 base::FilePath database_path; |
| 308 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); | 308 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); |
| 309 EdgeDatabaseReader reader; | 309 EdgeDatabaseReader reader; |
| 310 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); | 310 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); |
| 311 scoped_ptr<EdgeDatabaseTableEnumerator> table_enum = | 311 std::unique_ptr<EdgeDatabaseTableEnumerator> table_enum = |
| 312 reader.OpenTableEnumerator(L"EmptyTable"); | 312 reader.OpenTableEnumerator(L"EmptyTable"); |
| 313 EXPECT_NE(nullptr, table_enum); | 313 EXPECT_NE(nullptr, table_enum); |
| 314 int32_t int_col_value = 0; | 314 int32_t int_col_value = 0; |
| 315 EXPECT_FALSE(table_enum->RetrieveColumn(L"IntCol", &int_col_value)); | 315 EXPECT_FALSE(table_enum->RetrieveColumn(L"IntCol", &int_col_value)); |
| 316 EXPECT_NE(JET_errColumnNotFound, table_enum->last_error()); | 316 EXPECT_NE(JET_errColumnNotFound, table_enum->last_error()); |
| 317 EXPECT_FALSE(table_enum->Reset()); | 317 EXPECT_FALSE(table_enum->Reset()); |
| 318 EXPECT_FALSE(table_enum->Next()); | 318 EXPECT_FALSE(table_enum->Next()); |
| 319 } | 319 } |
| 320 | 320 |
| 321 TEST_F(EdgeDatabaseReaderTest, UnicodeStringsDatabaseTest) { | 321 TEST_F(EdgeDatabaseReaderTest, UnicodeStringsDatabaseTest) { |
| 322 const char* utf8_strings[] = { | 322 const char* utf8_strings[] = { |
| 323 "\xE3\x81\x93\xE3\x81\xAB\xE3\x81\xA1\xE3\x81\xAF", | 323 "\xE3\x81\x93\xE3\x81\xAB\xE3\x81\xA1\xE3\x81\xAF", |
| 324 "\xE4\xBD\xA0\xE5\xA5\xBD", | 324 "\xE4\xBD\xA0\xE5\xA5\xBD", |
| 325 "\xD0\x97\xD0\xB4\xD1\x80\xD0\xB0\xD0\xB2\xD1\x81\xD1\x82\xD0\xB2\xD1\x83" | 325 "\xD0\x97\xD0\xB4\xD1\x80\xD0\xB0\xD0\xB2\xD1\x81\xD1\x82\xD0\xB2\xD1\x83" |
| 326 "\xD0\xB9\xD1\x82\xD0\xB5", | 326 "\xD0\xB9\xD1\x82\xD0\xB5", |
| 327 "\x48\x65\x6C\x6C\x6F", | 327 "\x48\x65\x6C\x6C\x6F", |
| 328 "\xEC\x95\x88\xEB\x85\x95\xED\x95\x98\xEC\x84\xB8\xEC\x9A\x94", | 328 "\xEC\x95\x88\xEB\x85\x95\xED\x95\x98\xEC\x84\xB8\xEC\x9A\x94", |
| 329 }; | 329 }; |
| 330 // Only verified to work with ESE library on Windows 7 and above. | 330 // Only verified to work with ESE library on Windows 7 and above. |
| 331 if (base::win::GetVersion() < base::win::VERSION_WIN7) | 331 if (base::win::GetVersion() < base::win::VERSION_WIN7) |
| 332 return; | 332 return; |
| 333 | 333 |
| 334 base::FilePath database_path; | 334 base::FilePath database_path; |
| 335 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); | 335 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); |
| 336 EdgeDatabaseReader reader; | 336 EdgeDatabaseReader reader; |
| 337 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); | 337 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); |
| 338 scoped_ptr<EdgeDatabaseTableEnumerator> table_enum = | 338 std::unique_ptr<EdgeDatabaseTableEnumerator> table_enum = |
| 339 reader.OpenTableEnumerator(L"UnicodeTable"); | 339 reader.OpenTableEnumerator(L"UnicodeTable"); |
| 340 EXPECT_NE(nullptr, table_enum); | 340 EXPECT_NE(nullptr, table_enum); |
| 341 size_t utf8_strings_count = arraysize(utf8_strings); | 341 size_t utf8_strings_count = arraysize(utf8_strings); |
| 342 for (size_t row_count = 0; row_count < utf8_strings_count; ++row_count) { | 342 for (size_t row_count = 0; row_count < utf8_strings_count; ++row_count) { |
| 343 std::wstring row_string = base::UTF8ToWide(utf8_strings[row_count]); | 343 std::wstring row_string = base::UTF8ToWide(utf8_strings[row_count]); |
| 344 base::string16 str_col_value; | 344 base::string16 str_col_value; |
| 345 EXPECT_TRUE(table_enum->RetrieveColumn(L"StrCol", &str_col_value)); | 345 EXPECT_TRUE(table_enum->RetrieveColumn(L"StrCol", &str_col_value)); |
| 346 EXPECT_EQ(row_string, str_col_value); | 346 EXPECT_EQ(row_string, str_col_value); |
| 347 if (row_count < utf8_strings_count - 1) | 347 if (row_count < utf8_strings_count - 1) |
| 348 EXPECT_TRUE(table_enum->Next()); | 348 EXPECT_TRUE(table_enum->Next()); |
| 349 else | 349 else |
| 350 EXPECT_FALSE(table_enum->Next()); | 350 EXPECT_FALSE(table_enum->Next()); |
| 351 } | 351 } |
| 352 } | 352 } |
| 353 | 353 |
| 354 TEST_F(EdgeDatabaseReaderTest, NonUnicodeStringsDatabaseTest) { | 354 TEST_F(EdgeDatabaseReaderTest, NonUnicodeStringsDatabaseTest) { |
| 355 // Only verified to work with ESE library on Windows 7 and above. | 355 // Only verified to work with ESE library on Windows 7 and above. |
| 356 if (base::win::GetVersion() < base::win::VERSION_WIN7) | 356 if (base::win::GetVersion() < base::win::VERSION_WIN7) |
| 357 return; | 357 return; |
| 358 | 358 |
| 359 base::FilePath database_path; | 359 base::FilePath database_path; |
| 360 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); | 360 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); |
| 361 EdgeDatabaseReader reader; | 361 EdgeDatabaseReader reader; |
| 362 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); | 362 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); |
| 363 scoped_ptr<EdgeDatabaseTableEnumerator> table_enum = | 363 std::unique_ptr<EdgeDatabaseTableEnumerator> table_enum = |
| 364 reader.OpenTableEnumerator(L"NonUnicodeTable"); | 364 reader.OpenTableEnumerator(L"NonUnicodeTable"); |
| 365 EXPECT_NE(nullptr, table_enum); | 365 EXPECT_NE(nullptr, table_enum); |
| 366 base::string16 str_col_value; | 366 base::string16 str_col_value; |
| 367 EXPECT_FALSE(table_enum->RetrieveColumn(L"StrCol", &str_col_value)); | 367 EXPECT_FALSE(table_enum->RetrieveColumn(L"StrCol", &str_col_value)); |
| 368 EXPECT_EQ(JET_errInvalidColumnType, table_enum->last_error()); | 368 EXPECT_EQ(JET_errInvalidColumnType, table_enum->last_error()); |
| 369 } | 369 } |
| 370 | 370 |
| 371 TEST_F(EdgeDatabaseReaderTest, CheckNullColumnDatabaseTest) { | 371 TEST_F(EdgeDatabaseReaderTest, CheckNullColumnDatabaseTest) { |
| 372 // Only verified to work with ESE library on Windows 7 and above. | 372 // Only verified to work with ESE library on Windows 7 and above. |
| 373 if (base::win::GetVersion() < base::win::VERSION_WIN7) | 373 if (base::win::GetVersion() < base::win::VERSION_WIN7) |
| 374 return; | 374 return; |
| 375 | 375 |
| 376 base::FilePath database_path; | 376 base::FilePath database_path; |
| 377 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); | 377 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); |
| 378 EdgeDatabaseReader reader; | 378 EdgeDatabaseReader reader; |
| 379 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); | 379 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); |
| 380 scoped_ptr<EdgeDatabaseTableEnumerator> table_enum = | 380 std::unique_ptr<EdgeDatabaseTableEnumerator> table_enum = |
| 381 reader.OpenTableEnumerator(L"NullTable"); | 381 reader.OpenTableEnumerator(L"NullTable"); |
| 382 EXPECT_NE(nullptr, table_enum); | 382 EXPECT_NE(nullptr, table_enum); |
| 383 | 383 |
| 384 // We expect to successfully open a column value but get the default value | 384 // We expect to successfully open a column value but get the default value |
| 385 // back. | 385 // back. |
| 386 int32_t int_col_value = 1; | 386 int32_t int_col_value = 1; |
| 387 EXPECT_TRUE(table_enum->RetrieveColumn(L"IntCol", &int_col_value)); | 387 EXPECT_TRUE(table_enum->RetrieveColumn(L"IntCol", &int_col_value)); |
| 388 EXPECT_EQ(0, int_col_value); | 388 EXPECT_EQ(0, int_col_value); |
| 389 | 389 |
| 390 uint32_t uint_col_value = 1; | 390 uint32_t uint_col_value = 1; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 421 | 421 |
| 422 TEST_F(EdgeDatabaseReaderTest, CheckInvalidColumnTypeDatabaseTest) { | 422 TEST_F(EdgeDatabaseReaderTest, CheckInvalidColumnTypeDatabaseTest) { |
| 423 // Only verified to work with ESE library on Windows 7 and above. | 423 // Only verified to work with ESE library on Windows 7 and above. |
| 424 if (base::win::GetVersion() < base::win::VERSION_WIN7) | 424 if (base::win::GetVersion() < base::win::VERSION_WIN7) |
| 425 return; | 425 return; |
| 426 | 426 |
| 427 base::FilePath database_path; | 427 base::FilePath database_path; |
| 428 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); | 428 ASSERT_TRUE(CopyTestDatabase(L"testdata.edb", &database_path)); |
| 429 EdgeDatabaseReader reader; | 429 EdgeDatabaseReader reader; |
| 430 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); | 430 EXPECT_TRUE(reader.OpenDatabase(database_path.value())); |
| 431 scoped_ptr<EdgeDatabaseTableEnumerator> table_enum = | 431 std::unique_ptr<EdgeDatabaseTableEnumerator> table_enum = |
| 432 reader.OpenTableEnumerator(L"TestTable"); | 432 reader.OpenTableEnumerator(L"TestTable"); |
| 433 EXPECT_NE(nullptr, table_enum); | 433 EXPECT_NE(nullptr, table_enum); |
| 434 | 434 |
| 435 uint32_t uint_col_value = 0; | 435 uint32_t uint_col_value = 0; |
| 436 EXPECT_FALSE(table_enum->RetrieveColumn(L"IntCol", &uint_col_value)); | 436 EXPECT_FALSE(table_enum->RetrieveColumn(L"IntCol", &uint_col_value)); |
| 437 EXPECT_EQ(JET_errInvalidColumnType, table_enum->last_error()); | 437 EXPECT_EQ(JET_errInvalidColumnType, table_enum->last_error()); |
| 438 // Check unsigned int with a signed int. | 438 // Check unsigned int with a signed int. |
| 439 int32_t int_col_value = 0; | 439 int32_t int_col_value = 0; |
| 440 EXPECT_FALSE(table_enum->RetrieveColumn(L"UIntCol", &int_col_value)); | 440 EXPECT_FALSE(table_enum->RetrieveColumn(L"UIntCol", &int_col_value)); |
| 441 EXPECT_EQ(JET_errInvalidColumnType, table_enum->last_error()); | 441 EXPECT_EQ(JET_errInvalidColumnType, table_enum->last_error()); |
| 442 EXPECT_FALSE(table_enum->RetrieveColumn(L"LongLongCol", &uint_col_value)); | 442 EXPECT_FALSE(table_enum->RetrieveColumn(L"LongLongCol", &uint_col_value)); |
| 443 EXPECT_EQ(JET_errInvalidColumnType, table_enum->last_error()); | 443 EXPECT_EQ(JET_errInvalidColumnType, table_enum->last_error()); |
| 444 EXPECT_FALSE(table_enum->RetrieveColumn(L"GuidCol", &uint_col_value)); | 444 EXPECT_FALSE(table_enum->RetrieveColumn(L"GuidCol", &uint_col_value)); |
| 445 EXPECT_EQ(JET_errInvalidColumnType, table_enum->last_error()); | 445 EXPECT_EQ(JET_errInvalidColumnType, table_enum->last_error()); |
| 446 EXPECT_FALSE(table_enum->RetrieveColumn(L"DateCol", &uint_col_value)); | 446 EXPECT_FALSE(table_enum->RetrieveColumn(L"DateCol", &uint_col_value)); |
| 447 EXPECT_EQ(JET_errInvalidColumnType, table_enum->last_error()); | 447 EXPECT_EQ(JET_errInvalidColumnType, table_enum->last_error()); |
| 448 EXPECT_FALSE(table_enum->RetrieveColumn(L"StrCol", &uint_col_value)); | 448 EXPECT_FALSE(table_enum->RetrieveColumn(L"StrCol", &uint_col_value)); |
| 449 EXPECT_EQ(JET_errInvalidColumnType, table_enum->last_error()); | 449 EXPECT_EQ(JET_errInvalidColumnType, table_enum->last_error()); |
| 450 EXPECT_FALSE(table_enum->RetrieveColumn(L"BoolCol", &uint_col_value)); | 450 EXPECT_FALSE(table_enum->RetrieveColumn(L"BoolCol", &uint_col_value)); |
| 451 EXPECT_EQ(JET_errInvalidColumnType, table_enum->last_error()); | 451 EXPECT_EQ(JET_errInvalidColumnType, table_enum->last_error()); |
| 452 } | 452 } |
| OLD | NEW |