Skip to content

Commit

Permalink
[wasm][debugger] Add tests for indexing by object schema (dotnet#92268)
Browse files Browse the repository at this point in the history
* Indexing with object: works.

* Update expected line numbers.
  • Loading branch information
ilonatommy authored Sep 20, 2023
1 parent d6ff465 commit 901f780
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -585,7 +585,7 @@ public async Task EvaluateIndexingNegative() => await CheckInspectLocalsAtBreakp
Assert.Equal("Unable to evaluate element access 'f.idx0[2]': Cannot apply indexing with [] to a primitive object of type 'number'", res.Error["result"]?["description"]?.Value<string>());
var exceptionDetailsStack = res.Error["exceptionDetails"]?["stackTrace"]?["callFrames"]?[0];
Assert.Equal("DebuggerTests.EvaluateLocalsWithIndexingTests.EvaluateLocals", exceptionDetailsStack?["functionName"]?.Value<string>());
Assert.Equal(556, exceptionDetailsStack?["lineNumber"]?.Value<int>());
Assert.Equal(559, exceptionDetailsStack?["lineNumber"]?.Value<int>());
Assert.Equal(12, exceptionDetailsStack?["columnNumber"]?.Value<int>());
(_, res) = await EvaluateOnCallFrame(id, "f[1]", expect_ok: false );
Assert.Equal( "Unable to evaluate element access 'f[1]': Cannot apply indexing with [] to an object of type 'DebuggerTests.EvaluateLocalsWithIndexingTests.TestEvaluate'", res.Error["result"]?["description"]?.Value<string>());
Expand Down Expand Up @@ -650,7 +650,7 @@ await EvaluateOnCallFrameAndCheck(id,

[Fact]
public async Task EvaluateObjectByNonIntLocals() => await CheckInspectLocalsAtBreakpointSite(
"DebuggerTests.EvaluateLocalsWithIndexingTests", "EvaluateLocals", 12, "DebuggerTests.EvaluateLocalsWithIndexingTests.EvaluateLocals",
"DebuggerTests.EvaluateLocalsWithIndexingTests", "EvaluateLocals", 13, "DebuggerTests.EvaluateLocalsWithIndexingTests.EvaluateLocals",
"window.setTimeout(function() { invoke_static_method ('[debugger-test] DebuggerTests.EvaluateLocalsWithIndexingTests:EvaluateLocals'); })",
wait_for_event_fn: async (pause_location) =>
{
Expand All @@ -662,7 +662,8 @@ await EvaluateOnCallFrameAndCheck(id,
("f[shortString]", TBool(false)),
("f[aFloat]", TNumber(1)),
("f[aDouble]", TNumber(2)),
("f[aDecimal]", TNumber(3)) // object
("f[aDecimal]", TNumber(3)),
("f[objIdx]", TNumber(123))
);
});

Expand Down Expand Up @@ -722,7 +723,7 @@ public async Task EvaluateIndexingByExpressionNegative() => await CheckInspectLo
Assert.Equal("Unable to evaluate element access 'f.numList[\"a\" + 1]': Cannot index with an object of type 'string'", res.Error["result"]?["description"]?.Value<string>());
var exceptionDetailsStack = res.Error["exceptionDetails"]?["stackTrace"]?["callFrames"]?[0];
Assert.Equal("DebuggerTests.EvaluateLocalsWithIndexingTests.EvaluateLocals", exceptionDetailsStack?["functionName"]?.Value<string>());
Assert.Equal(556, exceptionDetailsStack?["lineNumber"]?.Value<int>());
Assert.Equal(559, exceptionDetailsStack?["lineNumber"]?.Value<int>());
Assert.Equal(12, exceptionDetailsStack?["columnNumber"]?.Value<int>());
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -506,6 +506,8 @@ public async void run()

public class EvaluateLocalsWithIndexingTests
{
public record Indexer(int index);

public class TestEvaluate
{
public List<int> numList;
Expand All @@ -529,6 +531,7 @@ public class TestEvaluate
public int this[double key] => (int)key;
public int this[float key] => (int)key;
public int this[decimal key] => (int)key;
public int this[Indexer indexer] => indexer.index;

public void run()
{
Expand Down Expand Up @@ -561,6 +564,7 @@ public static void EvaluateLocals()
float aFloat = 1.23f;
double aDouble = 2.34;
decimal aDecimal = 3.34m;
Indexer objIdx = new(index: 123);
}
}

Expand Down

0 comments on commit 901f780

Please sign in to comment.