diff options
author | Jeffrey Stedfast <jestedfa@microsoft.com> | 2020-05-05 00:12:57 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-05 00:12:57 +0300 |
commit | d6375592c233bfdd4190fa1a428972b64f94073d (patch) | |
tree | 041deeac86b2e191b9e84d5a0dcda48671a37df6 | |
parent | fc3d481dade35d9bb2e8bd0970305b73af060002 (diff) | |
parent | ef67848aa5c5aadcc2d4b6d51602dd7c2e60bbf1 (diff) |
Merge pull request #319 from mono/d16-6-rawarray-unit-testsd16-6
[d16-6] Add unit tests for raw array values
-rw-r--r-- | UnitTests/Mono.Debugging.Tests/Shared/EvaluationTests.cs | 63 | ||||
-rw-r--r-- | UnitTests/MonoDevelop.Debugger.Tests.TestApp/TestEvaluation.cs | 7 |
2 files changed, 63 insertions, 7 deletions
diff --git a/UnitTests/Mono.Debugging.Tests/Shared/EvaluationTests.cs b/UnitTests/Mono.Debugging.Tests/Shared/EvaluationTests.cs index c01491c..421805c 100644 --- a/UnitTests/Mono.Debugging.Tests/Shared/EvaluationTests.cs +++ b/UnitTests/Mono.Debugging.Tests/Shared/EvaluationTests.cs @@ -2873,13 +2873,11 @@ namespace Mono.Debugging.Tests } Assert.AreEqual ("byte[]", val.TypeName); Assert.AreEqual ("{byte[3]}", val.Value); - if (!IsVsDebugger) { - // Note: this is not currently supported in the NetCoreDebugger - var bytes = ((RawValueArray)val.GetRawValue ()).ToArray (); - Assert.AreEqual (239, bytes.GetValue (0)); - Assert.AreEqual (187, bytes.GetValue (1)); - Assert.AreEqual (191, bytes.GetValue (2)); - } + + var bytes = ((RawValueArray)val.GetRawValue ()).ToArray (); + Assert.AreEqual (239, bytes.GetValue (0)); + Assert.AreEqual (187, bytes.GetValue (1)); + Assert.AreEqual (191, bytes.GetValue (2)); val = Eval ("b.TestMethod ()"); if (!AllowTargetInvokes) { @@ -3224,5 +3222,56 @@ namespace Mono.Debugging.Tests Assert.AreEqual ("int?", val.TypeName); Assert.AreEqual ("(null)", val.Value); } + + [Test] + public void RawByteArrayToArray () + { + var val = Eval ("rawByteArray"); + Assert.AreEqual ("byte[]", val.TypeName, "rawByteArray"); + Assert.AreEqual ("{byte[256]}", val.Value); + + var rawArray = (RawValueArray)val.GetRawValue (); + var bytes = rawArray.ToArray (); + for (int i = 0; i < 256; i++) + Assert.AreEqual ((byte) i, bytes.GetValue (i)); + } + + [Test] + public void RawByteArrayChunking () + { + var val = Eval ("rawByteArray"); + Assert.AreEqual ("byte[]", val.TypeName, "rawByteArray"); + Assert.AreEqual ("{byte[256]}", val.Value); + + var rawArray = (RawValueArray)val.GetRawValue (); + int index = 0; + + while (index < 256) { + var bytes = rawArray.GetValues (index, 32); + Assert.AreEqual (32, bytes.Length); + for (int i = 0; i < bytes.Length; i++) + Assert.AreEqual ((byte) (index + i), bytes.GetValue (i)); + index += bytes.Length; + } + } + + [Test] + public void RawByteArrayRandomAccess () + { + var val = Eval ("rawByteArray"); + Assert.AreEqual ("byte[]", val.TypeName, "rawByteArray"); + Assert.AreEqual ("{byte[256]}", val.Value); + + var rawArray = (RawValueArray)val.GetRawValue (); + var indexes = new int[] { 57, 179, 97, 229 }; + + foreach (var startIndex in indexes) { + var expected = Math.Min(32, 256 - startIndex); + var bytes = rawArray.GetValues (startIndex, expected); + Assert.AreEqual (expected, bytes.Length, "expected {0} bytes for chunk starting at {1}", expected, startIndex); + for (int i = 0; i < bytes.Length; i++) + Assert.AreEqual ((byte) (startIndex + i), bytes.GetValue (i), "incorrect byte at index {0}", startIndex + i); + } + } } } diff --git a/UnitTests/MonoDevelop.Debugger.Tests.TestApp/TestEvaluation.cs b/UnitTests/MonoDevelop.Debugger.Tests.TestApp/TestEvaluation.cs index 2abcd16..089c1b8 100644 --- a/UnitTests/MonoDevelop.Debugger.Tests.TestApp/TestEvaluation.cs +++ b/UnitTests/MonoDevelop.Debugger.Tests.TestApp/TestEvaluation.cs @@ -340,6 +340,13 @@ namespace MonoDevelop.Debugger.Tests.TestApp BaseClass bar = new OverrideClass(); INamedTypeSymbol namedTypeSymbol = new NamedTypeSymbol (); + byte[] rawByteArray = new byte[256]; + char[] rawCharArray = new char[256]; + for (int i = 0; i < 256; i++) { + rawByteArray[i] = (byte) i; + rawCharArray[i] = (char) i; + } + Console.WriteLine (n); /*break*/ } |