v1
3/11/2020 by RrrredHead -00
Setup HTML - click to add setup HTML
disable setup JavaScript
Setup JavaScript
const N = 150;
let fakeState = {};
for (let i = 0; i < N; ++i) {
  fakeState[i] = {
    speed: 100,
    geoPos: [0, 0, 0],
    angles: [0, 0],
    moveVec: [1, 1, 0],
    foo: 'bar'
  };
}
const actTimes = 25;
delete caserun single casemove downdrag and drop case


ready



for (let i = 0; i < actTimes; ++i) {
  const objectId = Math.floor(Math.random() * N);
  const nextObjStatePartial = { speed: 50, angles: [1, 1] };

  fakeState = {
    ...fakeState,
    [objectId]: {
      ...fakeState[objectId],
      ...nextObjStatePartial
    }
  };
}
delete caserun single casemove upmove downdrag and drop case


ready



for (let i = 0; i < actTimes; ++i) {
  const objectId = Math.floor(Math.random() * N);
  const nextObjStatePartial = { speed: 50, angles: [1, 1] };

  // Такой код получается после компиляции TS кода выше (на спред-операторе) с target < ES2018
  fakeState = Object.assign(Object.assign({}, fakeState), {
    [objectId]: Object.assign(
      Object.assign({}, fakeState[objectId]),
      nextObjStatePartial
    )
  });
}
delete caserun single casemove upmove downdrag and drop case


ready



for (let i = 0; i < actTimes; ++i) {
  const objectId = Math.floor(Math.random() * N);
  const nextObjStatePartial = { speed: 50, angles: [1, 1] };

  Object.assign(fakeState[objectId], nextObjStatePartial);
}
delete caserun single casemove updrag and drop case


ready



for (let i = 0; i < actTimes; ++i) {
  const objectId = Math.floor(Math.random() * N);
  const nextObjStatePartial = { speed: 50, angles: [1, 1] };

  if ("angles" in nextObjStatePartial)
    fakeState[objectId].angles = nextObjStatePartial.angles;
  if ("speed" in nextObjStatePartial)
    fakeState[objectId].speed = nextObjStatePartial.speed;
  // по идее нужно проверять все остальные пропсы на наличие и сетать их тут, но скипнем
}
Test Case - click to add another test case
Teardown JS - click to add teardown JavaScript
Output (DOM) - click to monitor output (DOM) while test is running
RUN