@@ -133,10 +133,10 @@ class FieldConversionTests : public testing::Test
133133 return loadFieldFromFile (TestResources::rootDir () / " Fields/test_image_node.fld" );
134134 }
135135
136- // static FieldHandle CreatePointCloudScalar ()
137- // {
138- // return loadFieldFromFile(TestResources::rootDir() / "Fields/point_cloud/scalar/pts_scalar .fld");
139- // }
136+ static FieldHandle CreateTriSurfFromCVRTI ()
137+ {
138+ return loadFieldFromFile (TestResources::rootDir () / " Fields/CVRTI_cappedTorso/CappedTorso_192 .fld" );
139+ }
140140
141141 static std::vector<FieldHandle> fileExamples ()
142142 {
@@ -332,6 +332,62 @@ TEST_F(FieldConversionTests, RoundTripTetVolNode)
332332 EXPECT_EQ (" GenericField<TetVolMesh<TetLinearLgn<Point>>,TetLinearLgn<double>,vector<double>>" , info.get_field_type_id ());
333333}
334334
335+ // TODO: found a workaround for Brett's failing mesh (need to set data to all zeros)
336+ TEST_F (FieldConversionTests, DISABLED_RoundTripTriSurfCVRTI)
337+ {
338+ auto expected = CreateTriSurfFromCVRTI ();
339+ {
340+ FieldInformation info (expected);
341+ EXPECT_TRUE (info.is_trisurf ());
342+ EXPECT_TRUE (info.is_double ());
343+ EXPECT_TRUE (info.is_scalar ());
344+ EXPECT_TRUE (info.is_linear ());
345+ EXPECT_EQ (" TriSurfMesh<TriLinearLgn<Point>>" , info.get_mesh_type_id ());
346+ EXPECT_EQ (" TriSurfMesh" , info.get_mesh_type ());
347+ EXPECT_EQ (" GenericField<TriSurfMesh<TriLinearLgn<Point>>,TriLinearLgn<double>,vector<double>>" , info.get_field_type_id ());
348+ }
349+
350+ auto pyField = convertFieldToPython (expected);
351+ EXPECT_EQ (10 , len (pyField.items ()));
352+ {
353+ boost::python::extract<boost::python::dict> e (pyField);
354+ auto pyMatlabDict = e ();
355+
356+ auto length = len (pyMatlabDict);
357+
358+ auto keys = pyMatlabDict.keys ();
359+ auto values = pyMatlabDict.values ();
360+
361+ for (int i = 0 ; i < length; ++i)
362+ {
363+ boost::python::extract<std::string> key_i (keys[i]);
364+
365+ boost::python::extract<std::string> value_i_string (values[i]);
366+ boost::python::extract<boost::python::list> value_i_list (values[i]);
367+ auto fieldName = key_i ();
368+ std::cout << " setting field " << fieldName << " " << (value_i_string.check () ? value_i_string () : " NOT A STRING" ) << std::endl;
369+ }
370+ }
371+
372+ FieldExtractor converter (pyField);
373+
374+ ASSERT_TRUE (converter.check ());
375+
376+ auto actual = converter ();
377+ ASSERT_TRUE (actual != nullptr );
378+ auto actualField = boost::dynamic_pointer_cast<Field>(actual);
379+ ASSERT_TRUE (actualField != nullptr );
380+
381+ FieldInformation info (actualField);
382+ EXPECT_TRUE (info.is_trisurf ());
383+ EXPECT_TRUE (info.is_double ());
384+ EXPECT_TRUE (info.is_scalar ());
385+ EXPECT_TRUE (info.is_linear ());
386+ EXPECT_EQ (" TriSurfMesh<TriLinearLgn<Point>>" , info.get_mesh_type_id ());
387+ EXPECT_EQ (" TriSurfMesh" , info.get_mesh_type ());
388+ EXPECT_EQ (" GenericField<TriSurfMesh<TriLinearLgn<Point>>,TriLinearLgn<double>,vector<double>>" , info.get_field_type_id ());
389+ }
390+
335391TEST_F (FieldConversionTests, RoundTripTetVolCell)
336392{
337393 auto expected = CreateTetMeshScalarOnElem ();
0 commit comments