Commit 65741630 authored by Bill Lorensen's avatar Bill Lorensen
Browse files

ENH: 100% coverage for XMLFileOutputWindow.

A new unit test provides 100% coverage.

computeCodeCoverageLocallyForOneTest.sh Common/Core -R TestXMLFile

Change-Id: I9565397d7d06cdfbc69c5f8afd6bfe650dc6c7eb
parent c2fff570
......@@ -33,6 +33,7 @@ create_test_sourcelist(Tests ${vtk-module}CxxTests.cxx
TestUnicodeStringArrayAPI.cxx
TestVariantComparison.cxx
TestWeakPointer.cxx
TestXMLFileOutputWindow.cxx
otherArrays.cxx
otherByteSwap.cxx
# These two need vtkLookupTableWithEnabling/vtkLogLookupTable - move
......@@ -53,6 +54,9 @@ list(REMOVE_ITEM TestsToRun ${vtk-module}CxxTests.cxx)
# Tell TestSystemInformation where to find the build trees.
set(TestSystemInformation_ARGS ${CMAKE_BINARY_DIR})
# Tell TestXMLFileOutputWindow where to write test file
set(TestXMLFileOutputWindow_ARGS ${CMAKE_BINARY_DIR}/Testing/Temporary/XMLFileOutputWindow.txt)
# Add all the executables
foreach(test ${TestsToRun})
get_filename_component(TName ${test} NAME_WE)
......
/*=========================================================================
Program: Visualization Toolkit
Module: TestXMLDisplayOutputWindow.cxx
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
#include "vtkXMLFileOutputWindow.h"
#include "vtkSmartPointer.h"
#include <string>
int TestXMLFileOutputWindow(int argc,char *argv[])
{
if (argc < 2)
{
std::cout << "Usage: " << argv[0] << " outputFilename" << std::endl;
return EXIT_FAILURE;
}
std::string sample("Test string: &\"'<>");
{
vtkSmartPointer<vtkXMLFileOutputWindow> ofw =
vtkSmartPointer<vtkXMLFileOutputWindow>::New();
ofw->SetInstance(ofw);
ofw->FlushOn();
// Use the default filename
ofw->DisplayTag(sample.c_str());
ofw->DisplayText(sample.c_str());
ofw->DisplayErrorText(sample.c_str());
ofw->DisplayWarningText(sample.c_str());
ofw->DisplayGenericWarningText(sample.c_str());
ofw->DisplayDebugText(sample.c_str());
// Check NULL strings
ofw->DisplayTag(NULL);
ofw->DisplayText(NULL);
ofw->DisplayErrorText(NULL);
ofw->DisplayWarningText(NULL);
ofw->DisplayGenericWarningText(NULL);
ofw->DisplayDebugText(NULL);
}
// Append to default
{
vtkSmartPointer<vtkXMLFileOutputWindow> ofw2 =
vtkSmartPointer<vtkXMLFileOutputWindow>::New();
ofw2->SetInstance(ofw2);
ofw2->AppendOn();
ofw2->DisplayText("Appended");
}
// Change the file name
{
vtkSmartPointer<vtkXMLFileOutputWindow> ofw3 =
vtkSmartPointer<vtkXMLFileOutputWindow>::New();
ofw3->SetInstance(ofw3);
ofw3->SetFileName(argv[1]);
ofw3->DisplayTag(sample.c_str());
ofw3->DisplayText(sample.c_str());
ofw3->DisplayErrorText(sample.c_str());
ofw3->DisplayWarningText(sample.c_str());
ofw3->DisplayGenericWarningText(sample.c_str());
ofw3->DisplayDebugText(sample.c_str());
ofw3->AppendOn();
ofw3->DisplayText("Appended");
}
// Now, compare the default and specified files
// Read the default XML file
std::ifstream dfin("vtkMessageLog.xml", std::ios::in);
if (dfin.fail())
{
std::cout << argv[0] << ": Cannot open " << "vtkMessageLog.xml" << std::endl;
return EXIT_FAILURE;
}
// Get the length of the file
dfin.seekg (0, std::ios::end);
const size_t dlen = dfin.tellg();
dfin.seekg (0, std::ios::beg);
char * defXML = new char[dlen+1];
dfin.read (defXML, dlen);
defXML[dlen] = '\0';
// Read the specified XML file
std::ifstream sfin(argv[1], std::ios::in);
if (sfin.fail())
{
std::cout << argv[0] << ": Cannot open " << argv[1] << std::endl;
return EXIT_FAILURE;
}
// Get the length of the file
sfin.seekg (0, std::ios::end);
const size_t slen = dfin.tellg();
sfin.seekg (0, std::ios::beg);
char * specifiedXML = new char[slen+1];
sfin.read (specifiedXML, slen);
specifiedXML[slen] = '\0';
std::string def(defXML);
std::string specified(specifiedXML);
if (def != specified)
{
std::cout << "The string in the default file ***********" << std::endl
<< def << std::endl
<< "does not match the string in the specified file ***********" << std::endl
<< specified << std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment