feat: define moving source trajectories
This commit is contained in:
@@ -43,6 +43,28 @@ test("단일 tone 장면과 실험이 관계 검증을 통과한다", async () =
|
||||
assertEqual((await validateExperiment(experiment, { arrayDefinition, scene })).length, 0, "experiment issues");
|
||||
});
|
||||
|
||||
test("이동 음원 trajectory의 keyframe 순서와 장면 시간 범위를 검증한다", async () => {
|
||||
const scene = await loadJson("/assets/sample-scenes/single-tone.scene.json");
|
||||
scene.sources[0].trajectory = [
|
||||
{ time: 0, position: [-0.2, 0, 2] },
|
||||
{ time: 0.125, position: [0, 0.1, 2] },
|
||||
{ time: 0.25, position: [0.2, 0, 2] },
|
||||
];
|
||||
assertEqual((await validateScene(scene)).length, 0, "valid trajectory issues");
|
||||
|
||||
scene.sources[0].trajectory[2].time = 0.125;
|
||||
let issues = await validateScene(scene);
|
||||
assert(issues.some(({ path }) => path === "$.sources[0].trajectory[2].time"), "strictly ordered times");
|
||||
|
||||
scene.sources[0].trajectory[2].time = 0.3;
|
||||
issues = await validateScene(scene);
|
||||
assert(issues.some(({ path }) => path === "$.sources[0].trajectory[2].time"), "scene duration bound");
|
||||
|
||||
scene.sources[0].trajectory = [{ time: 0, position: [0, 0, 2] }];
|
||||
issues = await validateScene(scene);
|
||||
assert(issues.some(({ path }) => path === "$.sources[0].trajectory"), "two-keyframe minimum");
|
||||
});
|
||||
|
||||
test("중복 마이크 id를 거부한다", async () => {
|
||||
const arrayDefinition = {
|
||||
schemaVersion: "1.0.0", kind: "micarrsim.array", id: "duplicate-test", name: "duplicate test", units: "m",
|
||||
|
||||
Reference in New Issue
Block a user