(t *testing.T)
| 617 | } |
| 618 | |
| 619 | func TestBridgeClassFinalizerOwnershipInSameRuntime(t *testing.T) { |
| 620 | rt := NewRuntime() |
| 621 | defer rt.Close() |
| 622 | ctxA := rt.NewContext() |
| 623 | defer ctxA.Close() |
| 624 | ctxB := rt.NewContext() |
| 625 | defer ctxB.Close() |
| 626 | |
| 627 | var finalizedA atomic.Bool |
| 628 | var finalizedB atomic.Bool |
| 629 | |
| 630 | constructorA, _ := NewClassBuilder("SameRuntimeClassA"). |
| 631 | Constructor(func(ctx *Context, instance *Value, args []*Value) (interface{}, error) { |
| 632 | return &bridgeFinalizerProbe{mark: &finalizedA}, nil |
| 633 | }). |
| 634 | Build(ctxA) |
| 635 | require.False(t, constructorA.IsException()) |
| 636 | ctxA.Globals().Set("SameRuntimeClassA", constructorA) |
| 637 | |
| 638 | constructorB, _ := NewClassBuilder("SameRuntimeClassB"). |
| 639 | Constructor(func(ctx *Context, instance *Value, args []*Value) (interface{}, error) { |
| 640 | return &bridgeFinalizerProbe{mark: &finalizedB}, nil |
| 641 | }). |
| 642 | Build(ctxB) |
| 643 | require.False(t, constructorB.IsException()) |
| 644 | ctxB.Globals().Set("SameRuntimeClassB", constructorB) |
| 645 | |
| 646 | instanceA := ctxA.Eval(`new SameRuntimeClassA()`) |
| 647 | defer instanceA.Free() |
| 648 | require.False(t, instanceA.IsException()) |
| 649 | |
| 650 | instanceB := ctxB.Eval(`new SameRuntimeClassB()`) |
| 651 | defer instanceB.Free() |
| 652 | require.False(t, instanceB.IsException()) |
| 653 | |
| 654 | goClassFinalizerProxy(rt.ref, instanceA.ref) |
| 655 | require.True(t, finalizedA.Load()) |
| 656 | require.False(t, finalizedB.Load()) |
| 657 | |
| 658 | goClassFinalizerProxy(rt.ref, instanceB.ref) |
| 659 | require.True(t, finalizedB.Load()) |
| 660 | |
| 661 | require.NotPanics(t, func() { |
| 662 | goClassFinalizerProxy(rt.ref, instanceA.ref) |
| 663 | }) |
| 664 | } |
| 665 | |
| 666 | func TestBridgeContextNotFound(t *testing.T) { |
| 667 | // Test getContextAndFunction - Context not found error |
nothing calls this directly
no test coverage detected