quake2ts 0.0.569 → 0.0.570
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/package.json +1 -1
- package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/engine/dist/types/demo/optimalClipFinder.d.ts +35 -0
- package/packages/engine/dist/types/demo/optimalClipFinder.d.ts.map +1 -0
- package/packages/engine/dist/types/demo/types.d.ts +9 -0
- package/packages/engine/dist/types/demo/types.d.ts.map +1 -1
- package/packages/test-utils/dist/index.cjs +153 -62
- package/packages/test-utils/dist/index.cjs.map +1 -1
- package/packages/test-utils/dist/index.d.cts +6 -2
- package/packages/test-utils/dist/index.d.ts +6 -2
- package/packages/test-utils/dist/index.js +152 -62
- package/packages/test-utils/dist/index.js.map +1 -1
|
@@ -2,7 +2,7 @@ import * as vitest from 'vitest';
|
|
|
2
2
|
import { Mock } from 'vitest';
|
|
3
3
|
import { Vec3, CollisionPlane, CollisionBrush, CollisionNode, CollisionLeaf, CollisionModel, PlayerState, EntityState, createRandomGenerator, NetDriver, UserCommand } from '@quake2ts/shared';
|
|
4
4
|
export { intersects, ladderTrace, stairTrace } from '@quake2ts/shared';
|
|
5
|
-
import { GameStateSnapshot, Entity, ScriptHookRegistry, SpawnContext, EntitySystem, SpawnRegistry, MonsterMove, DamageMod } from '@quake2ts/game';
|
|
5
|
+
import { GameStateSnapshot, Entity, ScriptHookRegistry, SpawnContext, EntitySystem, SpawnRegistry, MonsterMove, DamageMod, GameExports } from '@quake2ts/game';
|
|
6
6
|
import { NetworkTransport, Server, ServerStatic, Client, ClientState } from '@quake2ts/server';
|
|
7
7
|
import { ImageData } from '@napi-rs/canvas';
|
|
8
8
|
import { LaunchOptions, BrowserContextOptions, Browser, BrowserContext, Page } from 'playwright';
|
|
@@ -208,6 +208,10 @@ interface GameState {
|
|
|
208
208
|
* @param overrides Optional overrides for the game state.
|
|
209
209
|
*/
|
|
210
210
|
declare function createMockGameState(overrides?: Partial<GameState>): GameState;
|
|
211
|
+
/**
|
|
212
|
+
* Creates a mock GameExports object.
|
|
213
|
+
*/
|
|
214
|
+
declare function createMockGameExports(overrides?: Partial<GameExports>): GameExports;
|
|
211
215
|
|
|
212
216
|
/**
|
|
213
217
|
* Mock implementation of the NetworkTransport interface for server testing.
|
|
@@ -774,4 +778,4 @@ interface VisualScenario {
|
|
|
774
778
|
*/
|
|
775
779
|
declare function createVisualTestScenario(page: Page, sceneName: string): VisualScenario;
|
|
776
780
|
|
|
777
|
-
export { type AudioEvent, type BinaryStreamMock, type BinaryWriterMock, type BrowserSetupOptions, type Connection, type ConsistencyReport, type ControlledTimer, type DeltaSnapshot, type DrawCall, type GameState, type GameStateCapture, type Handshake, HandshakeStage, InputInjector, type MockAI, type MockDamageInfo, type MockEngine, type MockGame, type MockMonsterAI, MockPointerLock, type MockRAF, type MockRConClient, type MockServer, type MockServerConsole, type MockServerContext, MockTransport, type MockUDPSocket, type MultiplayerScenario, type NetworkAddress, type NetworkCondition, type NetworkConfig, type NetworkSimulator, type NodeSetupOptions, type PlaywrightOptions, type PlaywrightTestClient, type Snapshot, type StorageScenario, type TestContext, type UserInfo, type VisualDiff, type VisualScenario, captureAudioEvents, captureCanvasDrawCalls, captureGameScreenshot, captureGameState, compareScreenshots, createBinaryStreamMock, createBinaryWriterMock, createCombatTestContext, createControlledTimer, createCustomNetworkCondition, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameStateSnapshotFactory, createItemEntityFactory, createMockAI, createMockAudioContext, createMockCanvas, createMockCanvasContext2D, createMockConnection, createMockDamageInfo, createMockEngine, createMockGPUAdapter, createMockGPUCanvasContext, createMockGPUDevice, createMockGame, createMockGameState, createMockHandshake, createMockImage, createMockImageData, createMockIndexedDB, createMockLocalStorage, createMockMonsterAI, createMockMonsterMove, createMockNetDriver, createMockNetworkAddress, createMockPerformance, createMockRAF, createMockRConClient, createMockServer, createMockServerClient, createMockServerConsole, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockWeapon, createMockWebGL2Context, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createPhysicsTestContext, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createProjectileEntityFactory, createServerSnapshot, createSpawnTestContext, createStorageTestScenario, createTestContext, createTriggerEntityFactory, createVisualTestScenario, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, mockMonsterAttacks, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateFrames, simulateFramesWithMock, simulateHandshake, simulateNetworkCondition, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerTick, simulateSnapshotDelivery, teardownBrowserEnvironment, teardownMockAudioContext, throttleBandwidth, verifySnapshotConsistency, waitForGameReady };
|
|
781
|
+
export { type AudioEvent, type BinaryStreamMock, type BinaryWriterMock, type BrowserSetupOptions, type Connection, type ConsistencyReport, type ControlledTimer, type DeltaSnapshot, type DrawCall, type GameState, type GameStateCapture, type Handshake, HandshakeStage, InputInjector, type MockAI, type MockDamageInfo, type MockEngine, type MockGame, type MockMonsterAI, MockPointerLock, type MockRAF, type MockRConClient, type MockServer, type MockServerConsole, type MockServerContext, MockTransport, type MockUDPSocket, type MultiplayerScenario, type NetworkAddress, type NetworkCondition, type NetworkConfig, type NetworkSimulator, type NodeSetupOptions, type PlaywrightOptions, type PlaywrightTestClient, type Snapshot, type StorageScenario, type TestContext, type UserInfo, type VisualDiff, type VisualScenario, captureAudioEvents, captureCanvasDrawCalls, captureGameScreenshot, captureGameState, compareScreenshots, createBinaryStreamMock, createBinaryWriterMock, createCombatTestContext, createControlledTimer, createCustomNetworkCondition, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameStateSnapshotFactory, createItemEntityFactory, createMockAI, createMockAudioContext, createMockCanvas, createMockCanvasContext2D, createMockConnection, createMockDamageInfo, createMockEngine, createMockGPUAdapter, createMockGPUCanvasContext, createMockGPUDevice, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockImage, createMockImageData, createMockIndexedDB, createMockLocalStorage, createMockMonsterAI, createMockMonsterMove, createMockNetDriver, createMockNetworkAddress, createMockPerformance, createMockRAF, createMockRConClient, createMockServer, createMockServerClient, createMockServerConsole, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockWeapon, createMockWebGL2Context, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createPhysicsTestContext, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createProjectileEntityFactory, createServerSnapshot, createSpawnTestContext, createStorageTestScenario, createTestContext, createTriggerEntityFactory, createVisualTestScenario, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, mockMonsterAttacks, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateFrames, simulateFramesWithMock, simulateHandshake, simulateNetworkCondition, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerTick, simulateSnapshotDelivery, teardownBrowserEnvironment, teardownMockAudioContext, throttleBandwidth, verifySnapshotConsistency, waitForGameReady };
|
|
@@ -2,7 +2,7 @@ import * as vitest from 'vitest';
|
|
|
2
2
|
import { Mock } from 'vitest';
|
|
3
3
|
import { Vec3, CollisionPlane, CollisionBrush, CollisionNode, CollisionLeaf, CollisionModel, PlayerState, EntityState, createRandomGenerator, NetDriver, UserCommand } from '@quake2ts/shared';
|
|
4
4
|
export { intersects, ladderTrace, stairTrace } from '@quake2ts/shared';
|
|
5
|
-
import { GameStateSnapshot, Entity, ScriptHookRegistry, SpawnContext, EntitySystem, SpawnRegistry, MonsterMove, DamageMod } from '@quake2ts/game';
|
|
5
|
+
import { GameStateSnapshot, Entity, ScriptHookRegistry, SpawnContext, EntitySystem, SpawnRegistry, MonsterMove, DamageMod, GameExports } from '@quake2ts/game';
|
|
6
6
|
import { NetworkTransport, Server, ServerStatic, Client, ClientState } from '@quake2ts/server';
|
|
7
7
|
import { ImageData } from '@napi-rs/canvas';
|
|
8
8
|
import { LaunchOptions, BrowserContextOptions, Browser, BrowserContext, Page } from 'playwright';
|
|
@@ -208,6 +208,10 @@ interface GameState {
|
|
|
208
208
|
* @param overrides Optional overrides for the game state.
|
|
209
209
|
*/
|
|
210
210
|
declare function createMockGameState(overrides?: Partial<GameState>): GameState;
|
|
211
|
+
/**
|
|
212
|
+
* Creates a mock GameExports object.
|
|
213
|
+
*/
|
|
214
|
+
declare function createMockGameExports(overrides?: Partial<GameExports>): GameExports;
|
|
211
215
|
|
|
212
216
|
/**
|
|
213
217
|
* Mock implementation of the NetworkTransport interface for server testing.
|
|
@@ -774,4 +778,4 @@ interface VisualScenario {
|
|
|
774
778
|
*/
|
|
775
779
|
declare function createVisualTestScenario(page: Page, sceneName: string): VisualScenario;
|
|
776
780
|
|
|
777
|
-
export { type AudioEvent, type BinaryStreamMock, type BinaryWriterMock, type BrowserSetupOptions, type Connection, type ConsistencyReport, type ControlledTimer, type DeltaSnapshot, type DrawCall, type GameState, type GameStateCapture, type Handshake, HandshakeStage, InputInjector, type MockAI, type MockDamageInfo, type MockEngine, type MockGame, type MockMonsterAI, MockPointerLock, type MockRAF, type MockRConClient, type MockServer, type MockServerConsole, type MockServerContext, MockTransport, type MockUDPSocket, type MultiplayerScenario, type NetworkAddress, type NetworkCondition, type NetworkConfig, type NetworkSimulator, type NodeSetupOptions, type PlaywrightOptions, type PlaywrightTestClient, type Snapshot, type StorageScenario, type TestContext, type UserInfo, type VisualDiff, type VisualScenario, captureAudioEvents, captureCanvasDrawCalls, captureGameScreenshot, captureGameState, compareScreenshots, createBinaryStreamMock, createBinaryWriterMock, createCombatTestContext, createControlledTimer, createCustomNetworkCondition, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameStateSnapshotFactory, createItemEntityFactory, createMockAI, createMockAudioContext, createMockCanvas, createMockCanvasContext2D, createMockConnection, createMockDamageInfo, createMockEngine, createMockGPUAdapter, createMockGPUCanvasContext, createMockGPUDevice, createMockGame, createMockGameState, createMockHandshake, createMockImage, createMockImageData, createMockIndexedDB, createMockLocalStorage, createMockMonsterAI, createMockMonsterMove, createMockNetDriver, createMockNetworkAddress, createMockPerformance, createMockRAF, createMockRConClient, createMockServer, createMockServerClient, createMockServerConsole, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockWeapon, createMockWebGL2Context, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createPhysicsTestContext, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createProjectileEntityFactory, createServerSnapshot, createSpawnTestContext, createStorageTestScenario, createTestContext, createTriggerEntityFactory, createVisualTestScenario, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, mockMonsterAttacks, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateFrames, simulateFramesWithMock, simulateHandshake, simulateNetworkCondition, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerTick, simulateSnapshotDelivery, teardownBrowserEnvironment, teardownMockAudioContext, throttleBandwidth, verifySnapshotConsistency, waitForGameReady };
|
|
781
|
+
export { type AudioEvent, type BinaryStreamMock, type BinaryWriterMock, type BrowserSetupOptions, type Connection, type ConsistencyReport, type ControlledTimer, type DeltaSnapshot, type DrawCall, type GameState, type GameStateCapture, type Handshake, HandshakeStage, InputInjector, type MockAI, type MockDamageInfo, type MockEngine, type MockGame, type MockMonsterAI, MockPointerLock, type MockRAF, type MockRConClient, type MockServer, type MockServerConsole, type MockServerContext, MockTransport, type MockUDPSocket, type MultiplayerScenario, type NetworkAddress, type NetworkCondition, type NetworkConfig, type NetworkSimulator, type NodeSetupOptions, type PlaywrightOptions, type PlaywrightTestClient, type Snapshot, type StorageScenario, type TestContext, type UserInfo, type VisualDiff, type VisualScenario, captureAudioEvents, captureCanvasDrawCalls, captureGameScreenshot, captureGameState, compareScreenshots, createBinaryStreamMock, createBinaryWriterMock, createCombatTestContext, createControlledTimer, createCustomNetworkCondition, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameStateSnapshotFactory, createItemEntityFactory, createMockAI, createMockAudioContext, createMockCanvas, createMockCanvasContext2D, createMockConnection, createMockDamageInfo, createMockEngine, createMockGPUAdapter, createMockGPUCanvasContext, createMockGPUDevice, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockImage, createMockImageData, createMockIndexedDB, createMockLocalStorage, createMockMonsterAI, createMockMonsterMove, createMockNetDriver, createMockNetworkAddress, createMockPerformance, createMockRAF, createMockRConClient, createMockServer, createMockServerClient, createMockServerConsole, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockWeapon, createMockWebGL2Context, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createPhysicsTestContext, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createProjectileEntityFactory, createServerSnapshot, createSpawnTestContext, createStorageTestScenario, createTestContext, createTriggerEntityFactory, createVisualTestScenario, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, mockMonsterAttacks, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateFrames, simulateFramesWithMock, simulateHandshake, simulateNetworkCondition, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerTick, simulateSnapshotDelivery, teardownBrowserEnvironment, teardownMockAudioContext, throttleBandwidth, verifySnapshotConsistency, waitForGameReady };
|
|
@@ -566,6 +566,7 @@ var mockMonsterAttacks = {
|
|
|
566
566
|
};
|
|
567
567
|
|
|
568
568
|
// src/game/mocks.ts
|
|
569
|
+
import { vi as vi5 } from "vitest";
|
|
569
570
|
function createMockGameState(overrides) {
|
|
570
571
|
return {
|
|
571
572
|
levelName: "test_level",
|
|
@@ -575,9 +576,97 @@ function createMockGameState(overrides) {
|
|
|
575
576
|
...overrides
|
|
576
577
|
};
|
|
577
578
|
}
|
|
579
|
+
function createMockGameExports(overrides) {
|
|
580
|
+
return {
|
|
581
|
+
init: vi5.fn(),
|
|
582
|
+
shutdown: vi5.fn(),
|
|
583
|
+
spawnWorld: vi5.fn(),
|
|
584
|
+
frame: vi5.fn().mockReturnValue({ state: {} }),
|
|
585
|
+
clientConnect: vi5.fn().mockReturnValue(true),
|
|
586
|
+
clientBegin: vi5.fn().mockReturnValue({ index: 1, origin: { x: 0, y: 0, z: 0 } }),
|
|
587
|
+
clientDisconnect: vi5.fn(),
|
|
588
|
+
clientThink: vi5.fn(),
|
|
589
|
+
// clientUserInfoChanged is not in GameExports
|
|
590
|
+
// clientCommand is not in GameExports (it's serverCommand?) No, clientCommand might be missing from interface but present in impl or legacy.
|
|
591
|
+
// Checking GameExports interface in src/index.ts:
|
|
592
|
+
/*
|
|
593
|
+
clientConnect(ent: Entity | null, userInfo: string): string | true;
|
|
594
|
+
clientBegin(client: PlayerClient): Entity;
|
|
595
|
+
clientDisconnect(ent: Entity): void;
|
|
596
|
+
clientThink(ent: Entity, cmd: UserCommand): void;
|
|
597
|
+
respawn(ent: Entity): void;
|
|
598
|
+
...
|
|
599
|
+
configstring(index: number, value: string): void;
|
|
600
|
+
serverCommand(cmd: string): void;
|
|
601
|
+
*/
|
|
602
|
+
respawn: vi5.fn(),
|
|
603
|
+
entities: {
|
|
604
|
+
getByIndex: vi5.fn(),
|
|
605
|
+
forEachEntity: vi5.fn(),
|
|
606
|
+
findByRadius: vi5.fn(),
|
|
607
|
+
find: vi5.fn(),
|
|
608
|
+
checkAnyCollision: vi5.fn(),
|
|
609
|
+
trace: vi5.fn(),
|
|
610
|
+
pointcontents: vi5.fn(),
|
|
611
|
+
link: vi5.fn(),
|
|
612
|
+
// linkentity mapped to link in EntitySystem? No, linkentity in imports, link/unlink in System.
|
|
613
|
+
unlink: vi5.fn(),
|
|
614
|
+
spawn: vi5.fn(),
|
|
615
|
+
free: vi5.fn(),
|
|
616
|
+
activeCount: 0,
|
|
617
|
+
world: { classname: "worldspawn" }
|
|
618
|
+
},
|
|
619
|
+
multicast: vi5.fn(),
|
|
620
|
+
unicast: vi5.fn(),
|
|
621
|
+
configstring: vi5.fn(),
|
|
622
|
+
serverCommand: vi5.fn(),
|
|
623
|
+
sound: vi5.fn(),
|
|
624
|
+
soundIndex: vi5.fn(),
|
|
625
|
+
centerprintf: vi5.fn(),
|
|
626
|
+
trace: vi5.fn(),
|
|
627
|
+
time: 0,
|
|
628
|
+
deathmatch: false,
|
|
629
|
+
skill: 1,
|
|
630
|
+
rogue: false,
|
|
631
|
+
xatrix: false,
|
|
632
|
+
coop: false,
|
|
633
|
+
friendlyFire: false,
|
|
634
|
+
random: {
|
|
635
|
+
next: vi5.fn(),
|
|
636
|
+
nextFloat: vi5.fn(),
|
|
637
|
+
range: vi5.fn(),
|
|
638
|
+
crandom: vi5.fn(),
|
|
639
|
+
getState: vi5.fn(),
|
|
640
|
+
setState: vi5.fn()
|
|
641
|
+
},
|
|
642
|
+
createSave: vi5.fn(),
|
|
643
|
+
loadSave: vi5.fn(),
|
|
644
|
+
serialize: vi5.fn(),
|
|
645
|
+
loadState: vi5.fn(),
|
|
646
|
+
setGodMode: vi5.fn(),
|
|
647
|
+
setNoclip: vi5.fn(),
|
|
648
|
+
setNotarget: vi5.fn(),
|
|
649
|
+
giveItem: vi5.fn(),
|
|
650
|
+
damage: vi5.fn(),
|
|
651
|
+
teleport: vi5.fn(),
|
|
652
|
+
registerHooks: vi5.fn(),
|
|
653
|
+
hooks: {
|
|
654
|
+
onMapLoad: vi5.fn(),
|
|
655
|
+
onMapUnload: vi5.fn(),
|
|
656
|
+
onPlayerSpawn: vi5.fn(),
|
|
657
|
+
onPlayerDeath: vi5.fn(),
|
|
658
|
+
register: vi5.fn()
|
|
659
|
+
},
|
|
660
|
+
setSpectator: vi5.fn(),
|
|
661
|
+
registerEntitySpawn: vi5.fn(),
|
|
662
|
+
unregisterEntitySpawn: vi5.fn(),
|
|
663
|
+
getCustomEntities: vi5.fn(),
|
|
664
|
+
...overrides
|
|
665
|
+
};
|
|
666
|
+
}
|
|
578
667
|
|
|
579
668
|
// src/server/mocks/transport.ts
|
|
580
|
-
import { vi as
|
|
669
|
+
import { vi as vi6 } from "vitest";
|
|
581
670
|
var MockTransport = class {
|
|
582
671
|
constructor() {
|
|
583
672
|
this.address = "127.0.0.1";
|
|
@@ -585,11 +674,11 @@ var MockTransport = class {
|
|
|
585
674
|
this.sentMessages = [];
|
|
586
675
|
this.receivedMessages = [];
|
|
587
676
|
this.listening = false;
|
|
588
|
-
this.listenSpy =
|
|
677
|
+
this.listenSpy = vi6.fn().mockImplementation(async (port) => {
|
|
589
678
|
this.port = port;
|
|
590
679
|
this.listening = true;
|
|
591
680
|
});
|
|
592
|
-
this.closeSpy =
|
|
681
|
+
this.closeSpy = vi6.fn().mockImplementation(() => {
|
|
593
682
|
this.listening = false;
|
|
594
683
|
});
|
|
595
684
|
}
|
|
@@ -645,11 +734,11 @@ var MockTransport = class {
|
|
|
645
734
|
};
|
|
646
735
|
function createMockUDPSocket(overrides) {
|
|
647
736
|
const socket = {
|
|
648
|
-
send:
|
|
649
|
-
on:
|
|
650
|
-
close:
|
|
651
|
-
bind:
|
|
652
|
-
address:
|
|
737
|
+
send: vi6.fn(),
|
|
738
|
+
on: vi6.fn(),
|
|
739
|
+
close: vi6.fn(),
|
|
740
|
+
bind: vi6.fn(),
|
|
741
|
+
address: vi6.fn().mockReturnValue({ address: "127.0.0.1", family: "IPv4", port: 0 }),
|
|
653
742
|
...overrides
|
|
654
743
|
};
|
|
655
744
|
return socket;
|
|
@@ -666,13 +755,13 @@ function createMockTransport(address = "127.0.0.1", port = 27910, overrides) {
|
|
|
666
755
|
}
|
|
667
756
|
function createMockNetDriver(overrides) {
|
|
668
757
|
return {
|
|
669
|
-
connect:
|
|
670
|
-
disconnect:
|
|
671
|
-
send:
|
|
672
|
-
onMessage:
|
|
673
|
-
onClose:
|
|
674
|
-
onError:
|
|
675
|
-
isConnected:
|
|
758
|
+
connect: vi6.fn().mockResolvedValue(void 0),
|
|
759
|
+
disconnect: vi6.fn(),
|
|
760
|
+
send: vi6.fn(),
|
|
761
|
+
onMessage: vi6.fn(),
|
|
762
|
+
onClose: vi6.fn(),
|
|
763
|
+
onError: vi6.fn(),
|
|
764
|
+
isConnected: vi6.fn().mockReturnValue(true),
|
|
676
765
|
...overrides
|
|
677
766
|
};
|
|
678
767
|
}
|
|
@@ -680,7 +769,7 @@ function createMockNetDriver(overrides) {
|
|
|
680
769
|
// src/server/mocks/state.ts
|
|
681
770
|
import { ServerState, ClientState } from "@quake2ts/server";
|
|
682
771
|
import { MAX_CONFIGSTRINGS, MAX_EDICTS } from "@quake2ts/shared";
|
|
683
|
-
import { vi as
|
|
772
|
+
import { vi as vi7 } from "vitest";
|
|
684
773
|
function createMockServerState(overrides) {
|
|
685
774
|
return {
|
|
686
775
|
state: ServerState.Game,
|
|
@@ -722,13 +811,13 @@ function createMockServerClient(clientNum, overrides) {
|
|
|
722
811
|
incomingSequence: 0,
|
|
723
812
|
outgoingSequence: 0,
|
|
724
813
|
lastReceived: 0,
|
|
725
|
-
process:
|
|
726
|
-
transmit:
|
|
727
|
-
writeReliableByte:
|
|
728
|
-
writeReliableShort:
|
|
729
|
-
writeReliableLong:
|
|
730
|
-
writeReliableString:
|
|
731
|
-
writeReliableData:
|
|
814
|
+
process: vi7.fn(),
|
|
815
|
+
transmit: vi7.fn(),
|
|
816
|
+
writeReliableByte: vi7.fn(),
|
|
817
|
+
writeReliableShort: vi7.fn(),
|
|
818
|
+
writeReliableLong: vi7.fn(),
|
|
819
|
+
writeReliableString: vi7.fn(),
|
|
820
|
+
writeReliableData: vi7.fn()
|
|
732
821
|
},
|
|
733
822
|
// Cast as any because NetChan might be complex to fully mock here
|
|
734
823
|
userInfo: "",
|
|
@@ -770,13 +859,13 @@ function createMockServerClient(clientNum, overrides) {
|
|
|
770
859
|
}
|
|
771
860
|
function createMockServer(overrides) {
|
|
772
861
|
return {
|
|
773
|
-
start:
|
|
774
|
-
stop:
|
|
775
|
-
multicast:
|
|
776
|
-
unicast:
|
|
777
|
-
configstring:
|
|
778
|
-
kickPlayer:
|
|
779
|
-
changeMap:
|
|
862
|
+
start: vi7.fn().mockResolvedValue(void 0),
|
|
863
|
+
stop: vi7.fn(),
|
|
864
|
+
multicast: vi7.fn(),
|
|
865
|
+
unicast: vi7.fn(),
|
|
866
|
+
configstring: vi7.fn(),
|
|
867
|
+
kickPlayer: vi7.fn(),
|
|
868
|
+
changeMap: vi7.fn().mockResolvedValue(void 0),
|
|
780
869
|
...overrides
|
|
781
870
|
};
|
|
782
871
|
}
|
|
@@ -838,19 +927,19 @@ async function simulateHandshake(client, server) {
|
|
|
838
927
|
}
|
|
839
928
|
|
|
840
929
|
// src/server/mocks/commands.ts
|
|
841
|
-
import { vi as
|
|
930
|
+
import { vi as vi8 } from "vitest";
|
|
842
931
|
function createMockServerConsole(overrides) {
|
|
843
932
|
const outputBuffer = [];
|
|
844
933
|
const commandBuffer = [];
|
|
845
934
|
return {
|
|
846
|
-
exec:
|
|
935
|
+
exec: vi8.fn((cmd) => {
|
|
847
936
|
commandBuffer.push(cmd);
|
|
848
937
|
return `Executed: ${cmd}`;
|
|
849
938
|
}),
|
|
850
|
-
print:
|
|
939
|
+
print: vi8.fn((text) => {
|
|
851
940
|
outputBuffer.push(text);
|
|
852
941
|
}),
|
|
853
|
-
broadcast:
|
|
942
|
+
broadcast: vi8.fn((text) => {
|
|
854
943
|
outputBuffer.push(`Broadcast: ${text}`);
|
|
855
944
|
}),
|
|
856
945
|
commandBuffer,
|
|
@@ -863,13 +952,13 @@ function createMockRConClient(password = "") {
|
|
|
863
952
|
connected: false,
|
|
864
953
|
lastCommand: "",
|
|
865
954
|
lastResponse: "",
|
|
866
|
-
connect:
|
|
955
|
+
connect: vi8.fn(async (address, port, pwd) => {
|
|
867
956
|
return pwd === password;
|
|
868
957
|
}),
|
|
869
|
-
sendCommand:
|
|
958
|
+
sendCommand: vi8.fn(async (cmd) => {
|
|
870
959
|
return `RCON Response for: ${cmd}`;
|
|
871
960
|
}),
|
|
872
|
-
disconnect:
|
|
961
|
+
disconnect: vi8.fn()
|
|
873
962
|
};
|
|
874
963
|
}
|
|
875
964
|
function simulateServerCommand(server, command) {
|
|
@@ -1512,10 +1601,10 @@ function createMockImage(width, height, src) {
|
|
|
1512
1601
|
}
|
|
1513
1602
|
|
|
1514
1603
|
// src/engine/mocks/webgpu.ts
|
|
1515
|
-
import { vi as
|
|
1604
|
+
import { vi as vi9 } from "vitest";
|
|
1516
1605
|
function createMockGPUAdapter() {
|
|
1517
1606
|
return {
|
|
1518
|
-
requestDevice:
|
|
1607
|
+
requestDevice: vi9.fn().mockResolvedValue(createMockGPUDevice()),
|
|
1519
1608
|
features: /* @__PURE__ */ new Set(),
|
|
1520
1609
|
limits: {}
|
|
1521
1610
|
};
|
|
@@ -1525,40 +1614,40 @@ function createMockGPUDevice() {
|
|
|
1525
1614
|
features: /* @__PURE__ */ new Set(),
|
|
1526
1615
|
limits: {},
|
|
1527
1616
|
queue: {
|
|
1528
|
-
submit:
|
|
1529
|
-
writeBuffer:
|
|
1530
|
-
writeTexture:
|
|
1531
|
-
copyExternalImageToTexture:
|
|
1532
|
-
},
|
|
1533
|
-
createCommandEncoder:
|
|
1534
|
-
beginRenderPass:
|
|
1535
|
-
setPipeline:
|
|
1536
|
-
draw:
|
|
1537
|
-
end:
|
|
1617
|
+
submit: vi9.fn(),
|
|
1618
|
+
writeBuffer: vi9.fn(),
|
|
1619
|
+
writeTexture: vi9.fn(),
|
|
1620
|
+
copyExternalImageToTexture: vi9.fn()
|
|
1621
|
+
},
|
|
1622
|
+
createCommandEncoder: vi9.fn().mockReturnValue({
|
|
1623
|
+
beginRenderPass: vi9.fn().mockReturnValue({
|
|
1624
|
+
setPipeline: vi9.fn(),
|
|
1625
|
+
draw: vi9.fn(),
|
|
1626
|
+
end: vi9.fn()
|
|
1538
1627
|
}),
|
|
1539
|
-
finish:
|
|
1628
|
+
finish: vi9.fn()
|
|
1540
1629
|
}),
|
|
1541
|
-
createRenderPipeline:
|
|
1542
|
-
createShaderModule:
|
|
1543
|
-
createBindGroup:
|
|
1544
|
-
createBindGroupLayout:
|
|
1545
|
-
createBuffer:
|
|
1546
|
-
createTexture:
|
|
1547
|
-
createSampler:
|
|
1630
|
+
createRenderPipeline: vi9.fn(),
|
|
1631
|
+
createShaderModule: vi9.fn(),
|
|
1632
|
+
createBindGroup: vi9.fn(),
|
|
1633
|
+
createBindGroupLayout: vi9.fn(),
|
|
1634
|
+
createBuffer: vi9.fn(),
|
|
1635
|
+
createTexture: vi9.fn(),
|
|
1636
|
+
createSampler: vi9.fn()
|
|
1548
1637
|
};
|
|
1549
1638
|
}
|
|
1550
1639
|
function createMockGPUCanvasContext() {
|
|
1551
1640
|
return {
|
|
1552
|
-
configure:
|
|
1553
|
-
unconfigure:
|
|
1554
|
-
getCurrentTexture:
|
|
1641
|
+
configure: vi9.fn(),
|
|
1642
|
+
unconfigure: vi9.fn(),
|
|
1643
|
+
getCurrentTexture: vi9.fn()
|
|
1555
1644
|
};
|
|
1556
1645
|
}
|
|
1557
1646
|
function setupWebGPUMocks() {
|
|
1558
1647
|
const mockAdapter = createMockGPUAdapter();
|
|
1559
1648
|
const mockGpu = {
|
|
1560
|
-
requestAdapter:
|
|
1561
|
-
getPreferredCanvasFormat:
|
|
1649
|
+
requestAdapter: vi9.fn().mockResolvedValue(mockAdapter),
|
|
1650
|
+
getPreferredCanvasFormat: vi9.fn().mockReturnValue("bgra8unorm")
|
|
1562
1651
|
};
|
|
1563
1652
|
Object.defineProperty(global.navigator, "gpu", {
|
|
1564
1653
|
value: mockGpu,
|
|
@@ -2194,6 +2283,7 @@ export {
|
|
|
2194
2283
|
createMockGPUCanvasContext,
|
|
2195
2284
|
createMockGPUDevice,
|
|
2196
2285
|
createMockGame,
|
|
2286
|
+
createMockGameExports,
|
|
2197
2287
|
createMockGameState,
|
|
2198
2288
|
createMockHandshake,
|
|
2199
2289
|
createMockImage,
|