diff --git a/MatFileHandler.Tests/MatFileReaderHdfTests.cs b/MatFileHandler.Tests/MatFileReaderHdfTests.cs index 3727358..a58e88a 100644 --- a/MatFileHandler.Tests/MatFileReaderHdfTests.cs +++ b/MatFileHandler.Tests/MatFileReaderHdfTests.cs @@ -204,6 +204,24 @@ namespace MatFileHandler.Tests Assert.That(structure["y", 1, 2].IsEmpty, Is.True); } + /// + /// Test reading a logical array. + /// + [Test] + public void TestLogical() + { + var matFile = ReadHdfTestFile("logical"); + var array = matFile["logical_"].Value; + var logicalArray = array as IArrayOf; + 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(IArrayOf> array, T[] limits) where T : struct { diff --git a/MatFileHandler.Tests/test-data/hdf/logical.mat b/MatFileHandler.Tests/test-data/hdf/logical.mat new file mode 100644 index 0000000..edbc3c2 Binary files /dev/null and b/MatFileHandler.Tests/test-data/hdf/logical.mat differ diff --git a/MatFileHandler/HdfFileReader.cs b/MatFileHandler/HdfFileReader.cs index 8181b2f..f5af339 100644 --- a/MatFileHandler/HdfFileReader.cs +++ b/MatFileHandler/HdfFileReader.cs @@ -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(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;