@quake2ts/test-utils 0.0.805 → 0.0.807

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -88,6 +88,7 @@ __export(index_exports, {
88
88
  createInputInjector: () => createInputInjector,
89
89
  createInterpolationTestData: () => createInterpolationTestData,
90
90
  createItemEntityFactory: () => createItemEntityFactory,
91
+ createLoggingRenderer: () => createLoggingRenderer,
91
92
  createMessageReaderMock: () => createMessageReaderMock,
92
93
  createMessageWriterMock: () => createMessageWriterMock,
93
94
  createMockAI: () => createMockAI,
@@ -206,6 +207,7 @@ __export(index_exports, {
206
207
  createMonsterEntityFactory: () => createMonsterEntityFactory,
207
208
  createMultiplayerTestScenario: () => createMultiplayerTestScenario,
208
209
  createNetChanMock: () => createNetChanMock,
210
+ createNullRenderer: () => createNullRenderer,
209
211
  createPacketMock: () => createPacketMock,
210
212
  createPhysicsTestContext: () => createPhysicsTestContext,
211
213
  createPhysicsTestScenario: () => createPhysicsTestScenario,
@@ -233,6 +235,8 @@ __export(index_exports, {
233
235
  createWebGLPlaywrightSetup: () => createWebGLPlaywrightSetup,
234
236
  createWebGLRenderTestSetup: () => createWebGLRenderTestSetup,
235
237
  expectAnimationSnapshot: () => expectAnimationSnapshot,
238
+ expectNoDoubleTransform: () => expectNoDoubleTransform,
239
+ expectRendererCalls: () => expectRendererCalls,
236
240
  expectSnapshot: () => expectSnapshot,
237
241
  findPakFile: () => findPakFile,
238
242
  flipPixelsVertically: () => flipPixelsVertically,
@@ -4778,9 +4782,31 @@ function createSolidTexture(width, height, color) {
4778
4782
  return data;
4779
4783
  }
4780
4784
 
4785
+ // src/engine/renderers.ts
4786
+ var import_engine8 = require("@quake2ts/engine");
4787
+ var import_vitest19 = require("vitest");
4788
+ function createNullRenderer(width = 800, height = 600) {
4789
+ return new import_engine8.NullRenderer(width, height);
4790
+ }
4791
+ function createLoggingRenderer(targetSystem = import_engine8.CoordinateSystem.QUAKE, options) {
4792
+ return new import_engine8.LoggingRenderer({
4793
+ targetSystem,
4794
+ ...options
4795
+ });
4796
+ }
4797
+ function expectRendererCalls(renderer, expectedCalls) {
4798
+ const actualCalls = renderer.getCallLog();
4799
+ (0, import_vitest19.expect)(actualCalls).toEqual(expectedCalls);
4800
+ }
4801
+ function expectNoDoubleTransform(renderer) {
4802
+ const logs = renderer.getLogs();
4803
+ const warnings = logs.filter((log) => log.includes("double-transform"));
4804
+ (0, import_vitest19.expect)(warnings).toHaveLength(0);
4805
+ }
4806
+
4781
4807
  // src/client/helpers/view.ts
4782
4808
  var import_gl_matrix = require("gl-matrix");
4783
- var import_engine8 = require("@quake2ts/engine");
4809
+ var import_engine9 = require("@quake2ts/engine");
4784
4810
  function toVec3(v) {
4785
4811
  if (v instanceof Float32Array && v.length === 3) {
4786
4812
  return v;
@@ -4794,7 +4820,7 @@ function toVec3(v) {
4794
4820
  return import_gl_matrix.vec3.create();
4795
4821
  }
4796
4822
  function createMockCamera(overrides = {}) {
4797
- const camera = new import_engine8.Camera();
4823
+ const camera = new import_engine9.Camera();
4798
4824
  if (overrides.position) {
4799
4825
  camera.position = toVec3(overrides.position);
4800
4826
  }
@@ -4882,7 +4908,7 @@ function simulateCameraMovement(camera, input, deltaTime) {
4882
4908
  }
4883
4909
 
4884
4910
  // src/client/helpers/hud.ts
4885
- var import_vitest19 = require("vitest");
4911
+ var import_vitest20 = require("vitest");
4886
4912
  function createMockHudState(overrides) {
4887
4913
  const defaultPs = {
4888
4914
  damageAlpha: 0,
@@ -4912,11 +4938,11 @@ function createMockHudState(overrides) {
4912
4938
  defaultStats[2] = 25;
4913
4939
  defaultStats[4] = 50;
4914
4940
  const defaultMessages = {
4915
- drawCenterPrint: import_vitest19.vi.fn(),
4916
- drawNotifications: import_vitest19.vi.fn(),
4917
- addCenterPrint: import_vitest19.vi.fn(),
4918
- addNotification: import_vitest19.vi.fn(),
4919
- clear: import_vitest19.vi.fn()
4941
+ drawCenterPrint: import_vitest20.vi.fn(),
4942
+ drawNotifications: import_vitest20.vi.fn(),
4943
+ addCenterPrint: import_vitest20.vi.fn(),
4944
+ addNotification: import_vitest20.vi.fn(),
4945
+ clear: import_vitest20.vi.fn()
4920
4946
  };
4921
4947
  return {
4922
4948
  ps: overrides?.ps ?? defaultPs,
@@ -4935,7 +4961,7 @@ function createMockHudState(overrides) {
4935
4961
  function createMockScoreboard(players = []) {
4936
4962
  return {
4937
4963
  players,
4938
- draw: import_vitest19.vi.fn()
4964
+ draw: import_vitest20.vi.fn()
4939
4965
  };
4940
4966
  }
4941
4967
  function createMockChatMessage(text, sender, timestamp = Date.now()) {
@@ -4954,7 +4980,7 @@ function createMockNotification(type, message, duration = 3e3) {
4954
4980
  }
4955
4981
 
4956
4982
  // src/client/mocks/network.ts
4957
- var import_engine9 = require("@quake2ts/engine");
4983
+ var import_engine10 = require("@quake2ts/engine");
4958
4984
  function createMockServerMessage(type, data = new Uint8Array()) {
4959
4985
  return { type, data };
4960
4986
  }
@@ -4966,7 +4992,7 @@ function createMockSnapshot(serverFrame, entities = [], playerState, deltaFrame
4966
4992
  areaBytes: 0,
4967
4993
  areaBits: new Uint8Array(),
4968
4994
  playerState: {
4969
- ...(0, import_engine9.createEmptyProtocolPlayerState)(),
4995
+ ...(0, import_engine10.createEmptyProtocolPlayerState)(),
4970
4996
  ...playerState
4971
4997
  },
4972
4998
  packetEntities: {
@@ -4983,7 +5009,7 @@ function createMockDeltaFrame(serverFrame, deltaFrame, entities = [], playerStat
4983
5009
  areaBytes: 0,
4984
5010
  areaBits: new Uint8Array(),
4985
5011
  playerState: {
4986
- ...(0, import_engine9.createEmptyProtocolPlayerState)(),
5012
+ ...(0, import_engine10.createEmptyProtocolPlayerState)(),
4987
5013
  ...playerState
4988
5014
  },
4989
5015
  packetEntities: {
@@ -5003,7 +5029,7 @@ function simulatePacketLoss(messages, lossPercent) {
5003
5029
  return messages.filter(() => Math.random() * 100 >= lossPercent);
5004
5030
  }
5005
5031
  function createMockEntityState(number, modelIndex = 0, origin = { x: 0, y: 0, z: 0 }, overrides) {
5006
- const state = (0, import_engine9.createEmptyEntityState)();
5032
+ const state = (0, import_engine10.createEmptyEntityState)();
5007
5033
  state.number = number;
5008
5034
  state.modelindex = modelIndex;
5009
5035
  state.origin.x = origin.x ?? 0;
@@ -5034,12 +5060,12 @@ function createMockFogData(overrides = {}) {
5034
5060
  }
5035
5061
 
5036
5062
  // src/client/mocks/download.ts
5037
- var import_vitest20 = require("vitest");
5063
+ var import_vitest21 = require("vitest");
5038
5064
  function createMockDownloadManager(overrides) {
5039
5065
  return {
5040
- download: import_vitest20.vi.fn().mockResolvedValue(new ArrayBuffer(0)),
5041
- cancel: import_vitest20.vi.fn(),
5042
- getProgress: import_vitest20.vi.fn().mockReturnValue(0),
5066
+ download: import_vitest21.vi.fn().mockResolvedValue(new ArrayBuffer(0)),
5067
+ cancel: import_vitest21.vi.fn(),
5068
+ getProgress: import_vitest21.vi.fn().mockReturnValue(0),
5043
5069
  ...overrides
5044
5070
  };
5045
5071
  }
@@ -5148,20 +5174,20 @@ var createMockConnectionState = (state = "connected") => ({
5148
5174
  });
5149
5175
 
5150
5176
  // src/client/mocks/console.ts
5151
- var import_vitest21 = require("vitest");
5177
+ var import_vitest22 = require("vitest");
5152
5178
  function createMockConsole(overrides) {
5153
5179
  const history = [];
5154
5180
  const errors = [];
5155
5181
  const commands = {};
5156
5182
  const cvars = {};
5157
5183
  return {
5158
- print: import_vitest21.vi.fn((text) => {
5184
+ print: import_vitest22.vi.fn((text) => {
5159
5185
  history.push(text);
5160
5186
  }),
5161
- error: import_vitest21.vi.fn((text) => {
5187
+ error: import_vitest22.vi.fn((text) => {
5162
5188
  errors.push(text);
5163
5189
  }),
5164
- execute: import_vitest21.vi.fn((text) => {
5190
+ execute: import_vitest22.vi.fn((text) => {
5165
5191
  const parts = text.trim().split(/\s+/);
5166
5192
  const cmd = parts[0];
5167
5193
  const args = parts.slice(1);
@@ -5171,11 +5197,11 @@ function createMockConsole(overrides) {
5171
5197
  history.push(`Unknown command "${cmd}"`);
5172
5198
  }
5173
5199
  }),
5174
- addCommand: import_vitest21.vi.fn((name, handler) => {
5200
+ addCommand: import_vitest22.vi.fn((name, handler) => {
5175
5201
  commands[name] = handler;
5176
5202
  }),
5177
- getCvar: import_vitest21.vi.fn((name) => cvars[name]),
5178
- setCvar: import_vitest21.vi.fn((name, value) => {
5203
+ getCvar: import_vitest22.vi.fn((name) => cvars[name]),
5204
+ setCvar: import_vitest22.vi.fn((name, value) => {
5179
5205
  cvars[name] = value;
5180
5206
  }),
5181
5207
  getHistory: () => history,
@@ -5619,6 +5645,7 @@ function createVisualTestScenario(sceneName) {
5619
5645
  createInputInjector,
5620
5646
  createInterpolationTestData,
5621
5647
  createItemEntityFactory,
5648
+ createLoggingRenderer,
5622
5649
  createMessageReaderMock,
5623
5650
  createMessageWriterMock,
5624
5651
  createMockAI,
@@ -5737,6 +5764,7 @@ function createVisualTestScenario(sceneName) {
5737
5764
  createMonsterEntityFactory,
5738
5765
  createMultiplayerTestScenario,
5739
5766
  createNetChanMock,
5767
+ createNullRenderer,
5740
5768
  createPacketMock,
5741
5769
  createPhysicsTestContext,
5742
5770
  createPhysicsTestScenario,
@@ -5764,6 +5792,8 @@ function createVisualTestScenario(sceneName) {
5764
5792
  createWebGLPlaywrightSetup,
5765
5793
  createWebGLRenderTestSetup,
5766
5794
  expectAnimationSnapshot,
5795
+ expectNoDoubleTransform,
5796
+ expectRendererCalls,
5767
5797
  expectSnapshot,
5768
5798
  findPakFile,
5769
5799
  flipPixelsVertically,