2023-09-29 11:11:01 -07:00
|
|
|
import { parse, initPromise } from './wasm'
|
2023-08-18 17:14:35 -05:00
|
|
|
import { enginelessExecutor } from '../lib/testHelpers'
|
2023-02-21 09:42:41 +11:00
|
|
|
|
2024-04-19 14:24:40 -07:00
|
|
|
beforeAll(async () => {
|
|
|
|
await initPromise
|
|
|
|
})
|
2022-12-25 21:14:43 +11:00
|
|
|
|
2023-01-08 16:37:31 +11:00
|
|
|
describe('testing artifacts', () => {
|
2023-07-10 15:15:07 +10:00
|
|
|
// Enable rotations #152
|
2023-06-22 16:43:33 +10:00
|
|
|
test('sketch artifacts', async () => {
|
2022-12-25 21:14:43 +11:00
|
|
|
const code = `
|
2023-10-05 14:27:48 -07:00
|
|
|
const mySketch001 = startSketchOn('XY')
|
|
|
|
|> startProfileAt([0, 0], %)
|
2023-02-12 10:56:45 +11:00
|
|
|
|> lineTo([-1.59, -1.54], %)
|
|
|
|
|> lineTo([0.46, -5.82], %)
|
2024-03-01 17:16:18 -08:00
|
|
|
// |> rx(45, %)`
|
2024-10-09 19:38:40 -04:00
|
|
|
const execState = await enginelessExecutor(parse(code))
|
2023-08-24 15:34:51 -07:00
|
|
|
// @ts-ignore
|
2024-10-09 19:38:40 -04:00
|
|
|
const sketch001 = execState.memory.get('mySketch001')
|
2024-03-01 17:16:18 -08:00
|
|
|
expect(sketch001).toEqual({
|
Remove KclValue::SketchGroup variant (#3446)
We can store Rust types like `SketchGroup` as their own variant of `KclValue`, or as `KclValue::UserVal`. Sometimes we store in one and try to read from the other, which fails. This causes bugs, like #3338.
Instead, we should use either ::SketchGroup or ::UserVal, and stop using the other. If we stopped using ::UserVal, we'd need a new variant for every Rust type we wanted to build, including user-defined types. So I don't think that's practical.
Instead, we should store every KCL value by de/serializing it into UserVal. This is a first step along that path, removing just the SketchGroup variants. If it goes well, we can remove the other specialized variants too.
My only concern is there might be performance implications from how frequently we convert between serde_json::Value and Rust types via Serde. But I'm not too worried -- there's no parsing JSON strings, just traversing serde_json::Value trees. This isn't great for performance but I think it'll probably be miniscule in comparison to doing all the API calls.
2024-08-21 11:06:48 -05:00
|
|
|
type: 'UserVal',
|
|
|
|
__meta: [{ sourceRange: [46, 71] }],
|
|
|
|
value: {
|
2024-09-27 15:44:44 -07:00
|
|
|
type: 'Sketch',
|
Remove KclValue::SketchGroup variant (#3446)
We can store Rust types like `SketchGroup` as their own variant of `KclValue`, or as `KclValue::UserVal`. Sometimes we store in one and try to read from the other, which fails. This causes bugs, like #3338.
Instead, we should use either ::SketchGroup or ::UserVal, and stop using the other. If we stopped using ::UserVal, we'd need a new variant for every Rust type we wanted to build, including user-defined types. So I don't think that's practical.
Instead, we should store every KCL value by de/serializing it into UserVal. This is a first step along that path, removing just the SketchGroup variants. If it goes well, we can remove the other specialized variants too.
My only concern is there might be performance implications from how frequently we convert between serde_json::Value and Rust types via Serde. But I'm not too worried -- there's no parsing JSON strings, just traversing serde_json::Value trees. This isn't great for performance but I think it'll probably be miniscule in comparison to doing all the API calls.
2024-08-21 11:06:48 -05:00
|
|
|
on: expect.any(Object),
|
|
|
|
start: {
|
|
|
|
to: [0, 0],
|
2024-03-01 17:16:18 -08:00
|
|
|
from: [0, 0],
|
2024-06-24 14:45:07 -07:00
|
|
|
tag: null,
|
2024-03-01 17:16:18 -08:00
|
|
|
__geoMeta: {
|
|
|
|
id: expect.any(String),
|
Remove KclValue::SketchGroup variant (#3446)
We can store Rust types like `SketchGroup` as their own variant of `KclValue`, or as `KclValue::UserVal`. Sometimes we store in one and try to read from the other, which fails. This causes bugs, like #3338.
Instead, we should use either ::SketchGroup or ::UserVal, and stop using the other. If we stopped using ::UserVal, we'd need a new variant for every Rust type we wanted to build, including user-defined types. So I don't think that's practical.
Instead, we should store every KCL value by de/serializing it into UserVal. This is a first step along that path, removing just the SketchGroup variants. If it goes well, we can remove the other specialized variants too.
My only concern is there might be performance implications from how frequently we convert between serde_json::Value and Rust types via Serde. But I'm not too worried -- there's no parsing JSON strings, just traversing serde_json::Value trees. This isn't great for performance but I think it'll probably be miniscule in comparison to doing all the API calls.
2024-08-21 11:06:48 -05:00
|
|
|
sourceRange: [46, 71],
|
2023-01-08 16:37:31 +11:00
|
|
|
},
|
2024-03-01 17:16:18 -08:00
|
|
|
},
|
Remove KclValue::SketchGroup variant (#3446)
We can store Rust types like `SketchGroup` as their own variant of `KclValue`, or as `KclValue::UserVal`. Sometimes we store in one and try to read from the other, which fails. This causes bugs, like #3338.
Instead, we should use either ::SketchGroup or ::UserVal, and stop using the other. If we stopped using ::UserVal, we'd need a new variant for every Rust type we wanted to build, including user-defined types. So I don't think that's practical.
Instead, we should store every KCL value by de/serializing it into UserVal. This is a first step along that path, removing just the SketchGroup variants. If it goes well, we can remove the other specialized variants too.
My only concern is there might be performance implications from how frequently we convert between serde_json::Value and Rust types via Serde. But I'm not too worried -- there's no parsing JSON strings, just traversing serde_json::Value trees. This isn't great for performance but I think it'll probably be miniscule in comparison to doing all the API calls.
2024-08-21 11:06:48 -05:00
|
|
|
value: [
|
|
|
|
{
|
|
|
|
type: 'ToPoint',
|
|
|
|
tag: null,
|
|
|
|
to: [-1.59, -1.54],
|
|
|
|
from: [0, 0],
|
|
|
|
__geoMeta: {
|
|
|
|
sourceRange: [77, 102],
|
|
|
|
id: expect.any(String),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
type: 'ToPoint',
|
|
|
|
to: [0.46, -5.82],
|
|
|
|
from: [-1.59, -1.54],
|
|
|
|
tag: null,
|
|
|
|
__geoMeta: {
|
|
|
|
sourceRange: [108, 132],
|
|
|
|
id: expect.any(String),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
id: expect.any(String),
|
|
|
|
__meta: [{ sourceRange: [46, 71] }],
|
|
|
|
},
|
2024-03-01 17:16:18 -08:00
|
|
|
})
|
2023-01-08 16:37:31 +11:00
|
|
|
})
|
2023-06-22 16:43:33 +10:00
|
|
|
test('extrude artifacts', async () => {
|
2023-07-10 15:15:07 +10:00
|
|
|
// Enable rotations #152
|
2023-01-08 16:37:31 +11:00
|
|
|
const code = `
|
2023-10-05 14:27:48 -07:00
|
|
|
const mySketch001 = startSketchOn('XY')
|
|
|
|
|> startProfileAt([0, 0], %)
|
2023-02-12 10:56:45 +11:00
|
|
|
|> lineTo([-1.59, -1.54], %)
|
|
|
|
|> lineTo([0.46, -5.82], %)
|
2023-07-10 15:15:07 +10:00
|
|
|
// |> rx(45, %)
|
2024-03-01 17:16:18 -08:00
|
|
|
|> extrude(2, %)`
|
2024-10-09 19:38:40 -04:00
|
|
|
const execState = await enginelessExecutor(parse(code))
|
2023-08-24 15:34:51 -07:00
|
|
|
// @ts-ignore
|
2024-10-09 19:38:40 -04:00
|
|
|
const sketch001 = execState.memory.get('mySketch001')
|
2024-03-01 17:16:18 -08:00
|
|
|
expect(sketch001).toEqual({
|
2024-09-27 15:44:44 -07:00
|
|
|
type: 'Solid',
|
2024-03-01 17:16:18 -08:00
|
|
|
id: expect.any(String),
|
2024-03-22 10:23:04 +11:00
|
|
|
value: [
|
|
|
|
{
|
|
|
|
type: 'extrudePlane',
|
|
|
|
faceId: expect.any(String),
|
2024-06-24 14:45:07 -07:00
|
|
|
tag: null,
|
2024-03-22 10:23:04 +11:00
|
|
|
id: expect.any(String),
|
|
|
|
sourceRange: [77, 102],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
type: 'extrudePlane',
|
|
|
|
faceId: expect.any(String),
|
2024-06-24 14:45:07 -07:00
|
|
|
tag: null,
|
2024-03-22 10:23:04 +11:00
|
|
|
id: expect.any(String),
|
|
|
|
sourceRange: [108, 132],
|
|
|
|
},
|
|
|
|
],
|
2024-09-27 15:44:44 -07:00
|
|
|
sketch: {
|
2024-06-21 23:50:30 -07:00
|
|
|
id: expect.any(String),
|
|
|
|
__meta: expect.any(Array),
|
|
|
|
on: expect.any(Object),
|
|
|
|
start: expect.any(Object),
|
2024-09-27 15:44:44 -07:00
|
|
|
type: 'Sketch',
|
2024-06-21 23:50:30 -07:00
|
|
|
value: [
|
|
|
|
{
|
|
|
|
type: 'ToPoint',
|
|
|
|
from: [0, 0],
|
|
|
|
to: [-1.59, -1.54],
|
2024-06-24 14:45:07 -07:00
|
|
|
tag: null,
|
2024-06-21 23:50:30 -07:00
|
|
|
__geoMeta: {
|
|
|
|
id: expect.any(String),
|
|
|
|
sourceRange: [77, 102],
|
|
|
|
},
|
2024-03-22 10:23:04 +11:00
|
|
|
},
|
2024-06-21 23:50:30 -07:00
|
|
|
{
|
|
|
|
type: 'ToPoint',
|
|
|
|
from: [-1.59, -1.54],
|
|
|
|
to: [0.46, -5.82],
|
2024-06-24 14:45:07 -07:00
|
|
|
tag: null,
|
2024-06-21 23:50:30 -07:00
|
|
|
__geoMeta: {
|
|
|
|
id: expect.any(String),
|
|
|
|
sourceRange: [108, 132],
|
|
|
|
},
|
2024-03-22 10:23:04 +11:00
|
|
|
},
|
2024-06-21 23:50:30 -07:00
|
|
|
],
|
|
|
|
},
|
2024-03-01 17:16:18 -08:00
|
|
|
height: 2,
|
2024-03-22 10:23:04 +11:00
|
|
|
startCapId: expect.any(String),
|
|
|
|
endCapId: expect.any(String),
|
2024-03-01 17:16:18 -08:00
|
|
|
__meta: [{ sourceRange: [46, 71] }],
|
|
|
|
})
|
2022-12-25 21:14:43 +11:00
|
|
|
})
|
2023-06-22 16:43:33 +10:00
|
|
|
test('sketch extrude and sketch on one of the faces', async () => {
|
2023-07-10 15:15:07 +10:00
|
|
|
// Enable rotations #152
|
|
|
|
// TODO #153 in order for getExtrudeWallTransform to work we need to query the engine for the location of a face.
|
2023-01-09 08:52:48 +11:00
|
|
|
const code = `
|
2023-10-05 14:27:48 -07:00
|
|
|
const sk1 = startSketchOn('XY')
|
|
|
|
|> startProfileAt([0, 0], %)
|
2023-02-12 10:56:45 +11:00
|
|
|
|> lineTo([-2.5, 0], %)
|
2024-06-24 22:39:04 -07:00
|
|
|
|> lineTo([0, 10], %, $p)
|
2023-02-12 10:56:45 +11:00
|
|
|
|> lineTo([2.5, 0], %)
|
2023-07-10 15:15:07 +10:00
|
|
|
// |> rx(45, %)
|
|
|
|
// |> translate([1,0,1], %)
|
|
|
|
// |> ry(5, %)
|
2023-01-09 08:52:48 +11:00
|
|
|
const theExtrude = extrude(2, sk1)
|
2023-07-10 15:15:07 +10:00
|
|
|
// const theTransf = getExtrudeWallTransform('p', theExtrude)
|
2023-10-05 14:27:48 -07:00
|
|
|
const sk2 = startSketchOn('XY')
|
|
|
|
|> startProfileAt([0, 0], %)
|
2023-02-12 10:56:45 +11:00
|
|
|
|> lineTo([-2.5, 0], %)
|
2024-06-24 22:39:04 -07:00
|
|
|
|> lineTo([0, 3], %, $o)
|
2023-02-12 10:56:45 +11:00
|
|
|
|> lineTo([2.5, 0], %)
|
2023-07-10 15:15:07 +10:00
|
|
|
// |> transform(theTransf, %)
|
2023-01-09 08:52:48 +11:00
|
|
|
|> extrude(2, %)
|
2023-08-24 15:34:51 -07:00
|
|
|
|
2024-03-01 17:16:18 -08:00
|
|
|
`
|
2024-10-09 19:38:40 -04:00
|
|
|
const execState = await enginelessExecutor(parse(code))
|
|
|
|
const programMemory = execState.memory
|
2023-08-24 15:34:51 -07:00
|
|
|
// @ts-ignore
|
2024-10-09 19:38:40 -04:00
|
|
|
const geos = [programMemory.get('theExtrude'), programMemory.get('sk2')]
|
2023-07-10 15:15:07 +10:00
|
|
|
expect(geos).toEqual([
|
2023-01-09 08:52:48 +11:00
|
|
|
{
|
2024-09-27 15:44:44 -07:00
|
|
|
type: 'Solid',
|
2023-08-24 15:34:51 -07:00
|
|
|
id: expect.any(String),
|
2024-03-22 10:23:04 +11:00
|
|
|
value: [
|
|
|
|
{
|
|
|
|
type: 'extrudePlane',
|
|
|
|
faceId: expect.any(String),
|
2024-06-24 14:45:07 -07:00
|
|
|
tag: null,
|
2024-03-22 10:23:04 +11:00
|
|
|
id: expect.any(String),
|
|
|
|
sourceRange: [69, 89],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
type: 'extrudePlane',
|
|
|
|
faceId: expect.any(String),
|
2024-06-24 14:45:07 -07:00
|
|
|
tag: {
|
2024-06-24 22:39:04 -07:00
|
|
|
end: 116,
|
2024-06-24 14:45:07 -07:00
|
|
|
start: 114,
|
|
|
|
type: 'TagDeclarator',
|
|
|
|
value: 'p',
|
2024-07-09 12:24:42 -04:00
|
|
|
digest: null,
|
2024-06-24 14:45:07 -07:00
|
|
|
},
|
2024-03-22 10:23:04 +11:00
|
|
|
id: expect.any(String),
|
2024-06-24 22:39:04 -07:00
|
|
|
sourceRange: [95, 117],
|
2024-03-22 10:23:04 +11:00
|
|
|
},
|
|
|
|
{
|
|
|
|
type: 'extrudePlane',
|
|
|
|
faceId: expect.any(String),
|
2024-06-24 14:45:07 -07:00
|
|
|
tag: null,
|
2024-03-22 10:23:04 +11:00
|
|
|
id: expect.any(String),
|
2024-06-24 22:39:04 -07:00
|
|
|
sourceRange: [123, 142],
|
2024-03-22 10:23:04 +11:00
|
|
|
},
|
|
|
|
],
|
2024-09-27 15:44:44 -07:00
|
|
|
sketch: {
|
2024-06-21 23:50:30 -07:00
|
|
|
id: expect.any(String),
|
|
|
|
__meta: expect.any(Array),
|
|
|
|
on: expect.any(Object),
|
|
|
|
start: expect.any(Object),
|
2024-09-27 15:44:44 -07:00
|
|
|
type: 'Sketch',
|
2024-07-05 16:53:13 -07:00
|
|
|
tags: {
|
|
|
|
p: {
|
|
|
|
__meta: [
|
|
|
|
{
|
|
|
|
sourceRange: [114, 116],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
type: 'TagIdentifier',
|
|
|
|
value: 'p',
|
2024-07-27 22:56:46 -07:00
|
|
|
info: expect.any(Object),
|
2024-07-05 16:53:13 -07:00
|
|
|
},
|
|
|
|
},
|
2024-06-21 23:50:30 -07:00
|
|
|
value: [
|
|
|
|
{
|
|
|
|
type: 'ToPoint',
|
|
|
|
from: [0, 0],
|
|
|
|
to: [-2.5, 0],
|
2024-06-24 14:45:07 -07:00
|
|
|
tag: null,
|
2024-06-21 23:50:30 -07:00
|
|
|
__geoMeta: {
|
|
|
|
id: expect.any(String),
|
|
|
|
sourceRange: [69, 89],
|
|
|
|
},
|
2024-03-22 10:23:04 +11:00
|
|
|
},
|
2024-06-21 23:50:30 -07:00
|
|
|
{
|
|
|
|
type: 'ToPoint',
|
|
|
|
from: [-2.5, 0],
|
|
|
|
to: [0, 10],
|
2024-06-24 14:45:07 -07:00
|
|
|
tag: {
|
2024-06-24 22:39:04 -07:00
|
|
|
end: 116,
|
2024-06-24 14:45:07 -07:00
|
|
|
start: 114,
|
|
|
|
type: 'TagDeclarator',
|
|
|
|
value: 'p',
|
2024-07-09 12:24:42 -04:00
|
|
|
digest: null,
|
2024-06-24 14:45:07 -07:00
|
|
|
},
|
2024-06-21 23:50:30 -07:00
|
|
|
__geoMeta: {
|
|
|
|
id: expect.any(String),
|
2024-06-24 22:39:04 -07:00
|
|
|
sourceRange: [95, 117],
|
2024-06-21 23:50:30 -07:00
|
|
|
},
|
2024-03-22 10:23:04 +11:00
|
|
|
},
|
2024-06-21 23:50:30 -07:00
|
|
|
{
|
|
|
|
type: 'ToPoint',
|
|
|
|
from: [0, 10],
|
|
|
|
to: [2.5, 0],
|
2024-06-24 14:45:07 -07:00
|
|
|
tag: null,
|
2024-06-21 23:50:30 -07:00
|
|
|
__geoMeta: {
|
|
|
|
id: expect.any(String),
|
2024-06-24 22:39:04 -07:00
|
|
|
sourceRange: [123, 142],
|
2024-06-21 23:50:30 -07:00
|
|
|
},
|
2024-03-22 10:23:04 +11:00
|
|
|
},
|
2024-06-21 23:50:30 -07:00
|
|
|
],
|
|
|
|
},
|
2023-01-09 08:52:48 +11:00
|
|
|
height: 2,
|
2024-03-22 10:23:04 +11:00
|
|
|
startCapId: expect.any(String),
|
|
|
|
endCapId: expect.any(String),
|
2023-10-05 14:27:48 -07:00
|
|
|
__meta: [{ sourceRange: [38, 63] }],
|
2023-01-09 08:52:48 +11:00
|
|
|
},
|
|
|
|
{
|
2024-09-27 15:44:44 -07:00
|
|
|
type: 'Solid',
|
2023-08-24 15:34:51 -07:00
|
|
|
id: expect.any(String),
|
2024-03-22 10:23:04 +11:00
|
|
|
value: [
|
|
|
|
{
|
|
|
|
type: 'extrudePlane',
|
|
|
|
faceId: expect.any(String),
|
2024-06-24 14:45:07 -07:00
|
|
|
tag: null,
|
2024-03-22 10:23:04 +11:00
|
|
|
id: expect.any(String),
|
2024-06-24 22:39:04 -07:00
|
|
|
sourceRange: [373, 393],
|
2024-03-22 10:23:04 +11:00
|
|
|
},
|
|
|
|
{
|
|
|
|
type: 'extrudePlane',
|
|
|
|
faceId: expect.any(String),
|
2024-06-24 14:45:07 -07:00
|
|
|
tag: {
|
2024-06-24 22:39:04 -07:00
|
|
|
end: 419,
|
|
|
|
start: 417,
|
2024-06-24 14:45:07 -07:00
|
|
|
type: 'TagDeclarator',
|
2024-06-24 22:39:04 -07:00
|
|
|
value: 'o',
|
2024-07-09 12:24:42 -04:00
|
|
|
digest: null,
|
2024-06-24 14:45:07 -07:00
|
|
|
},
|
2024-03-22 10:23:04 +11:00
|
|
|
id: expect.any(String),
|
2024-06-24 22:39:04 -07:00
|
|
|
sourceRange: [399, 420],
|
2024-03-22 10:23:04 +11:00
|
|
|
},
|
|
|
|
{
|
|
|
|
type: 'extrudePlane',
|
|
|
|
faceId: expect.any(String),
|
2024-06-24 14:45:07 -07:00
|
|
|
tag: null,
|
2024-03-22 10:23:04 +11:00
|
|
|
id: expect.any(String),
|
2024-06-24 22:39:04 -07:00
|
|
|
sourceRange: [426, 445],
|
2024-03-22 10:23:04 +11:00
|
|
|
},
|
|
|
|
],
|
2024-09-27 15:44:44 -07:00
|
|
|
sketch: {
|
2024-06-21 23:50:30 -07:00
|
|
|
id: expect.any(String),
|
|
|
|
__meta: expect.any(Array),
|
|
|
|
on: expect.any(Object),
|
|
|
|
start: expect.any(Object),
|
2024-09-27 15:44:44 -07:00
|
|
|
type: 'Sketch',
|
2024-07-05 16:53:13 -07:00
|
|
|
tags: {
|
|
|
|
o: {
|
|
|
|
__meta: [
|
|
|
|
{
|
|
|
|
sourceRange: [417, 419],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
type: 'TagIdentifier',
|
|
|
|
value: 'o',
|
2024-07-27 22:56:46 -07:00
|
|
|
info: expect.any(Object),
|
2024-07-05 16:53:13 -07:00
|
|
|
},
|
|
|
|
},
|
2024-06-21 23:50:30 -07:00
|
|
|
value: [
|
|
|
|
{
|
|
|
|
type: 'ToPoint',
|
|
|
|
from: [0, 0],
|
|
|
|
to: [-2.5, 0],
|
2024-06-24 14:45:07 -07:00
|
|
|
tag: null,
|
2024-06-21 23:50:30 -07:00
|
|
|
__geoMeta: {
|
|
|
|
id: expect.any(String),
|
2024-06-24 22:39:04 -07:00
|
|
|
sourceRange: [373, 393],
|
2024-06-21 23:50:30 -07:00
|
|
|
},
|
2024-03-22 10:23:04 +11:00
|
|
|
},
|
2024-06-21 23:50:30 -07:00
|
|
|
{
|
|
|
|
type: 'ToPoint',
|
|
|
|
from: [-2.5, 0],
|
|
|
|
to: [0, 3],
|
2024-06-24 14:45:07 -07:00
|
|
|
tag: {
|
2024-06-24 22:39:04 -07:00
|
|
|
end: 419,
|
|
|
|
start: 417,
|
2024-06-24 14:45:07 -07:00
|
|
|
type: 'TagDeclarator',
|
2024-06-24 22:39:04 -07:00
|
|
|
value: 'o',
|
2024-07-09 12:24:42 -04:00
|
|
|
digest: null,
|
2024-06-24 14:45:07 -07:00
|
|
|
},
|
2024-06-21 23:50:30 -07:00
|
|
|
__geoMeta: {
|
|
|
|
id: expect.any(String),
|
2024-06-24 22:39:04 -07:00
|
|
|
sourceRange: [399, 420],
|
2024-06-21 23:50:30 -07:00
|
|
|
},
|
2024-03-22 10:23:04 +11:00
|
|
|
},
|
2024-06-21 23:50:30 -07:00
|
|
|
{
|
|
|
|
type: 'ToPoint',
|
|
|
|
from: [0, 3],
|
|
|
|
to: [2.5, 0],
|
2024-06-24 14:45:07 -07:00
|
|
|
tag: null,
|
2024-06-21 23:50:30 -07:00
|
|
|
__geoMeta: {
|
|
|
|
id: expect.any(String),
|
2024-06-24 22:39:04 -07:00
|
|
|
sourceRange: [426, 445],
|
2024-06-21 23:50:30 -07:00
|
|
|
},
|
2024-03-22 10:23:04 +11:00
|
|
|
},
|
2024-06-21 23:50:30 -07:00
|
|
|
],
|
|
|
|
},
|
2023-01-09 08:52:48 +11:00
|
|
|
height: 2,
|
2024-03-22 10:23:04 +11:00
|
|
|
startCapId: expect.any(String),
|
|
|
|
endCapId: expect.any(String),
|
2024-06-24 22:39:04 -07:00
|
|
|
__meta: [{ sourceRange: [342, 367] }],
|
2023-01-09 08:52:48 +11:00
|
|
|
},
|
|
|
|
])
|
|
|
|
})
|
2022-12-25 21:14:43 +11:00
|
|
|
})
|