diff --git a/MatFileHandler.Tests/MatFileReaderTests.cs b/MatFileHandler.Tests/MatFileReaderLevel5Tests.cs old mode 100755 new mode 100644 similarity index 91% rename from MatFileHandler.Tests/MatFileReaderTests.cs rename to MatFileHandler.Tests/MatFileReaderLevel5Tests.cs index fd35342..76689bf --- a/MatFileHandler.Tests/MatFileReaderTests.cs +++ b/MatFileHandler.Tests/MatFileReaderLevel5Tests.cs @@ -1,485 +1,490 @@ -// Copyright 2017-2018 Alexander Luzgarev - -using System; -using System.IO; -using System.Linq; -using System.Numerics; -using NUnit.Framework; - -namespace MatFileHandler.Tests -{ - /// - /// Tests of file reading API. - /// - [TestFixture] - public class MatFileReaderTests - { - private const string TestDirectory = "test-data"; - - /// - /// Test reading all files in a given test set. - /// - /// Name of the set. - [TestCase("good")] - public void TestReader(string testSet) - { - foreach (var matFile in GetTests(testSet).GetAllTestData()) - { - Assert.That(matFile.Variables, Is.Not.Empty); - } - } - - /// - /// Test reading lower and upper limits of integer data types. - /// - [Test] - public void TestLimits() - { - var matFile = GetTests("good")["limits"]; - IArray array; - array = matFile["int8_"].Value; - CheckLimits(array as IArrayOf, CommonData.Int8Limits); - Assert.That(array.ConvertToDoubleArray(), Is.EqualTo(new[] { -128.0, 127.0 })); - - array = matFile["uint8_"].Value; - CheckLimits(array as IArrayOf, CommonData.UInt8Limits); - - array = matFile["int16_"].Value; - CheckLimits(array as IArrayOf, CommonData.Int16Limits); - - array = matFile["uint16_"].Value; - CheckLimits(array as IArrayOf, CommonData.UInt16Limits); - - array = matFile["int32_"].Value; - CheckLimits(array as IArrayOf, CommonData.Int32Limits); - - array = matFile["uint32_"].Value; - CheckLimits(array as IArrayOf, CommonData.UInt32Limits); - - array = matFile["int64_"].Value; - CheckLimits(array as IArrayOf, CommonData.Int64Limits); - - array = matFile["uint64_"].Value; - CheckLimits(array as IArrayOf, CommonData.UInt64Limits); - } - - /// - /// Test writing lower and upper limits of integer-based complex data types. - /// - [Test] - public void TestComplexLimits() - { - var matFile = GetTests("good")["limits_complex"]; - IArray array; - array = matFile["int8_complex"].Value; - CheckComplexLimits(array as IArrayOf>, CommonData.Int8Limits); - Assert.That( - array.ConvertToComplexArray(), - Is.EqualTo(new[] { -128.0 + (127.0 * Complex.ImaginaryOne), 127.0 - (128.0 * Complex.ImaginaryOne) })); - - array = matFile["uint8_complex"].Value; - CheckComplexLimits(array as IArrayOf>, CommonData.UInt8Limits); - - array = matFile["int16_complex"].Value; - CheckComplexLimits(array as IArrayOf>, CommonData.Int16Limits); - - array = matFile["uint16_complex"].Value; - CheckComplexLimits(array as IArrayOf>, CommonData.UInt16Limits); - - array = matFile["int32_complex"].Value; - CheckComplexLimits(array as IArrayOf>, CommonData.Int32Limits); - - array = matFile["uint32_complex"].Value; - CheckComplexLimits(array as IArrayOf>, CommonData.UInt32Limits); - - array = matFile["int64_complex"].Value; - CheckComplexLimits(array as IArrayOf>, CommonData.Int64Limits); - - array = matFile["uint64_complex"].Value; - CheckComplexLimits(array as IArrayOf>, CommonData.UInt64Limits); - } - - /// - /// Test reading an ASCII-encoded string. - /// - [Test] - public void TestAscii() - { - var matFile = GetTests("good")["ascii"]; - var arrayAscii = matFile["s"].Value as ICharArray; - Assert.That(arrayAscii, Is.Not.Null); - Assert.That(arrayAscii.Dimensions, Is.EqualTo(new[] { 1, 3 })); - Assert.That(arrayAscii.String, Is.EqualTo("abc")); - Assert.That(arrayAscii[2], Is.EqualTo('c')); - } - - /// - /// Test reading a Unicode string. - /// - [Test] - public void TestUnicode() - { - var matFile = GetTests("good")["unicode"]; - var arrayUnicode = matFile["s"].Value as ICharArray; - Assert.That(arrayUnicode, Is.Not.Null); - Assert.That(arrayUnicode.Dimensions, Is.EqualTo(new[] { 1, 2 })); - Assert.That(arrayUnicode.String, Is.EqualTo("必フ")); - Assert.That(arrayUnicode[0], Is.EqualTo('必')); - Assert.That(arrayUnicode[1], Is.EqualTo('フ')); - } - - /// - /// Test reading a wide Unicode string. - /// - [Test] - public void TestUnicodeWide() - { - var matFile = GetTests("good")["unicode-wide"]; - var arrayUnicodeWide = matFile["s"].Value as ICharArray; - Assert.That(arrayUnicodeWide, Is.Not.Null); - Assert.That(arrayUnicodeWide.Dimensions, Is.EqualTo(new[] { 1, 2 })); - Assert.That(arrayUnicodeWide.String, Is.EqualTo("🍆")); - } - - /// - /// Test converting a structure array to a Double array. - /// - /// Should return null. - [Test(ExpectedResult = null)] - public double[] TestConvertToDoubleArray() - { - var matFile = GetTests("good")["struct"]; - var array = matFile.Variables[0].Value; - return array.ConvertToDoubleArray(); - } - - /// - /// Test converting a structure array to a Complex array. - /// - /// Should return null. - [Test(ExpectedResult = null)] - public Complex[] TestConvertToComplexArray() - { - var matFile = GetTests("good")["struct"]; - var array = matFile.Variables[0].Value; - return array.ConvertToComplexArray(); - } - - /// - /// Test reading a structure array. - /// - [Test] - public void TestStruct() - { - var matFile = GetTests("good")["struct"]; - var structure = matFile["struct_"].Value as IStructureArray; - Assert.That(structure, Is.Not.Null); - Assert.That(structure.FieldNames, Is.EquivalentTo(new[] { "x", "y" })); - var element = structure[0, 0]; - Assert.That(element.ContainsKey("x"), Is.True); - Assert.That(element.Count, Is.EqualTo(2)); - Assert.That(element.TryGetValue("x", out var _), Is.True); - Assert.That(element.TryGetValue("z", out var _), Is.False); - Assert.That(element.Keys, Has.Exactly(2).Items); - Assert.That(element.Values, Has.Exactly(2).Items); - var keys = element.Select(pair => pair.Key); - Assert.That(keys, Is.EquivalentTo(new[] { "x", "y" })); - - Assert.That((element["x"] as IArrayOf)?[0], Is.EqualTo(12.345)); - - Assert.That((structure["x", 0, 0] as IArrayOf)?[0], Is.EqualTo(12.345)); - Assert.That((structure["y", 0, 0] as ICharArray)?.String, Is.EqualTo("abc")); - Assert.That((structure["x", 1, 0] as ICharArray)?.String, Is.EqualTo("xyz")); - Assert.That(structure["y", 1, 0].IsEmpty, Is.True); - Assert.That((structure["x", 0, 1] as IArrayOf)?[0], Is.EqualTo(2.0)); - Assert.That((structure["y", 0, 1] as IArrayOf)?[0], Is.EqualTo(13.0)); - Assert.That(structure["x", 1, 1].IsEmpty, Is.True); - Assert.That((structure["y", 1, 1] as ICharArray)?[0, 0], Is.EqualTo('a')); - Assert.That(((structure["x", 0, 2] as ICellArray)?[0] as ICharArray)?.String, Is.EqualTo("x")); - Assert.That(((structure["x", 0, 2] as ICellArray)?[1] as ICharArray)?.String, Is.EqualTo("yz")); - Assert.That((structure["y", 0, 2] as IArrayOf)?.Dimensions, Is.EqualTo(new[] { 2, 3 })); - Assert.That((structure["y", 0, 2] as IArrayOf)?[0, 2], Is.EqualTo(3.0)); - Assert.That((structure["x", 1, 2] as IArrayOf)?[0], Is.EqualTo(1.5f)); - Assert.That(structure["y", 1, 2].IsEmpty, Is.True); - } - - /// - /// Test reading a sparse array. - /// - [Test] - public void TestSparse() - { - var matFile = GetTests("good")["sparse"]; - var sparseArray = matFile["sparse_"].Value as ISparseArrayOf; - Assert.That(sparseArray, Is.Not.Null); - Assert.That(sparseArray.Dimensions, Is.EqualTo(new[] { 4, 5 })); - Assert.That(sparseArray.Data[(1, 1)], Is.EqualTo(1.0)); - Assert.That(sparseArray[1, 1], Is.EqualTo(1.0)); - Assert.That(sparseArray[1, 2], Is.EqualTo(2.0)); - Assert.That(sparseArray[2, 1], Is.EqualTo(3.0)); - Assert.That(sparseArray[2, 3], Is.EqualTo(4.0)); - Assert.That(sparseArray[0, 4], Is.EqualTo(0.0)); - Assert.That(sparseArray[3, 0], Is.EqualTo(0.0)); - Assert.That(sparseArray[3, 4], Is.EqualTo(0.0)); - } - - /// - /// Test reading a logical array. - /// - [Test] - public void TestLogical() - { - var matFile = GetTests("good")["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); - } - - /// - /// Test reading a sparse logical array. - /// - [Test] - public void TestSparseLogical() - { - var matFile = GetTests("good")["sparse_logical"]; - var array = matFile["sparse_logical"].Value; - var sparseArray = array as ISparseArrayOf; - Assert.That(sparseArray, Is.Not.Null); - Assert.That(sparseArray.Data[(0, 0)], Is.True); - Assert.That(sparseArray[0, 0], Is.True); - Assert.That(sparseArray[0, 1], Is.True); - Assert.That(sparseArray[0, 2], Is.False); - Assert.That(sparseArray[1, 0], Is.False); - Assert.That(sparseArray[1, 1], Is.True); - Assert.That(sparseArray[1, 2], Is.True); - } - - /// - /// Test reading a global variable. - /// - [Test] - public void TestGlobal() - { - var matFile = GetTests("good")["global"]; - var variable = matFile.Variables.First(); - Assert.That(variable.IsGlobal, Is.True); - } - - /// - /// Test reading a sparse complex array. - /// - [Test] - public void TextSparseComplex() - { - var matFile = GetTests("good")["sparse_complex"]; - var array = matFile["sparse_complex"].Value; - var sparseArray = array as ISparseArrayOf; - Assert.That(sparseArray, Is.Not.Null); - Assert.That(sparseArray[0, 0], Is.EqualTo(-1.5 + (2.5 * Complex.ImaginaryOne))); - Assert.That(sparseArray[1, 0], Is.EqualTo(2 - (3 * Complex.ImaginaryOne))); - Assert.That(sparseArray[0, 1], Is.EqualTo(Complex.Zero)); - Assert.That(sparseArray[1, 1], Is.EqualTo(0.5 + (1.0 * Complex.ImaginaryOne))); - } - - /// - /// Test reading an object. - /// - [Test] - public void TestObject() - { - var matFile = GetTests("good")["object"]; - var obj = matFile["object_"].Value as IMatObject; - Assert.IsNotNull(obj); - Assert.That(obj.ClassName, Is.EqualTo("Point")); - Assert.That(obj.FieldNames, Is.EquivalentTo(new[] { "x", "y" })); - Assert.That(obj["x", 0].ConvertToDoubleArray(), Is.EqualTo(new[] { 3.0 })); - Assert.That(obj["y", 0].ConvertToDoubleArray(), Is.EqualTo(new[] { 5.0 })); - Assert.That(obj["x", 1].ConvertToDoubleArray(), Is.EqualTo(new[] { -2.0 })); - Assert.That(obj["y", 1].ConvertToDoubleArray(), Is.EqualTo(new[] { 6.0 })); - } - - /// - /// Test reading another object. - /// - [Test] - public void TestObject2() - { - var matFile = GetTests("good")["object2"]; - var obj = matFile["object2"].Value as IMatObject; - Assert.IsNotNull(obj); - Assert.That(obj.ClassName, Is.EqualTo("Point")); - Assert.That(obj.FieldNames, Is.EquivalentTo(new[] { "x", "y" })); - Assert.That(obj["x", 0, 0].ConvertToDoubleArray(), Is.EqualTo(new[] { 3.0 })); - Assert.That(obj["y", 0, 0].ConvertToDoubleArray(), Is.EqualTo(new[] { 5.0 })); - Assert.That(obj["x", 1, 0].ConvertToDoubleArray(), Is.EqualTo(new[] { 1.0 })); - Assert.That(obj["y", 1, 0].ConvertToDoubleArray(), Is.EqualTo(new[] { 0.0 })); - Assert.That(obj["x", 0, 1].ConvertToDoubleArray(), Is.EqualTo(new[] { -2.0 })); - Assert.That(obj["y", 0, 1].ConvertToDoubleArray(), Is.EqualTo(new[] { 6.0 })); - Assert.That(obj["x", 1, 1].ConvertToDoubleArray(), Is.EqualTo(new[] { 0.0 })); - Assert.That(obj["y", 1, 1].ConvertToDoubleArray(), Is.EqualTo(new[] { 1.0 })); - Assert.That(obj[0, 1]["x"].ConvertToDoubleArray(), Is.EqualTo(new[] { -2.0 })); - Assert.That(obj[2]["x"].ConvertToDoubleArray(), Is.EqualTo(new[] { -2.0 })); - } - - /// - /// Test reading a table. - /// - [Test] - public void TestTable() - { - var matFile = GetTests("good")["table"]; - var obj = matFile["table_"].Value as IMatObject; - var table = new TableAdapter(obj); - Assert.That(table.NumberOfRows, Is.EqualTo(3)); - Assert.That(table.NumberOfVariables, Is.EqualTo(2)); - Assert.That(table.Description, Is.EqualTo("Some table")); - Assert.That(table.VariableNames, Is.EqualTo(new[] { "variable1", "variable2" })); - var variable1 = table["variable1"] as ICellArray; - Assert.That((variable1[0] as ICharArray).String, Is.EqualTo("First row")); - Assert.That((variable1[1] as ICharArray).String, Is.EqualTo("Second row")); - Assert.That((variable1[2] as ICharArray).String, Is.EqualTo("Third row")); - var variable2 = table["variable2"]; - Assert.That(variable2.ConvertToDoubleArray(), Is.EqualTo(new[] { 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 })); - } - - /// - /// Test subobjects within objects. - /// - [Test] - public void TestSubobjects() - { - var matFile = GetTests("good")["pointWithSubpoints"]; - var p = matFile["p"].Value as IMatObject; - Assert.That(p.ClassName, Is.EqualTo("Point")); - var x = p["x"] as IMatObject; - Assert.That(x.ClassName, Is.EqualTo("SubPoint")); - Assert.That(x.FieldNames, Is.EquivalentTo(new[] { "a", "b", "c" })); - var y = p["y"] as IMatObject; - Assert.That(y.ClassName, Is.EqualTo("SubPoint")); - Assert.That(y.FieldNames, Is.EquivalentTo(new[] { "a", "b", "c" })); - Assert.That(x["a"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 1.0 })); - Assert.That(x["b"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 2.0 })); - Assert.That(x["c"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 3.0 })); - Assert.That(y["a"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 14.0 })); - Assert.That(y["b"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 15.0 })); - Assert.That(y["c"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 16.0 })); - } - - /// - /// Test nested objects. - /// - [Test] - public void TestNestedObjects() - { - var matFile = GetTests("good")["subsubPoint"]; - var p = matFile["p"].Value as IMatObject; - Assert.That(p.ClassName, Is.EqualTo("Point")); - Assert.That(p["x"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 1.0 })); - var pp = p["y"] as IMatObject; - Assert.That(pp.ClassName == "Point"); - Assert.That(pp["x"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 10.0 })); - var ppp = pp["y"] as IMatObject; - Assert.That(ppp["x"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 100.0 })); - Assert.That(ppp["y"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 200.0 })); - } - - /// - /// Test datetime objects. - /// - [Test] - public void TestDatetime() - { - var matFile = GetTests("good")["datetime"]; - var d = matFile["d"].Value as IMatObject; - var datetime = new DatetimeAdapter(d); - Assert.That(datetime.Dimensions, Is.EquivalentTo(new[] { 1, 2 })); - Assert.That(datetime[0], Is.EqualTo(new DateTimeOffset(2000, 1, 1, 0, 0, 0, TimeSpan.Zero))); - Assert.That(datetime[1], Is.EqualTo(new DateTimeOffset(1987, 1, 2, 3, 4, 5, TimeSpan.Zero))); - } - - /// - /// Another test for datetime objects. - /// - [Test] - public void TestDatetime2() - { - var matFile = GetTests("good")["datetime2"]; - var d = matFile["d"].Value as IMatObject; - var datetime = new DatetimeAdapter(d); - Assert.That(datetime.Dimensions, Is.EquivalentTo(new[] { 1, 1 })); - var diff = new DateTimeOffset(2, 1, 1, 1, 1, 1, 235, TimeSpan.Zero); - Assert.That(datetime[0] - diff < TimeSpan.FromMilliseconds(1)); - Assert.That(diff - datetime[0] < TimeSpan.FromMilliseconds(1)); - } - - /// - /// Test string objects. - /// - [Test] - public void TestString() - { - var matFile = GetTests("good")["string"]; - var s = matFile["s"].Value as IMatObject; - var str = new StringAdapter(s); - Assert.That(str.Dimensions, Is.EquivalentTo(new[] { 4, 1 })); - Assert.That(str[0], Is.EqualTo("abc")); - Assert.That(str[1], Is.EqualTo("defgh")); - Assert.That(str[2], Is.EqualTo("абвгд")); - Assert.That(str[3], Is.EqualTo("æøå")); - } - - /// - /// Test duration objects. - /// - [Test] - public void TestDuration() - { - var matFile = GetTests("good")["duration"]; - var d = matFile["d"].Value as IMatObject; - var duration = new DurationAdapter(d); - Assert.That(duration.Dimensions, Is.EquivalentTo(new[] { 1, 3 })); - Assert.That(duration[0], Is.EqualTo(TimeSpan.FromTicks(12345678L))); - Assert.That(duration[1], Is.EqualTo(new TimeSpan(0, 2, 4))); - Assert.That(duration[2], Is.EqualTo(new TimeSpan(1, 3, 5))); - } - - /// - /// Test unrepresentable datetime. - /// - [Test] - public void TestDatetime_Unrepresentable() - { - var matFile = GetTests("good")["datetime-unrepresentable"]; - var obj = matFile["d"].Value as IMatObject; - var datetime = new DatetimeAdapter(obj); - var d0 = datetime[0]; - Assert.That(d0, Is.Null); - } - - private static AbstractTestDataFactory GetTests(string factoryName) => - new MatTestDataFactory(Path.Combine(TestDirectory, factoryName)); - - private static void CheckLimits(IArrayOf array, T[] limits) - where T : struct - { - Assert.That(array, Is.Not.Null); - Assert.That(array.Dimensions, Is.EqualTo(new[] { 1, 2 })); - Assert.That(array.Data, Is.EqualTo(limits)); - } - - private static void CheckComplexLimits(IArrayOf> array, T[] limits) - where T : struct - { - Assert.That(array, Is.Not.Null); - Assert.That(array.Dimensions, Is.EqualTo(new[] { 1, 2 })); - Assert.That(array[0], Is.EqualTo(new ComplexOf(limits[0], limits[1]))); - Assert.That(array[1], Is.EqualTo(new ComplexOf(limits[1], limits[0]))); - } - } +// Copyright 2017-2018 Alexander Luzgarev + +using System; +using System.IO; +using System.Linq; +using System.Numerics; +using NUnit.Framework; + +namespace MatFileHandler.Tests +{ + /// + /// Tests of file reading API. + /// + [TestFixture] + public class MatFileReaderLevel5Tests + { + private const string TestDirectory = "test-data"; + + /// + /// Test reading all files in a given test set. + /// + /// Name of the set. + [TestCase("level5")] + public void TestReader(string testSet) + { + foreach (var matFile in GetTests(testSet).GetAllTestData()) + { + Assert.That(matFile.Variables, Is.Not.Empty); + } + } + + /// + /// Test reading lower and upper limits of integer data types. + /// + [Test] + public void TestLimits() + { + var matFile = ReadLevel5TestFile("limits"); + IArray array; + array = matFile["int8_"].Value; + CheckLimits(array as IArrayOf, CommonData.Int8Limits); + Assert.That(array.ConvertToDoubleArray(), Is.EqualTo(new[] { -128.0, 127.0 })); + + array = matFile["uint8_"].Value; + CheckLimits(array as IArrayOf, CommonData.UInt8Limits); + + array = matFile["int16_"].Value; + CheckLimits(array as IArrayOf, CommonData.Int16Limits); + + array = matFile["uint16_"].Value; + CheckLimits(array as IArrayOf, CommonData.UInt16Limits); + + array = matFile["int32_"].Value; + CheckLimits(array as IArrayOf, CommonData.Int32Limits); + + array = matFile["uint32_"].Value; + CheckLimits(array as IArrayOf, CommonData.UInt32Limits); + + array = matFile["int64_"].Value; + CheckLimits(array as IArrayOf, CommonData.Int64Limits); + + array = matFile["uint64_"].Value; + CheckLimits(array as IArrayOf, CommonData.UInt64Limits); + } + + /// + /// Test writing lower and upper limits of integer-based complex data types. + /// + [Test] + public void TestComplexLimits() + { + var matFile = ReadLevel5TestFile("limits_complex"); + IArray array; + array = matFile["int8_complex"].Value; + CheckComplexLimits(array as IArrayOf>, CommonData.Int8Limits); + Assert.That( + array.ConvertToComplexArray(), + Is.EqualTo(new[] { -128.0 + (127.0 * Complex.ImaginaryOne), 127.0 - (128.0 * Complex.ImaginaryOne) })); + + array = matFile["uint8_complex"].Value; + CheckComplexLimits(array as IArrayOf>, CommonData.UInt8Limits); + + array = matFile["int16_complex"].Value; + CheckComplexLimits(array as IArrayOf>, CommonData.Int16Limits); + + array = matFile["uint16_complex"].Value; + CheckComplexLimits(array as IArrayOf>, CommonData.UInt16Limits); + + array = matFile["int32_complex"].Value; + CheckComplexLimits(array as IArrayOf>, CommonData.Int32Limits); + + array = matFile["uint32_complex"].Value; + CheckComplexLimits(array as IArrayOf>, CommonData.UInt32Limits); + + array = matFile["int64_complex"].Value; + CheckComplexLimits(array as IArrayOf>, CommonData.Int64Limits); + + array = matFile["uint64_complex"].Value; + CheckComplexLimits(array as IArrayOf>, CommonData.UInt64Limits); + } + + /// + /// Test reading an ASCII-encoded string. + /// + [Test] + public void TestAscii() + { + var matFile = ReadLevel5TestFile("ascii"); + var arrayAscii = matFile["s"].Value as ICharArray; + Assert.That(arrayAscii, Is.Not.Null); + Assert.That(arrayAscii.Dimensions, Is.EqualTo(new[] { 1, 3 })); + Assert.That(arrayAscii.String, Is.EqualTo("abc")); + Assert.That(arrayAscii[2], Is.EqualTo('c')); + } + + /// + /// Test reading a Unicode string. + /// + [Test] + public void TestUnicode() + { + var matFile = ReadLevel5TestFile("unicode"); + var arrayUnicode = matFile["s"].Value as ICharArray; + Assert.That(arrayUnicode, Is.Not.Null); + Assert.That(arrayUnicode.Dimensions, Is.EqualTo(new[] { 1, 2 })); + Assert.That(arrayUnicode.String, Is.EqualTo("必フ")); + Assert.That(arrayUnicode[0], Is.EqualTo('必')); + Assert.That(arrayUnicode[1], Is.EqualTo('フ')); + } + + /// + /// Test reading a wide Unicode string. + /// + [Test] + public void TestUnicodeWide() + { + var matFile = ReadLevel5TestFile("unicode-wide"); + var arrayUnicodeWide = matFile["s"].Value as ICharArray; + Assert.That(arrayUnicodeWide, Is.Not.Null); + Assert.That(arrayUnicodeWide.Dimensions, Is.EqualTo(new[] { 1, 2 })); + Assert.That(arrayUnicodeWide.String, Is.EqualTo("🍆")); + } + + /// + /// Test converting a structure array to a Double array. + /// + /// Should return null. + [Test(ExpectedResult = null)] + public double[] TestConvertToDoubleArray() + { + var matFile = ReadLevel5TestFile("struct"); + var array = matFile.Variables[0].Value; + return array.ConvertToDoubleArray(); + } + + /// + /// Test converting a structure array to a Complex array. + /// + /// Should return null. + [Test(ExpectedResult = null)] + public Complex[] TestConvertToComplexArray() + { + var matFile = ReadLevel5TestFile("struct"); + var array = matFile.Variables[0].Value; + return array.ConvertToComplexArray(); + } + + /// + /// Test reading a structure array. + /// + [Test] + public void TestStruct() + { + var matFile = ReadLevel5TestFile("struct"); + var structure = matFile["struct_"].Value as IStructureArray; + Assert.That(structure, Is.Not.Null); + Assert.That(structure.FieldNames, Is.EquivalentTo(new[] { "x", "y" })); + var element = structure[0, 0]; + Assert.That(element.ContainsKey("x"), Is.True); + Assert.That(element.Count, Is.EqualTo(2)); + Assert.That(element.TryGetValue("x", out var _), Is.True); + Assert.That(element.TryGetValue("z", out var _), Is.False); + Assert.That(element.Keys, Has.Exactly(2).Items); + Assert.That(element.Values, Has.Exactly(2).Items); + var keys = element.Select(pair => pair.Key); + Assert.That(keys, Is.EquivalentTo(new[] { "x", "y" })); + + Assert.That((element["x"] as IArrayOf)?[0], Is.EqualTo(12.345)); + + Assert.That((structure["x", 0, 0] as IArrayOf)?[0], Is.EqualTo(12.345)); + Assert.That((structure["y", 0, 0] as ICharArray)?.String, Is.EqualTo("abc")); + Assert.That((structure["x", 1, 0] as ICharArray)?.String, Is.EqualTo("xyz")); + Assert.That(structure["y", 1, 0].IsEmpty, Is.True); + Assert.That((structure["x", 0, 1] as IArrayOf)?[0], Is.EqualTo(2.0)); + Assert.That((structure["y", 0, 1] as IArrayOf)?[0], Is.EqualTo(13.0)); + Assert.That(structure["x", 1, 1].IsEmpty, Is.True); + Assert.That((structure["y", 1, 1] as ICharArray)?[0, 0], Is.EqualTo('a')); + Assert.That(((structure["x", 0, 2] as ICellArray)?[0] as ICharArray)?.String, Is.EqualTo("x")); + Assert.That(((structure["x", 0, 2] as ICellArray)?[1] as ICharArray)?.String, Is.EqualTo("yz")); + Assert.That((structure["y", 0, 2] as IArrayOf)?.Dimensions, Is.EqualTo(new[] { 2, 3 })); + Assert.That((structure["y", 0, 2] as IArrayOf)?[0, 2], Is.EqualTo(3.0)); + Assert.That((structure["x", 1, 2] as IArrayOf)?[0], Is.EqualTo(1.5f)); + Assert.That(structure["y", 1, 2].IsEmpty, Is.True); + } + + /// + /// Test reading a sparse array. + /// + [Test] + public void TestSparse() + { + var matFile = ReadLevel5TestFile("sparse"); + var sparseArray = matFile["sparse_"].Value as ISparseArrayOf; + Assert.That(sparseArray, Is.Not.Null); + Assert.That(sparseArray.Dimensions, Is.EqualTo(new[] { 4, 5 })); + Assert.That(sparseArray.Data[(1, 1)], Is.EqualTo(1.0)); + Assert.That(sparseArray[1, 1], Is.EqualTo(1.0)); + Assert.That(sparseArray[1, 2], Is.EqualTo(2.0)); + Assert.That(sparseArray[2, 1], Is.EqualTo(3.0)); + Assert.That(sparseArray[2, 3], Is.EqualTo(4.0)); + Assert.That(sparseArray[0, 4], Is.EqualTo(0.0)); + Assert.That(sparseArray[3, 0], Is.EqualTo(0.0)); + Assert.That(sparseArray[3, 4], Is.EqualTo(0.0)); + } + + /// + /// Test reading a logical array. + /// + [Test] + public void TestLogical() + { + var matFile = ReadLevel5TestFile("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); + } + + /// + /// Test reading a sparse logical array. + /// + [Test] + public void TestSparseLogical() + { + var matFile = ReadLevel5TestFile("sparse_logical"); + var array = matFile["sparse_logical"].Value; + var sparseArray = array as ISparseArrayOf; + Assert.That(sparseArray, Is.Not.Null); + Assert.That(sparseArray.Data[(0, 0)], Is.True); + Assert.That(sparseArray[0, 0], Is.True); + Assert.That(sparseArray[0, 1], Is.True); + Assert.That(sparseArray[0, 2], Is.False); + Assert.That(sparseArray[1, 0], Is.False); + Assert.That(sparseArray[1, 1], Is.True); + Assert.That(sparseArray[1, 2], Is.True); + } + + /// + /// Test reading a global variable. + /// + [Test] + public void TestGlobal() + { + var matFile = ReadLevel5TestFile("global"); + var variable = matFile.Variables.First(); + Assert.That(variable.IsGlobal, Is.True); + } + + /// + /// Test reading a sparse complex array. + /// + [Test] + public void TextSparseComplex() + { + var matFile = ReadLevel5TestFile("sparse_complex"); + var array = matFile["sparse_complex"].Value; + var sparseArray = array as ISparseArrayOf; + Assert.That(sparseArray, Is.Not.Null); + Assert.That(sparseArray[0, 0], Is.EqualTo(-1.5 + (2.5 * Complex.ImaginaryOne))); + Assert.That(sparseArray[1, 0], Is.EqualTo(2 - (3 * Complex.ImaginaryOne))); + Assert.That(sparseArray[0, 1], Is.EqualTo(Complex.Zero)); + Assert.That(sparseArray[1, 1], Is.EqualTo(0.5 + (1.0 * Complex.ImaginaryOne))); + } + + /// + /// Test reading an object. + /// + [Test] + public void TestObject() + { + var matFile = ReadLevel5TestFile("object"); + var obj = matFile["object_"].Value as IMatObject; + Assert.IsNotNull(obj); + Assert.That(obj.ClassName, Is.EqualTo("Point")); + Assert.That(obj.FieldNames, Is.EquivalentTo(new[] { "x", "y" })); + Assert.That(obj["x", 0].ConvertToDoubleArray(), Is.EqualTo(new[] { 3.0 })); + Assert.That(obj["y", 0].ConvertToDoubleArray(), Is.EqualTo(new[] { 5.0 })); + Assert.That(obj["x", 1].ConvertToDoubleArray(), Is.EqualTo(new[] { -2.0 })); + Assert.That(obj["y", 1].ConvertToDoubleArray(), Is.EqualTo(new[] { 6.0 })); + } + + /// + /// Test reading another object. + /// + [Test] + public void TestObject2() + { + var matFile = ReadLevel5TestFile("object2"); + var obj = matFile["object2"].Value as IMatObject; + Assert.IsNotNull(obj); + Assert.That(obj.ClassName, Is.EqualTo("Point")); + Assert.That(obj.FieldNames, Is.EquivalentTo(new[] { "x", "y" })); + Assert.That(obj["x", 0, 0].ConvertToDoubleArray(), Is.EqualTo(new[] { 3.0 })); + Assert.That(obj["y", 0, 0].ConvertToDoubleArray(), Is.EqualTo(new[] { 5.0 })); + Assert.That(obj["x", 1, 0].ConvertToDoubleArray(), Is.EqualTo(new[] { 1.0 })); + Assert.That(obj["y", 1, 0].ConvertToDoubleArray(), Is.EqualTo(new[] { 0.0 })); + Assert.That(obj["x", 0, 1].ConvertToDoubleArray(), Is.EqualTo(new[] { -2.0 })); + Assert.That(obj["y", 0, 1].ConvertToDoubleArray(), Is.EqualTo(new[] { 6.0 })); + Assert.That(obj["x", 1, 1].ConvertToDoubleArray(), Is.EqualTo(new[] { 0.0 })); + Assert.That(obj["y", 1, 1].ConvertToDoubleArray(), Is.EqualTo(new[] { 1.0 })); + Assert.That(obj[0, 1]["x"].ConvertToDoubleArray(), Is.EqualTo(new[] { -2.0 })); + Assert.That(obj[2]["x"].ConvertToDoubleArray(), Is.EqualTo(new[] { -2.0 })); + } + + /// + /// Test reading a table. + /// + [Test] + public void TestTable() + { + var matFile = ReadLevel5TestFile("table"); + var obj = matFile["table_"].Value as IMatObject; + var table = new TableAdapter(obj); + Assert.That(table.NumberOfRows, Is.EqualTo(3)); + Assert.That(table.NumberOfVariables, Is.EqualTo(2)); + Assert.That(table.Description, Is.EqualTo("Some table")); + Assert.That(table.VariableNames, Is.EqualTo(new[] { "variable1", "variable2" })); + var variable1 = table["variable1"] as ICellArray; + Assert.That((variable1[0] as ICharArray).String, Is.EqualTo("First row")); + Assert.That((variable1[1] as ICharArray).String, Is.EqualTo("Second row")); + Assert.That((variable1[2] as ICharArray).String, Is.EqualTo("Third row")); + var variable2 = table["variable2"]; + Assert.That(variable2.ConvertToDoubleArray(), Is.EqualTo(new[] { 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 })); + } + + /// + /// Test subobjects within objects. + /// + [Test] + public void TestSubobjects() + { + var matFile = ReadLevel5TestFile("pointWithSubpoints"); + var p = matFile["p"].Value as IMatObject; + Assert.That(p.ClassName, Is.EqualTo("Point")); + var x = p["x"] as IMatObject; + Assert.That(x.ClassName, Is.EqualTo("SubPoint")); + Assert.That(x.FieldNames, Is.EquivalentTo(new[] { "a", "b", "c" })); + var y = p["y"] as IMatObject; + Assert.That(y.ClassName, Is.EqualTo("SubPoint")); + Assert.That(y.FieldNames, Is.EquivalentTo(new[] { "a", "b", "c" })); + Assert.That(x["a"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 1.0 })); + Assert.That(x["b"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 2.0 })); + Assert.That(x["c"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 3.0 })); + Assert.That(y["a"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 14.0 })); + Assert.That(y["b"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 15.0 })); + Assert.That(y["c"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 16.0 })); + } + + /// + /// Test nested objects. + /// + [Test] + public void TestNestedObjects() + { + var matFile = ReadLevel5TestFile("subsubPoint"); + var p = matFile["p"].Value as IMatObject; + Assert.That(p.ClassName, Is.EqualTo("Point")); + Assert.That(p["x"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 1.0 })); + var pp = p["y"] as IMatObject; + Assert.That(pp.ClassName == "Point"); + Assert.That(pp["x"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 10.0 })); + var ppp = pp["y"] as IMatObject; + Assert.That(ppp["x"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 100.0 })); + Assert.That(ppp["y"].ConvertToDoubleArray(), Is.EquivalentTo(new[] { 200.0 })); + } + + /// + /// Test datetime objects. + /// + [Test] + public void TestDatetime() + { + var matFile = ReadLevel5TestFile("datetime"); + var d = matFile["d"].Value as IMatObject; + var datetime = new DatetimeAdapter(d); + Assert.That(datetime.Dimensions, Is.EquivalentTo(new[] { 1, 2 })); + Assert.That(datetime[0], Is.EqualTo(new DateTimeOffset(2000, 1, 1, 0, 0, 0, TimeSpan.Zero))); + Assert.That(datetime[1], Is.EqualTo(new DateTimeOffset(1987, 1, 2, 3, 4, 5, TimeSpan.Zero))); + } + + /// + /// Another test for datetime objects. + /// + [Test] + public void TestDatetime2() + { + var matFile = ReadLevel5TestFile("datetime2"); + var d = matFile["d"].Value as IMatObject; + var datetime = new DatetimeAdapter(d); + Assert.That(datetime.Dimensions, Is.EquivalentTo(new[] { 1, 1 })); + var diff = new DateTimeOffset(2, 1, 1, 1, 1, 1, 235, TimeSpan.Zero); + Assert.That(datetime[0] - diff < TimeSpan.FromMilliseconds(1)); + Assert.That(diff - datetime[0] < TimeSpan.FromMilliseconds(1)); + } + + /// + /// Test string objects. + /// + [Test] + public void TestString() + { + var matFile = ReadLevel5TestFile("string"); + var s = matFile["s"].Value as IMatObject; + var str = new StringAdapter(s); + Assert.That(str.Dimensions, Is.EquivalentTo(new[] { 4, 1 })); + Assert.That(str[0], Is.EqualTo("abc")); + Assert.That(str[1], Is.EqualTo("defgh")); + Assert.That(str[2], Is.EqualTo("абвгд")); + Assert.That(str[3], Is.EqualTo("æøå")); + } + + /// + /// Test duration objects. + /// + [Test] + public void TestDuration() + { + var matFile = ReadLevel5TestFile("duration"); + var d = matFile["d"].Value as IMatObject; + var duration = new DurationAdapter(d); + Assert.That(duration.Dimensions, Is.EquivalentTo(new[] { 1, 3 })); + Assert.That(duration[0], Is.EqualTo(TimeSpan.FromTicks(12345678L))); + Assert.That(duration[1], Is.EqualTo(new TimeSpan(0, 2, 4))); + Assert.That(duration[2], Is.EqualTo(new TimeSpan(1, 3, 5))); + } + + /// + /// Test unrepresentable datetime. + /// + [Test] + public void TestDatetime_Unrepresentable() + { + var matFile = ReadLevel5TestFile("datetime-unrepresentable"); + var obj = matFile["d"].Value as IMatObject; + var datetime = new DatetimeAdapter(obj); + var d0 = datetime[0]; + Assert.That(d0, Is.Null); + } + + private static AbstractTestDataFactory GetTests(string factoryName) => + new MatTestDataFactory(Path.Combine(TestDirectory, factoryName)); + + private static void CheckLimits(IArrayOf array, T[] limits) + where T : struct + { + Assert.That(array, Is.Not.Null); + Assert.That(array.Dimensions, Is.EqualTo(new[] { 1, 2 })); + Assert.That(array.Data, Is.EqualTo(limits)); + } + + private static void CheckComplexLimits(IArrayOf> array, T[] limits) + where T : struct + { + Assert.That(array, Is.Not.Null); + Assert.That(array.Dimensions, Is.EqualTo(new[] { 1, 2 })); + Assert.That(array[0], Is.EqualTo(new ComplexOf(limits[0], limits[1]))); + Assert.That(array[1], Is.EqualTo(new ComplexOf(limits[1], limits[0]))); + } + + private IMatFile ReadLevel5TestFile(string testName) + { + return GetTests("level5")[testName]; + } + } } \ No newline at end of file diff --git a/MatFileHandler.Tests/MatFileWriterTests.cs b/MatFileHandler.Tests/MatFileWriterTests.cs index 335220a..a6c2889 100755 --- a/MatFileHandler.Tests/MatFileWriterTests.cs +++ b/MatFileHandler.Tests/MatFileWriterTests.cs @@ -27,7 +27,7 @@ namespace MatFileHandler.Tests array[1] = 17.0; var variable = builder.NewVariable("test", array); var actual = builder.NewFile(new[] { variable }); - MatCompareWithTestData("good", "double-array", actual); + MatCompareWithLevel5TestData("double-array", actual); } /// @@ -65,7 +65,7 @@ namespace MatFileHandler.Tests var int64 = builder.NewVariable("int64_", builder.NewArray(CommonData.Int64Limits, 1, 2)); var uint64 = builder.NewVariable("uint64_", builder.NewArray(CommonData.UInt64Limits, 1, 2)); var actual = builder.NewFile(new[] { int16, int32, int64, int8, uint16, uint32, uint64, uint8 }); - MatCompareWithTestData("good", "limits", actual); + MatCompareWithLevel5TestData("limits", actual); } /// @@ -104,7 +104,7 @@ namespace MatFileHandler.Tests int16Complex, int32Complex, int64Complex, int8Complex, uint16Complex, uint32Complex, uint64Complex, uint8Complex, }); - MatCompareWithTestData("good", "limits_complex", actual); + MatCompareWithLevel5TestData("limits_complex", actual); } /// @@ -116,7 +116,7 @@ namespace MatFileHandler.Tests var builder = new DataBuilder(); var s = builder.NewVariable("s", builder.NewCharArray("🍆")); var actual = builder.NewFile(new[] { s }); - MatCompareWithTestData("good", "unicode-wide", actual); + MatCompareWithLevel5TestData("unicode-wide", actual); } /// @@ -133,7 +133,7 @@ namespace MatFileHandler.Tests sparseArray[2, 3] = 4; var sparse = builder.NewVariable("sparse_", sparseArray); var actual = builder.NewFile(new[] { sparse }); - MatCompareWithTestData("good", "sparse", actual); + MatCompareWithLevel5TestData("sparse", actual); } /// @@ -161,7 +161,7 @@ namespace MatFileHandler.Tests structure["y", 1, 2] = builder.NewEmpty(); var struct_ = builder.NewVariable("struct_", structure); var actual = builder.NewFile(new[] { struct_ }); - MatCompareWithTestData("good", "struct", actual); + MatCompareWithLevel5TestData("struct", actual); } /// @@ -174,7 +174,7 @@ namespace MatFileHandler.Tests var logical = builder.NewArray(new[] { true, false, true, true, false, true }, 2, 3); var logicalVariable = builder.NewVariable("logical_", logical); var actual = builder.NewFile(new[] { logicalVariable }); - MatCompareWithTestData("good", "logical", actual); + MatCompareWithLevel5TestData("logical", actual); } /// @@ -191,7 +191,7 @@ namespace MatFileHandler.Tests array[1, 2] = true; var sparseLogical = builder.NewVariable("sparse_logical", array); var actual = builder.NewFile(new[] { sparseLogical }); - MatCompareWithTestData("good", "sparse_logical", actual); + MatCompareWithLevel5TestData("sparse_logical", actual); } /// @@ -207,7 +207,7 @@ namespace MatFileHandler.Tests array[1, 1] = 0.5 + Complex.ImaginaryOne; var sparseComplex = builder.NewVariable("sparse_complex", array); var actual = builder.NewFile(new[] { sparseComplex }); - MatCompareWithTestData("good", "sparse_complex", actual); + MatCompareWithLevel5TestData("sparse_complex", actual); } /// @@ -220,7 +220,7 @@ namespace MatFileHandler.Tests var array = builder.NewArray(new double[] { 1, 3, 5 }, 1, 3); var global = builder.NewVariable("global_", array, true); var actual = builder.NewFile(new[] { global }); - MatCompareWithTestData("good", "global", actual); + MatCompareWithLevel5TestData("global", actual); } private static AbstractTestDataFactory GetMatTestData(string factoryName) => @@ -398,6 +398,11 @@ namespace MatFileHandler.Tests } } + private void MatCompareWithLevel5TestData(string testName, IMatFile actual) + { + MatCompareWithTestData("level5", testName, actual); + } + private void MatCompareWithTestData(string factoryName, string testName, IMatFile actual) { var expected = GetMatTestData(factoryName)[testName]; diff --git a/MatFileHandler.Tests/test-data/good/ascii.mat b/MatFileHandler.Tests/test-data/level5/ascii.mat old mode 100755 new mode 100644 similarity index 100% rename from MatFileHandler.Tests/test-data/good/ascii.mat rename to MatFileHandler.Tests/test-data/level5/ascii.mat diff --git a/MatFileHandler.Tests/test-data/good/datetime-unrepresentable.mat b/MatFileHandler.Tests/test-data/level5/datetime-unrepresentable.mat similarity index 100% rename from MatFileHandler.Tests/test-data/good/datetime-unrepresentable.mat rename to MatFileHandler.Tests/test-data/level5/datetime-unrepresentable.mat diff --git a/MatFileHandler.Tests/test-data/good/datetime.mat b/MatFileHandler.Tests/test-data/level5/datetime.mat similarity index 100% rename from MatFileHandler.Tests/test-data/good/datetime.mat rename to MatFileHandler.Tests/test-data/level5/datetime.mat diff --git a/MatFileHandler.Tests/test-data/good/datetime2.mat b/MatFileHandler.Tests/test-data/level5/datetime2.mat similarity index 100% rename from MatFileHandler.Tests/test-data/good/datetime2.mat rename to MatFileHandler.Tests/test-data/level5/datetime2.mat diff --git a/MatFileHandler.Tests/test-data/good/double-array.mat b/MatFileHandler.Tests/test-data/level5/double-array.mat similarity index 100% rename from MatFileHandler.Tests/test-data/good/double-array.mat rename to MatFileHandler.Tests/test-data/level5/double-array.mat diff --git a/MatFileHandler.Tests/test-data/good/duration.mat b/MatFileHandler.Tests/test-data/level5/duration.mat similarity index 100% rename from MatFileHandler.Tests/test-data/good/duration.mat rename to MatFileHandler.Tests/test-data/level5/duration.mat diff --git a/MatFileHandler.Tests/test-data/good/global.mat b/MatFileHandler.Tests/test-data/level5/global.mat old mode 100755 new mode 100644 similarity index 100% rename from MatFileHandler.Tests/test-data/good/global.mat rename to MatFileHandler.Tests/test-data/level5/global.mat diff --git a/MatFileHandler.Tests/test-data/good/limits.mat b/MatFileHandler.Tests/test-data/level5/limits.mat old mode 100755 new mode 100644 similarity index 100% rename from MatFileHandler.Tests/test-data/good/limits.mat rename to MatFileHandler.Tests/test-data/level5/limits.mat diff --git a/MatFileHandler.Tests/test-data/good/limits_complex.mat b/MatFileHandler.Tests/test-data/level5/limits_complex.mat old mode 100755 new mode 100644 similarity index 100% rename from MatFileHandler.Tests/test-data/good/limits_complex.mat rename to MatFileHandler.Tests/test-data/level5/limits_complex.mat diff --git a/MatFileHandler.Tests/test-data/good/logical.mat b/MatFileHandler.Tests/test-data/level5/logical.mat old mode 100755 new mode 100644 similarity index 100% rename from MatFileHandler.Tests/test-data/good/logical.mat rename to MatFileHandler.Tests/test-data/level5/logical.mat diff --git a/MatFileHandler.Tests/test-data/good/object.mat b/MatFileHandler.Tests/test-data/level5/object.mat similarity index 100% rename from MatFileHandler.Tests/test-data/good/object.mat rename to MatFileHandler.Tests/test-data/level5/object.mat diff --git a/MatFileHandler.Tests/test-data/good/object2.mat b/MatFileHandler.Tests/test-data/level5/object2.mat similarity index 100% rename from MatFileHandler.Tests/test-data/good/object2.mat rename to MatFileHandler.Tests/test-data/level5/object2.mat diff --git a/MatFileHandler.Tests/test-data/good/pointWithSubpoints.mat b/MatFileHandler.Tests/test-data/level5/pointWithSubpoints.mat similarity index 100% rename from MatFileHandler.Tests/test-data/good/pointWithSubpoints.mat rename to MatFileHandler.Tests/test-data/level5/pointWithSubpoints.mat diff --git a/MatFileHandler.Tests/test-data/good/sparse.mat b/MatFileHandler.Tests/test-data/level5/sparse.mat old mode 100755 new mode 100644 similarity index 100% rename from MatFileHandler.Tests/test-data/good/sparse.mat rename to MatFileHandler.Tests/test-data/level5/sparse.mat diff --git a/MatFileHandler.Tests/test-data/good/sparse_complex.mat b/MatFileHandler.Tests/test-data/level5/sparse_complex.mat old mode 100755 new mode 100644 similarity index 100% rename from MatFileHandler.Tests/test-data/good/sparse_complex.mat rename to MatFileHandler.Tests/test-data/level5/sparse_complex.mat diff --git a/MatFileHandler.Tests/test-data/good/sparse_logical.mat b/MatFileHandler.Tests/test-data/level5/sparse_logical.mat old mode 100755 new mode 100644 similarity index 100% rename from MatFileHandler.Tests/test-data/good/sparse_logical.mat rename to MatFileHandler.Tests/test-data/level5/sparse_logical.mat diff --git a/MatFileHandler.Tests/test-data/good/string.mat b/MatFileHandler.Tests/test-data/level5/string.mat similarity index 100% rename from MatFileHandler.Tests/test-data/good/string.mat rename to MatFileHandler.Tests/test-data/level5/string.mat diff --git a/MatFileHandler.Tests/test-data/good/struct.mat b/MatFileHandler.Tests/test-data/level5/struct.mat old mode 100755 new mode 100644 similarity index 100% rename from MatFileHandler.Tests/test-data/good/struct.mat rename to MatFileHandler.Tests/test-data/level5/struct.mat diff --git a/MatFileHandler.Tests/test-data/good/subsubPoint.mat b/MatFileHandler.Tests/test-data/level5/subsubPoint.mat similarity index 100% rename from MatFileHandler.Tests/test-data/good/subsubPoint.mat rename to MatFileHandler.Tests/test-data/level5/subsubPoint.mat diff --git a/MatFileHandler.Tests/test-data/good/table.mat b/MatFileHandler.Tests/test-data/level5/table.mat similarity index 100% rename from MatFileHandler.Tests/test-data/good/table.mat rename to MatFileHandler.Tests/test-data/level5/table.mat diff --git a/MatFileHandler.Tests/test-data/good/unicode-wide.mat b/MatFileHandler.Tests/test-data/level5/unicode-wide.mat old mode 100755 new mode 100644 similarity index 100% rename from MatFileHandler.Tests/test-data/good/unicode-wide.mat rename to MatFileHandler.Tests/test-data/level5/unicode-wide.mat diff --git a/MatFileHandler.Tests/test-data/good/unicode.mat b/MatFileHandler.Tests/test-data/level5/unicode.mat old mode 100755 new mode 100644 similarity index 100% rename from MatFileHandler.Tests/test-data/good/unicode.mat rename to MatFileHandler.Tests/test-data/level5/unicode.mat diff --git a/MatFileHandler/MatFileHandler.csproj b/MatFileHandler/MatFileHandler.csproj index 6e87fc5..e4dee63 100755 --- a/MatFileHandler/MatFileHandler.csproj +++ b/MatFileHandler/MatFileHandler.csproj @@ -26,12 +26,13 @@ + - All + All - +