Better treatment of embedded objects

This commit is contained in:
Alexander Luzgarev 2025-04-03 18:33:03 +02:00
parent f56508c3ad
commit 6069d16c07
4 changed files with 36 additions and 1 deletions

View File

@ -390,6 +390,31 @@ namespace MatFileHandler.Tests
Assert.Equal(new[] { 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 }, variable2.ConvertToDoubleArray());
}
/// <summary>
/// Test reading a table with strings
/// </summary>
[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]);
}
/// <summary>
/// Test subobjects within objects.
/// </summary>

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net461;net472</TargetFrameworks>
<PackageVersion>1.4.0-beta3</PackageVersion>
<PackageVersion>1.4.0-beta4</PackageVersion>
<PackageId>MatFileHandler</PackageId>
<Title>A library for reading and writing MATLAB .mat files.</Title>
<Authors>Alexander Luzgarev</Authors>

View File

@ -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;
}