1+ /*
2+ For more information, please see: http://software.sci.utah.edu
3+
4+ The MIT License
5+
6+ Copyright (c) 2012 Scientific Computing and Imaging Institute,
7+ University of Utah.
8+
9+ License for the specific language governing rights and limitations under
10+ Permission is hereby granted, free of charge, to any person obtaining a
11+ copy of this software and associated documentation files (the "Software"),
12+ to deal in the Software without restriction, including without limitation
13+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
14+ and/or sell copies of the Software, and to permit persons to whom the
15+ Software is furnished to do so, subject to the following conditions:
16+
17+ The above copyright notice and this permission notice shall be included
18+ in all copies or substantial portions of the Software.
19+
20+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
21+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
23+ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
26+ DEALINGS IN THE SOFTWARE.
27+ */
28+
29+ #include < Testing/Utils/SCIRunUnitTests.h>
30+ #include < Core/IEPlugin/NrrdField_Plugin.h>
31+ #include < Core/Datatypes/Legacy/Field/Field.h>
32+ #include < Core/Datatypes/Legacy/Field/VMesh.h>
33+
34+ using namespace SCIRun ;
35+ using namespace SCIRun ::Core;
36+ using namespace SCIRun ::Core::Datatypes;
37+ using namespace SCIRun ::TestUtils;
38+
39+ namespace
40+ {
41+ boost::filesystem::path testNrrd = TestResources::rootDir() / " ToolKits" / " FwdInvToolbox" / " pot_based_FEM_forward" / " Segmentation.nrrd" ;
42+ boost::filesystem::path testNrrdHeader = TestResources::rootDir() / " Fields" / " nrrd" / " fieldOut.nhdr" ;
43+ }
44+
45+ TEST (ReadNrrdTests, CanReadFullNrrdFile)
46+ {
47+ auto field = NrrdToField_reader (nullptr , testNrrd.string ().c_str ());
48+
49+ ASSERT_TRUE (field != nullptr );
50+ EXPECT_EQ (18869130 , field->vmesh ()->num_nodes ());
51+ EXPECT_EQ (18620000 , field->vmesh ()->num_elems ());
52+ EXPECT_EQ (1 , field->vmesh ()->basis_order ());
53+ }
54+
55+ TEST (ReadNrrdTests, CanReadNrrdHeaderFile)
56+ {
57+ auto field = NrrdToField_reader (nullptr , testNrrdHeader.string ().c_str ());
58+
59+ ASSERT_TRUE (field != nullptr );
60+ EXPECT_EQ (19120104 , field->vmesh ()->num_nodes ());
61+ EXPECT_EQ (18869130 , field->vmesh ()->num_elems ());
62+ EXPECT_EQ (1 , field->vmesh ()->basis_order ());
63+ }
64+
65+ TEST (ReadNrrdTests, CanReadNrrdFile_Nodal)
66+ {
67+ auto field = Nodal_NrrdToField_reader (nullptr , testNrrd.string ().c_str ());
68+
69+ ASSERT_TRUE (field != nullptr );
70+ EXPECT_EQ (18869130 , field->vmesh ()->num_nodes ());
71+ EXPECT_EQ (18620000 , field->vmesh ()->num_elems ());
72+ EXPECT_EQ (1 , field->vmesh ()->basis_order ());
73+ }
74+
75+ TEST (ReadNrrdTests, CanReadNrrdFile_Modal)
76+ {
77+ auto field = Modal_NrrdToField_reader (nullptr , testNrrd.string ().c_str ());
78+
79+ ASSERT_TRUE (field != nullptr );
80+ EXPECT_EQ (19120104 , field->vmesh ()->num_nodes ());
81+ EXPECT_EQ (18869130 , field->vmesh ()->num_elems ());
82+ EXPECT_EQ (1 , field->vmesh ()->basis_order ());
83+ }
84+
85+ TEST (ReadNrrdTests, CanReadNrrdFile_IPNodal)
86+ {
87+ auto field = IPNodal_NrrdToField_reader (nullptr , testNrrd.string ().c_str ());
88+
89+ ASSERT_TRUE (field != nullptr );
90+ EXPECT_EQ (18869130 , field->vmesh ()->num_nodes ());
91+ EXPECT_EQ (18620000 , field->vmesh ()->num_elems ());
92+ EXPECT_EQ (1 , field->vmesh ()->basis_order ());
93+ }
94+
95+ TEST (ReadNrrdTests, CanReadNrrdFile_IPModal)
96+ {
97+ auto field = IPModal_NrrdToField_reader (nullptr , testNrrd.string ().c_str ());
98+
99+ ASSERT_TRUE (field != nullptr );
100+ EXPECT_EQ (19120104 , field->vmesh ()->num_nodes ());
101+ EXPECT_EQ (18869130 , field->vmesh ()->num_elems ());
102+ EXPECT_EQ (1 , field->vmesh ()->basis_order ());
103+ }
104+
105+ TEST (WriteNrrdTests, CanWriteNrrdFile)
106+ {
107+ auto field = NrrdToField_reader (nullptr , testNrrd.string ().c_str ());
108+
109+ ASSERT_TRUE (field != nullptr );
110+ EXPECT_EQ (18869130 , field->vmesh ()->num_nodes ());
111+ EXPECT_EQ (18620000 , field->vmesh ()->num_elems ());
112+ EXPECT_EQ (1 , field->vmesh ()->basis_order ());
113+
114+ boost::filesystem::path out (TestResources::rootDir () / " TransientOutput" / " fieldOutUnit.nrrd" );
115+ ASSERT_TRUE (FieldToNrrd_writer (nullptr , field, out.string ().c_str ()));
116+ }
117+
118+ TEST (WriteNrrdTests, CanWriteNrrdFileHeader)
119+ {
120+ auto field = NrrdToField_reader (nullptr , testNrrd.string ().c_str ());
121+
122+ ASSERT_TRUE (field != nullptr );
123+ EXPECT_EQ (18869130 , field->vmesh ()->num_nodes ());
124+ EXPECT_EQ (18620000 , field->vmesh ()->num_elems ());
125+ EXPECT_EQ (1 , field->vmesh ()->basis_order ());
126+
127+ boost::filesystem::path out (TestResources::rootDir () / " TransientOutput" / " fieldOutUnitHeader.nhdr" );
128+ ASSERT_TRUE (FieldToNrrd_writer (nullptr , field, out.string ().c_str ()));
129+ }
0 commit comments