Skip to content
29 changes: 29 additions & 0 deletions example/Tests/worklet-tests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,35 @@ export const worklet_tests = {
});
return ExpectValue(result, 42);
},
check_jsi_object_is_spreadable_after_worklet: async () => {
const fw = () => {
"worklet";
return { a: 100 };
};
let wf = Worklets.defaultContext.createRunAsync(fw);
const result = await wf();
const spreadObject = { ...result };
return ExpectValue(spreadObject, { a: 100 });
},
check_jsi_object_is_assignable_after_worklet: async () => {
const fw = () => {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use better naming than two characters - something like func here

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed

"worklet";
return { a: 100 };
};
let wf = Worklets.defaultContext.createRunAsync(fw);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also we can just do runAsync(func) instead of the create stuff. It's less code.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed it so

const result = await wf();
const assignedObject = Object.assign({}, result);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought the problem was when using Object.assign/spread inside a Worklet?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, I have added a test below to show that spreading inside the worklet works as expected.
My use case was to spread the object that is returned by the worklet, and I have not spread inside worklet in production code, so I have no further experience with it.

return ExpectValue(assignedObject, { a: 100 });
},
check_jsi_object_is_returned_from_worklet: async () => {
const fw = () => {
"worklet";
return { a: 100, b: "200" };
};
let wf = Worklets.defaultContext.createRunAsync(fw);
const result = await wf();
return ExpectValue(result, { a: 100, b: "200" });
},
check_worklet_checker_works: () => {
const func = () => {
"worklet";
Expand Down