mirror of
https://github.com/demostf/demo.js
synced 2026-06-04 09:04:13 +02:00
more bit wise re-encode tests
This commit is contained in:
parent
3bf5111108
commit
f641610811
10 changed files with 51 additions and 15 deletions
|
|
@ -54,6 +54,6 @@ suite('PacketEntity', () => {
|
||||||
const baseLine = hydrateEntity(playerBaseLineData);
|
const baseLine = hydrateEntity(playerBaseLineData);
|
||||||
const entity = hydrateEntity(playerEntityData);
|
const entity = hydrateEntity(playerEntityData);
|
||||||
|
|
||||||
assert.deepEqual(entity.diffFromBaseLine(baseLine.props).length, 96);
|
assert.deepEqual(entity.diffFromBaseLine(baseLine.props).length, 70);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import {readFileSync} from 'fs';
|
||||||
import {GameEvent} from '../../../../Data/GameEventTypes';
|
import {GameEvent} from '../../../../Data/GameEventTypes';
|
||||||
import {GameEventListPacket} from '../../../../Data/Packet';
|
import {GameEventListPacket} from '../../../../Data/Packet';
|
||||||
import {EncodeGameEventList, ParseGameEventList} from '../../../../Parser/Packet/GameEventList';
|
import {EncodeGameEventList, ParseGameEventList} from '../../../../Parser/Packet/GameEventList';
|
||||||
import {assertEncoder, assertParser, getStream} from './PacketTest';
|
import {assertEncoder, assertParser, assertReEncode, getStream} from './PacketTest';
|
||||||
|
|
||||||
const data = JSON.parse(readFileSync(__dirname + '/../../../data/gameEventListData.json', 'utf8'));
|
const data = JSON.parse(readFileSync(__dirname + '/../../../data/gameEventListData.json', 'utf8'));
|
||||||
const expectedSource = JSON.parse(readFileSync(__dirname + '/../../../data/gameEventList.json', 'utf8'));
|
const expectedSource = JSON.parse(readFileSync(__dirname + '/../../../data/gameEventList.json', 'utf8'));
|
||||||
|
|
@ -93,4 +93,8 @@ suite('GameEventList', () => {
|
||||||
test('Encode gameEventList', () => {
|
test('Encode gameEventList', () => {
|
||||||
assertEncoder(ParseGameEventList, EncodeGameEventList, eventList, 1245);
|
assertEncoder(ParseGameEventList, EncodeGameEventList, eventList, 1245);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Re-encode gameEventList', () => {
|
||||||
|
assertReEncode(ParseGameEventList, EncodeGameEventList, getStream(data));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import {GameEventValueType} from '../../../../Data/GameEvent';
|
||||||
import {GameEventPacket} from '../../../../Data/Packet';
|
import {GameEventPacket} from '../../../../Data/Packet';
|
||||||
import {createParserState} from '../../../../Data/ParserState';
|
import {createParserState} from '../../../../Data/ParserState';
|
||||||
import {EncodeGameEvent, ParseGameEvent} from '../../../../Parser/Packet/GameEvent';
|
import {EncodeGameEvent, ParseGameEvent} from '../../../../Parser/Packet/GameEvent';
|
||||||
import {assertEncoder, assertParser, getStream} from './PacketTest';
|
import {assertEncoder, assertParser, assertReEncode, getStream} from './PacketTest';
|
||||||
|
|
||||||
const data = [25, 240, 149, 0, 0];
|
const data = [25, 240, 149, 0, 0];
|
||||||
const expected = {
|
const expected = {
|
||||||
|
|
@ -41,4 +41,8 @@ suite('GameEvent', () => {
|
||||||
test('Encode gameEvent', () => {
|
test('Encode gameEvent', () => {
|
||||||
assertEncoder(parseEvent, encodeEvent, expected, 36);
|
assertEncoder(parseEvent, encodeEvent, expected, 36);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Re-encode gameEvent', () => {
|
||||||
|
assertReEncode(parseEvent, encodeEvent, getStream(data));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import {ServerClass} from '../../../../Data/ServerClass';
|
||||||
import {EncodePacketEntities, ParsePacketEntities} from '../../../../Parser/Packet/PacketEntities';
|
import {EncodePacketEntities, ParsePacketEntities} from '../../../../Parser/Packet/PacketEntities';
|
||||||
import {deepEqual} from '../../deepEqual';
|
import {deepEqual} from '../../deepEqual';
|
||||||
import {hydrateEntity, hydrateTable} from './hydrate';
|
import {hydrateEntity, hydrateTable} from './hydrate';
|
||||||
import {assertEncoder, assertParser, getStream} from './PacketTest';
|
import {assertEncoder, assertReEncode, getStream} from './PacketTest';
|
||||||
|
|
||||||
const data = JSON.parse(readFileSync(__dirname + '/../../../data/packetEntitiesData.json', 'utf8'));
|
const data = JSON.parse(readFileSync(__dirname + '/../../../data/packetEntitiesData.json', 'utf8'));
|
||||||
const packetData = JSON.parse(gunzipSync(readFileSync(__dirname + '/../../../data/packetEntitiesResult.json.gz')).toString('utf8'));
|
const packetData = JSON.parse(gunzipSync(readFileSync(__dirname + '/../../../data/packetEntitiesResult.json.gz')).toString('utf8'));
|
||||||
|
|
@ -157,7 +157,7 @@ suite('PacketEntities', () => {
|
||||||
|
|
||||||
test('Encode packetEntities', () => {
|
test('Encode packetEntities', () => {
|
||||||
const toEncode = {...expected};
|
const toEncode = {...expected};
|
||||||
assertEncoder(parse, encode, toEncode, 0);
|
assertEncoder(parse, encode, toEncode);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Encode small packetEntities', () => {
|
test('Encode small packetEntities', () => {
|
||||||
|
|
@ -169,7 +169,7 @@ suite('PacketEntities', () => {
|
||||||
delta: 0,
|
delta: 0,
|
||||||
maxEntries: 16,
|
maxEntries: 16,
|
||||||
entities: [hydrateEntity(sunEntityData)]
|
entities: [hydrateEntity(sunEntityData)]
|
||||||
}, 124);
|
}, 81);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Encode small packetEntities with removed', () => {
|
test('Encode small packetEntities with removed', () => {
|
||||||
|
|
@ -181,7 +181,7 @@ suite('PacketEntities', () => {
|
||||||
delta: 1,
|
delta: 1,
|
||||||
maxEntries: 16,
|
maxEntries: 16,
|
||||||
entities: [hydrateEntity(sunEntityData)]
|
entities: [hydrateEntity(sunEntityData)]
|
||||||
}, 181);
|
}, 138);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Encode packetEntities only removed', () => {
|
test('Encode packetEntities only removed', () => {
|
||||||
|
|
@ -207,7 +207,7 @@ suite('PacketEntities', () => {
|
||||||
delta: 0,
|
delta: 0,
|
||||||
maxEntries: 16,
|
maxEntries: 16,
|
||||||
entities: [hydrateEntity(sunEntityData), hydrateEntity(secondEntity)]
|
entities: [hydrateEntity(sunEntityData), hydrateEntity(secondEntity)]
|
||||||
}, 195);
|
}, 109);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Encode player packetEntities', () => {
|
test('Encode player packetEntities', () => {
|
||||||
|
|
@ -219,6 +219,10 @@ suite('PacketEntities', () => {
|
||||||
delta: 0,
|
delta: 0,
|
||||||
maxEntries: 16,
|
maxEntries: 16,
|
||||||
entities: [hydrateEntity(playerEntityData)]
|
entities: [hydrateEntity(playerEntityData)]
|
||||||
}, 3568);
|
}, 1845);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Re-encode packetEntities', () => {
|
||||||
|
assertReEncode(parse, encode, getStream(data));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import {BitStream} from 'bit-buffer';
|
import {BitStream} from 'bit-buffer';
|
||||||
import {EncodeParseSounds, ParseParseSounds} from '../../../../Parser/Packet/ParseSounds';
|
import {EncodeParseSounds, ParseParseSounds} from '../../../../Parser/Packet/ParseSounds';
|
||||||
import {assertEncoder, assertParser, getStream} from './PacketTest';
|
import {assertEncoder, assertParser, assertReEncode, getStream} from './PacketTest';
|
||||||
|
|
||||||
const data = [
|
const data = [
|
||||||
18,
|
18,
|
||||||
|
|
@ -216,4 +216,8 @@ suite('ParseSounds', () => {
|
||||||
data: soundStream.readBitStream(15)
|
data: soundStream.readBitStream(15)
|
||||||
}, 24);
|
}, 24);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Re-encode parseSounds', () => {
|
||||||
|
assertReEncode(ParseParseSounds, EncodeParseSounds, getStream(data));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import {BitStream} from 'bit-buffer';
|
import {BitStream} from 'bit-buffer';
|
||||||
import {EncodeSetConVar, ParseSetConVar} from '../../../../Parser/Packet/SetConVar';
|
import {EncodeSetConVar, ParseSetConVar} from '../../../../Parser/Packet/SetConVar';
|
||||||
import {assertEncoder, assertParser, getStream} from './PacketTest';
|
import {assertEncoder, assertParser, assertReEncode, getStream} from './PacketTest';
|
||||||
|
|
||||||
suite('SetConVar', () => {
|
suite('SetConVar', () => {
|
||||||
test('Parse setConVar', () => {
|
test('Parse setConVar', () => {
|
||||||
|
|
@ -22,4 +22,8 @@ suite('SetConVar', () => {
|
||||||
])
|
])
|
||||||
}, 8 + ('foo\0bar\0second\0value\0'.length * 8));
|
}, 8 + ('foo\0bar\0second\0value\0'.length * 8));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Re-encode setConVar', () => {
|
||||||
|
assertReEncode(ParseSetConVar, EncodeSetConVar, getStream(String.fromCharCode(2) + 'foo\0bar\0second\0value\0'));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import {createParserState} from '../../../../Data/ParserState';
|
||||||
import {ServerClass} from '../../../../Data/ServerClass';
|
import {ServerClass} from '../../../../Data/ServerClass';
|
||||||
import {EncodeTempEntities, ParseTempEntities} from '../../../../Parser/Packet/TempEntities';
|
import {EncodeTempEntities, ParseTempEntities} from '../../../../Parser/Packet/TempEntities';
|
||||||
import {hydrateEntity, hydrateTable} from './hydrate';
|
import {hydrateEntity, hydrateTable} from './hydrate';
|
||||||
import {assertEncoder, assertParser, getStream} from './PacketTest';
|
import {assertEncoder, assertParser, assertReEncode, getStream} from './PacketTest';
|
||||||
|
|
||||||
const data = [
|
const data = [
|
||||||
2,
|
2,
|
||||||
|
|
@ -389,4 +389,8 @@ suite('TempEntities', () => {
|
||||||
test('Encode tempEntities', () => {
|
test('Encode tempEntities', () => {
|
||||||
assertEncoder(parse, encode, expected, 166);
|
assertEncoder(parse, encode, expected, 166);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Re-encode tempEntities', () => {
|
||||||
|
assertReEncode(parse, encode, getStream(data));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import {BitStream} from 'bit-buffer';
|
import {BitStream} from 'bit-buffer';
|
||||||
import {HudTextLocation} from '../../../../Data/UserMessage';
|
import {HudTextLocation} from '../../../../Data/UserMessage';
|
||||||
import {EncodeUserMessage, ParseUserMessage} from '../../../../Parser/Packet/UserMessage';
|
import {EncodeUserMessage, ParseUserMessage} from '../../../../Parser/Packet/UserMessage';
|
||||||
import {assertEncoder, assertParser, getStream} from './PacketTest';
|
import {assertEncoder, assertParser, assertReEncode, getStream} from './PacketTest';
|
||||||
|
|
||||||
const data = [
|
const data = [
|
||||||
5,
|
5,
|
||||||
|
|
@ -52,4 +52,8 @@ suite('UserMessage', () => {
|
||||||
test('Encode userMessage', () => {
|
test('Encode userMessage', () => {
|
||||||
assertEncoder(ParseUserMessage, EncodeUserMessage, expected, 219);
|
assertEncoder(ParseUserMessage, EncodeUserMessage, expected, 219);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Re-encode userMessage', () => {
|
||||||
|
assertReEncode(ParseUserMessage, EncodeUserMessage, getStream(data));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import {BitStream} from 'bit-buffer';
|
import {BitStream} from 'bit-buffer';
|
||||||
import {EncodeVoiceData, ParseVoiceData} from '../../../../Parser/Packet/VoiceData';
|
import {EncodeVoiceData, ParseVoiceData} from '../../../../Parser/Packet/VoiceData';
|
||||||
import {assertEncoder, assertParser, getStream} from './PacketTest';
|
import {assertEncoder, assertParser, assertReEncode, getStream} from './PacketTest';
|
||||||
|
|
||||||
const data = [5, 18, 24, 0, 123, 219, 1];
|
const data = [5, 18, 24, 0, 123, 219, 1];
|
||||||
|
|
||||||
|
|
@ -24,4 +24,8 @@ suite('VoiceData', () => {
|
||||||
data: getStream([123, 219, 1])
|
data: getStream([123, 219, 1])
|
||||||
}, 56);
|
}, 56);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Re-encode voiceData', () => {
|
||||||
|
assertReEncode(ParseVoiceData, EncodeVoiceData, getStream(data));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import {BitStream} from 'bit-buffer';
|
import {BitStream} from 'bit-buffer';
|
||||||
import {EncodeVoiceInit, ParseVoiceInit} from '../../../../Parser/Packet/VoiceInit';
|
import {EncodeVoiceInit, ParseVoiceInit} from '../../../../Parser/Packet/VoiceInit';
|
||||||
import {assertEncoder, assertParser, getStream} from './PacketTest';
|
import {assertEncoder, assertParser, assertReEncode, getStream} from './PacketTest';
|
||||||
|
|
||||||
const data = [118, 97, 117, 100, 105, 111, 95, 99, 101, 108, 116, 0, 255, 34, 86];
|
const data = [118, 97, 117, 100, 105, 111, 95, 99, 101, 108, 116, 0, 255, 34, 86];
|
||||||
|
|
||||||
|
|
@ -22,4 +22,8 @@ suite('VoiceInit', () => {
|
||||||
extraData: 22050
|
extraData: 22050
|
||||||
}, 120);
|
}, 120);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Re-encode voiceInit', () => {
|
||||||
|
assertReEncode(ParseVoiceInit, EncodeVoiceInit, getStream(data));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue