| 26 | } while (false) |
| 27 | |
| 28 | int TestArraySerialization(int vtkNotUsed(argc), char* vtkNotUsed(argv)[]) |
| 29 | { |
| 30 | try |
| 31 | { |
| 32 | // Test Read and Write in Ascii text mode |
| 33 | // Test sparse-array round-trip ... |
| 34 | vtkSmartPointer<vtkSparseArray<double>> a1 = vtkSmartPointer<vtkSparseArray<double>>::New(); |
| 35 | a1->SetName("a1"); |
| 36 | a1->Resize(2, 2); |
| 37 | a1->SetDimensionLabel(0, "rows"); |
| 38 | a1->SetDimensionLabel(1, "columns"); |
| 39 | a1->SetNullValue(0.5); |
| 40 | a1->AddValue(0, 0, 1.5); |
| 41 | a1->AddValue(1, 1, 2.5); |
| 42 | |
| 43 | std::stringstream a_buffer; |
| 44 | vtkArrayWriter::Write(a1, a_buffer); |
| 45 | |
| 46 | vtkSmartPointer<vtkArray> a2; |
| 47 | a2.TakeReference(vtkArrayReader::Read(a_buffer)); |
| 48 | |
| 49 | test_expression(a2); |
| 50 | test_expression(a2->GetName() == "a1"); |
| 51 | test_expression(vtkSparseArray<double>::SafeDownCast(a2)); |
| 52 | test_expression(a2->GetExtents() == a1->GetExtents()); |
| 53 | test_expression(a2->GetNonNullSize() == a1->GetNonNullSize()); |
| 54 | test_expression(a2->GetDimensionLabel(0) == "rows"); |
| 55 | test_expression(a2->GetDimensionLabel(1) == "columns"); |
| 56 | test_expression(vtkSparseArray<double>::SafeDownCast(a2)->GetNullValue() == 0.5); |
| 57 | test_expression(a2->GetVariantValue(0, 0).ToDouble() == 1.5); |
| 58 | test_expression(a2->GetVariantValue(0, 1).ToDouble() == 0.5); |
| 59 | test_expression(a2->GetVariantValue(1, 1).ToDouble() == 2.5); |
| 60 | |
| 61 | // Test sparse-array coordinates out-of-bounds ... |
| 62 | std::istringstream b_buffer( |
| 63 | "vtk-sparse-array double\nascii\nb1\n0 2 0 2 1\nrows\ncolumns\n0\n2 2 3.5\n"); |
| 64 | vtkSmartPointer<vtkArray> b1; |
| 65 | b1.TakeReference(vtkArrayReader::Read(b_buffer)); |
| 66 | |
| 67 | test_expression(!b1); |
| 68 | |
| 69 | // Test sparse-array not enough values ... |
| 70 | std::istringstream d_buffer( |
| 71 | "vtk-sparse-array double\nascii\nd1\n0 2 0 2 1\nrows\ncolumns\n0\n"); |
| 72 | vtkSmartPointer<vtkArray> d1; |
| 73 | d1.TakeReference(vtkArrayReader::Read(d_buffer)); |
| 74 | |
| 75 | test_expression(!d1); |
| 76 | |
| 77 | // Test dense string arrays containing whitespace ... |
| 78 | std::istringstream e_buffer( |
| 79 | "vtk-dense-array string\nascii\ne1\n0 3 3\nvalues\nThe\nquick brown\nfox\n"); |
| 80 | vtkSmartPointer<vtkArray> e1; |
| 81 | e1.TakeReference(vtkArrayReader::Read(e_buffer)); |
| 82 | |
| 83 | test_expression(e1); |
| 84 | test_expression(vtkDenseArray<vtkStdString>::SafeDownCast(e1)); |
| 85 | test_expression(e1->GetNonNullSize() == 3); |
nothing calls this directly
no test coverage detected