37 DummyWriter(
const DummyWriter &other) :
mitk::AbstractFileWriter(other), m_Content(
"Hi there stream") {}
38 DummyWriter(
const std::string &basedataType,
const std::string &extension,
int ranking)
39 :
mitk::AbstractFileWriter(basedataType, extension,
"This is a dummy description"), m_Content(
"Hi there stream")
41 this->SetRanking(ranking);
42 m_ServiceReg = this->RegisterService();
48 m_ServiceReg.Unregister();
51 using AbstractFileWriter::Write;
53 virtual void Write(
const mitk::BaseData *data, std::ostream &stream)
59 std::
string m_Content;
62 DummyWriter *
Clone()
const {
return new DummyWriter(*
this); }
70 DummyWriter2(
const DummyWriter2 &other) :
mitk::AbstractFileWriter(other), m_Content(
"hi there file path") {}
71 DummyWriter2(
const std::string &basedataType,
const std::string &extension,
int ranking)
72 :
mitk::AbstractFileWriter(basedataType, extension,
"This is a dummy description"), m_Content(
"hi there file path")
74 this->SetRanking(ranking);
75 m_ServiceReg = this->RegisterService();
81 m_ServiceReg.Unregister();
84 using AbstractFileWriter::Write;
86 virtual void Write(
const mitk::BaseData *data,
const std::string &filePath)
89 std::ofstream fileStream(filePath.c_str());
90 fileStream << m_Content;
93 virtual
void Write(const
mitk::BaseData *data,
std::ostream &stream)
98 virtual bool CanWrite(
const mitk::BaseData *data)
const {
return dynamic_cast<const DummyBaseData *
>(data); }
99 std::string m_Content;
102 DummyWriter2 *
Clone()
const {
return new DummyWriter2(*
this); }
109 DummyWriter dummyWriter(DummyBaseData::GetStaticNameOfClass(),
"stream", 100);
110 DummyWriter2 dummyWriter2(DummyBaseData::GetStaticNameOfClass(),
"file", 50);
115 DummyBaseData dummyData;
116 std::stringstream oss;
117 writerRegistry.Write(&dummyData, oss);
122 std::ofstream tmpStream;
124 writerRegistry.Write(&dummyData, tmpFileName);
126 std::ifstream tmpInput(tmpFileName.c_str());
127 std::getline(tmpInput, content);
130 std::remove(tmpFileName.c_str());
136 std::stringstream oss2;
137 dummyWriter2.Write(&dummyData, oss2);
140 std::string content2;
142 std::ofstream tmpStream;
144 writerRegistry.Write(&dummyData, tmpFileName);
146 std::ifstream tmpInput(tmpFileName.c_str());
147 std::getline(tmpInput, content2);
149 std::remove(tmpFileName.c_str());
167 DummyWriter testDR(
"testdata",
"test", 1);
168 DummyWriter otherDR(
"testdata",
"other", 1);
179 "Testing correct retrieval of FileWriter 1/2");
181 returned = writerRegistry->
GetWriter(
"",
"other");
184 "Testing correct retrieval of FileWriter 2/2");
186 DummyWriter mediocreTestDR(
"testdata",
"test", 20);
187 DummyWriter prettyFlyTestDR(
"testdata",
"test", 50);
188 DummyWriter2 awesomeTestDR(
"testdata",
"test", 100);
190 returned = writerRegistry->
GetWriter(
"test");
192 "Testing correct priorized retrieval of FileWriter: Best Writer");
195 mitk::IFileWriter::OptionList options;
196 options.push_back(std::make_pair(
"isANiceGuy",
true));
197 mediocreTestDR.SetOptions(options);
199 options.push_back(std::make_pair(
"canFly",
true));
200 prettyFlyTestDR.SetOptions(options);
201 options.push_back(std::make_pair(
"isAwesome",
true));
202 awesomeTestDR.SetOptions(options);
205 mitk::IFileWriter::OptionNames optionFilter;
206 optionFilter.push_back(
"canFly");
207 returned = writerRegistry->
GetWriter(
"",
"test", optionFilter);
209 "Testing correct retrieval of FileWriter with Options: Best Writer with options");
211 optionFilter.push_back(
"isAwesome");
212 returned = writerRegistry->
GetWriter(
"",
"test", optionFilter);
214 returned && &static_cast<mitk::IFileWriter &>(awesomeTestDR) != returned,
215 "Testing correct retrieval of FileWriter with multiple Options: Best Writer with options");
217 optionFilter.clear();
218 optionFilter.push_back(
"isANiceGuy");
219 returned = writerRegistry->
GetWriter(
"",
"test", optionFilter);
221 returned && &static_cast<mitk::IFileWriter &>(mediocreTestDR) != returned,
222 "Testing correct retrieval of specific FileWriter with Options: Low priority Writer with specific option");
224 optionFilter.push_back(
"canFly");
225 returned = writerRegistry->
GetWriter(
"",
"test", optionFilter);
230 std::vector<mitk::IFileWriter *> returnedList;
231 returnedList = writerRegistry->
GetWriters(
"",
"test", optionFilter);
233 returnedList.empty(),
234 "Testing correct return of zero Writers when no matching Writer was found, asking for all compatibles");
236 optionFilter.clear();
237 optionFilter.push_back(
"canFly");
238 returnedList = writerRegistry->
GetWriters(
"",
"test", optionFilter);
240 returnedList.size() == 2,
241 "Testing correct return of two Writers when two matching Writer was found, asking for all compatibles");
243 "Testing correct priorization of returned Writers with options 1/2");
245 optionFilter.clear();
246 optionFilter.push_back(
"isAwesome");
247 returnedList = writerRegistry->
GetWriters(
"",
"test", optionFilter);
249 returnedList.size() == 1,
250 "Testing correct return of one Writers when one matching Writer was found, asking for all compatibles");
252 "Testing correctness of result from former query");
284 delete writerRegistry;
Base of all data objects.
void Write() override=0
Write the base data to the specified location or output stream.
#define MITK_TEST_CONDITION_REQUIRED(COND, MSG)
std::vector< IFileWriter * > GetWriters(const BaseData *baseData, const std::string &mimeType, us::ModuleContext *context=us::GetModuleContext())
DataCollection - Class to facilitate loading/accessing structured data.
bool RequestedRegionIsOutsideOfTheBufferedRegion() override=0
Determine whether the RequestedRegion is outside of the BufferedRegion.
section GeneralTestsDeprecatedOldTestingStyle Deprecated macros All tests with MITK_TEST_BEGIN()
bool VerifyRequestedRegion() override=0
Verify that the RequestedRegion is within the LargestPossibleRegion.
void SetRequestedRegionToLargestPossibleRegion() override=0
Set the RequestedRegion to the LargestPossibleRegion.
#define mitkClassMacro(className, SuperClassName)
void SetRequestedRegion(const itk::DataObject *data) override=0
Set the requested region from this data object to match the requested region of the data object passe...
IFileWriter * GetWriter(const WriterReference &ref, us::ModuleContext *context=us::GetModuleContext())
static std::string CreateTemporaryFile(std::ofstream &tmpStream, const std::string &templateName="XXXXXX", std::string path=std::string())
int mitkFileWriterRegistryTest(int, char *[])
The common interface of all MITK file writers.
Base class for writing mitk::BaseData objects to files or streams.