diff --git a/MatFileHandler.Tests/MatFileReaderTests.cs b/MatFileHandler.Tests/MatFileReaderTests.cs index a06ad71..44e1e21 100755 --- a/MatFileHandler.Tests/MatFileReaderTests.cs +++ b/MatFileHandler.Tests/MatFileReaderTests.cs @@ -390,6 +390,31 @@ namespace MatFileHandler.Tests Assert.Equal(new[] { 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 }, variable2.ConvertToDoubleArray()); } + /// + /// Test reading a table with strings + /// + [Fact] + public void TestTableWithStrings() + { + var matFile = GetTests("good")["table-with-strings"]; + var obj = matFile["t"].Value as IMatObject; + var table = new TableAdapter(obj); + Assert.Equal(5, table.NumberOfRows); + Assert.Equal(2, table.NumberOfVariables); + Assert.Equal(new[] { "Numbers", "Names" }, table.VariableNames); + var variable = table["Names"] as ICellArray; + var name0 = new StringAdapter(variable[0]); + Assert.Equal("One", name0[0]); + var name1 = new StringAdapter(variable[1]); + Assert.Equal("Two", name1[0]); + var name2 = new StringAdapter(variable[2]); + Assert.Equal("Three", name2[0]); + var name3 = new StringAdapter(variable[3]); + Assert.Equal("Four", name3[0]); + var name4 = new StringAdapter(variable[4]); + Assert.Equal("Five", name4[0]); + } + /// /// Test subobjects within objects. /// diff --git a/MatFileHandler.Tests/test-data/good/table-with-strings.mat b/MatFileHandler.Tests/test-data/good/table-with-strings.mat new file mode 100644 index 0000000..eb71b0a Binary files /dev/null and b/MatFileHandler.Tests/test-data/good/table-with-strings.mat differ diff --git a/MatFileHandler/MatFileHandler.csproj b/MatFileHandler/MatFileHandler.csproj index 903b54f..0a43df5 100755 --- a/MatFileHandler/MatFileHandler.csproj +++ b/MatFileHandler/MatFileHandler.csproj @@ -1,7 +1,7 @@  netstandard2.0;net461;net472 - 1.4.0-beta3 + 1.4.0-beta4 MatFileHandler A library for reading and writing MATLAB .mat files. Alexander Luzgarev diff --git a/MatFileHandler/SubsystemDataReader.cs b/MatFileHandler/SubsystemDataReader.cs index b6141d8..aca0bcd 100644 --- a/MatFileHandler/SubsystemDataReader.cs +++ b/MatFileHandler/SubsystemDataReader.cs @@ -334,6 +334,16 @@ namespace MatFileHandler } } + if (array is MatCellArray cellArray) + { + for (var i = 0; i < cellArray.Data.Length; i++) + { + var cell = cellArray.Data[i]; + var transformedCell = TransformOpaqueData(cell, subsystemData); + cellArray.Data[i] = transformedCell; + } + } + return array; }