| 23 | bool CompareAsciiFiles(const char* file1, const char* file2); |
| 24 | |
| 25 | int TestSQLiteTableReadWrite(int argc, char* argv[]) |
| 26 | { |
| 27 | if (argc <= 1) |
| 28 | { |
| 29 | std::cerr << "Usage: " << argv[0] << " <.vtk table file>" << std::endl; |
| 30 | return 1; |
| 31 | } |
| 32 | std::cerr << "reading a vtkTable from file" << std::endl; |
| 33 | vtkSmartPointer<vtkTableReader> tableFileReader = vtkSmartPointer<vtkTableReader>::New(); |
| 34 | tableFileReader->SetFileName(argv[1]); |
| 35 | vtkTable* table = tableFileReader->GetOutput(); |
| 36 | tableFileReader->Update(); |
| 37 | |
| 38 | std::cerr << "opening an SQLite database connection" << std::endl; |
| 39 | vtkSQLiteDatabase* db = |
| 40 | vtkSQLiteDatabase::SafeDownCast(vtkSQLDatabase::CreateFromURL("sqlite://local.db")); |
| 41 | bool status = db->Open("", vtkSQLiteDatabase::CREATE_OR_CLEAR); |
| 42 | if (!status) |
| 43 | { |
| 44 | std::cerr << "Couldn't open database using CREATE_OR_CLEAR.\n"; |
| 45 | return 1; |
| 46 | } |
| 47 | |
| 48 | std::cerr << "creating an SQLite table from a vtkTable" << std::endl; |
| 49 | vtkSmartPointer<vtkTableToSQLiteWriter> writerToTest = |
| 50 | vtkSmartPointer<vtkTableToSQLiteWriter>::New(); |
| 51 | |
| 52 | writerToTest->SetInputData(table); |
| 53 | writerToTest->SetDatabase(db); |
| 54 | writerToTest->SetTableName("tableTest"); |
| 55 | writerToTest->Update(); |
| 56 | |
| 57 | std::cerr << "converting it back to a vtkTable" << std::endl; |
| 58 | vtkSmartPointer<vtkSQLiteToTableReader> readerToTest = |
| 59 | vtkSmartPointer<vtkSQLiteToTableReader>::New(); |
| 60 | |
| 61 | readerToTest->SetDatabase(db); |
| 62 | readerToTest->SetTableName("tableTest"); |
| 63 | readerToTest->Update(); |
| 64 | |
| 65 | std::cerr << "writing the table out to disk" << std::endl; |
| 66 | vtkSmartPointer<vtkTableWriter> tableFileWriter = vtkSmartPointer<vtkTableWriter>::New(); |
| 67 | tableFileWriter->SetFileName("TestSQLiteTableReadWrite.vtk"); |
| 68 | tableFileWriter->SetInputConnection(readerToTest->GetOutputPort()); |
| 69 | tableFileWriter->Update(); |
| 70 | |
| 71 | std::cerr << "verifying that it's the same as what we started with..."; |
| 72 | int result = 0; |
| 73 | if (!CompareAsciiFiles(argv[1], "TestSQLiteTableReadWrite.vtk")) |
| 74 | { |
| 75 | std::cerr << argv[1] << " differs from TestSQLiteTableReadWrite.vtk" << std::endl; |
| 76 | PrintFile(argv[1], std::cerr); |
| 77 | PrintFile("TestSQLiteTableReadWrite.vtk", std::cerr); |
| 78 | result = 1; |
| 79 | } |
| 80 | else |
| 81 | { |
| 82 | std::cerr << "it is!" << std::endl; |
nothing calls this directly
no test coverage detected