Support logical arrays

This commit is contained in:
Alexander Luzgarev 2019-03-12 18:54:24 +01:00
parent 67905605d6
commit 99558d96c4
3 changed files with 25 additions and 0 deletions

View File

@ -204,6 +204,24 @@ namespace MatFileHandler.Tests
Assert.That(structure["y", 1, 2].IsEmpty, Is.True);
}
/// <summary>
/// Test reading a logical array.
/// </summary>
[Test]
public void TestLogical()
{
var matFile = ReadHdfTestFile("logical");
var array = matFile["logical_"].Value;
var logicalArray = array as IArrayOf<bool>;
Assert.That(logicalArray, Is.Not.Null);
Assert.That(logicalArray[0, 0], Is.True);
Assert.That(logicalArray[0, 1], Is.True);
Assert.That(logicalArray[0, 2], Is.False);
Assert.That(logicalArray[1, 0], Is.False);
Assert.That(logicalArray[1, 1], Is.True);
Assert.That(logicalArray[1, 2], Is.True);
}
private static void CheckComplexLimits<T>(IArrayOf<ComplexOf<T>> array, T[] limits)
where T : struct
{

Binary file not shown.

View File

@ -24,6 +24,7 @@ namespace MatFileHandler
MSingle,
MDouble,
MCell,
MLogical,
}
internal class HdfArray : IArray
@ -440,6 +441,8 @@ namespace MatFileHandler
{
case "canonical empty":
return HdfMatlabClass.MEmpty;
case "logical":
return HdfMatlabClass.MLogical;
case "char":
return HdfMatlabClass.MChar;
case "int8":
@ -598,6 +601,8 @@ namespace MatFileHandler
{
case HdfMatlabClass.MEmpty:
return HdfArray.Empty();
case HdfMatlabClass.MLogical:
return ReadNumericalArray<bool>(datasetId, dims, arrayType);
case HdfMatlabClass.MChar:
return ReadCharArray(datasetId, dims);
case HdfMatlabClass.MInt8:
@ -651,6 +656,7 @@ namespace MatFileHandler
{
case HdfMatlabClass.MInt8:
case HdfMatlabClass.MUInt8:
case HdfMatlabClass.MLogical:
return 1;
case HdfMatlabClass.MInt16:
case HdfMatlabClass.MUInt16:
@ -675,6 +681,7 @@ namespace MatFileHandler
case HdfMatlabClass.MInt8:
return H5T.NATIVE_INT8;
case HdfMatlabClass.MUInt8:
case HdfMatlabClass.MLogical:
return H5T.NATIVE_UINT8;
case HdfMatlabClass.MInt16:
return H5T.NATIVE_INT16;