mirror of
https://github.com/demostf/demo.js
synced 2026-06-04 00:54:14 +02:00
add encoder for stringtable message
This commit is contained in:
parent
b94a79ab6d
commit
9820e0fc57
6 changed files with 164 additions and 30 deletions
BIN
src/tests/data/stringTableData.bin
Normal file
BIN
src/tests/data/stringTableData.bin
Normal file
Binary file not shown.
1
src/tests/data/stringTableResult.json
Normal file
1
src/tests/data/stringTableResult.json
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -8,7 +8,6 @@ import {DataTablesMessage} from '../../../../Data/Message';
|
|||
import {hydrateTable} from '../Packet/hydrate';
|
||||
import {ServerClass} from '../../../../Data/ServerClass';
|
||||
import * as assert from 'assert';
|
||||
import {deepEqual} from 'assert';
|
||||
|
||||
const data = Array.from(readFileSync(__dirname + '/../../../data/dataTableData.bin').values());
|
||||
const expectedRaw = JSON.parse(gunzipSync(readFileSync(__dirname + '/../../../data/dataTableResult.json.gz')).toString('utf8')) as DataTablesMessage;
|
||||
|
|
|
|||
91
src/tests/unit/Parser/Message/StringTableTest.ts
Normal file
91
src/tests/unit/Parser/Message/StringTableTest.ts
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
import {StringTable, StringTableEntry} from '../../../../Data/StringTable';
|
||||
import {readFileSync} from 'fs';
|
||||
import {ParserState} from '../../../../Data/ParserState';
|
||||
import {StringTableHandler} from '../../../../Parser/Message/StringTable';
|
||||
import {assertEncoder, assertParser, getStream} from '../Packet/PacketTest';
|
||||
import {BitStream} from 'bit-buffer';
|
||||
|
||||
const encodeEntry = (entry: StringTableEntry) => {
|
||||
const encodeEntry: any = {
|
||||
text: entry.text,
|
||||
};
|
||||
if (entry.extraData) {
|
||||
encodeEntry.extraData = Array.from(entry.extraData.readArrayBuffer(Math.ceil(entry.extraData.length / 8)).values());
|
||||
}
|
||||
return encodeEntry;
|
||||
};
|
||||
const encodeTables = (tables) => {
|
||||
return tables.map((table) => {
|
||||
const encodeTable: any = {
|
||||
name: table.name,
|
||||
entries: table.entries.map(encodeEntry)
|
||||
};
|
||||
if (table.tableEntry) {
|
||||
encodeTable.tableEntry = encodeEntry(table.tableEntry);
|
||||
}
|
||||
return encodeTable;
|
||||
});
|
||||
};
|
||||
const decodeEntry = (entry) => {
|
||||
const decodeEntry: any = {
|
||||
text: entry.text,
|
||||
};
|
||||
if (entry.extraData) {
|
||||
decodeEntry.extraData = getStream(entry.extraData);
|
||||
}
|
||||
return decodeEntry;
|
||||
};
|
||||
const decodeTables = (tables) => {
|
||||
return tables.map((table) => {
|
||||
const decodeTable: any = {
|
||||
name: table.name,
|
||||
entries: table.entries.map(decodeEntry)
|
||||
};
|
||||
if (table.tableEntry) {
|
||||
decodeTable.tableEntry = decodeEntry(table.tableEntry);
|
||||
}
|
||||
return decodeTable;
|
||||
});
|
||||
};
|
||||
|
||||
const data = Array.from(readFileSync(__dirname + '/../../../data/stringTableData.bin').values());
|
||||
const expectedRaw = {
|
||||
type: 8,
|
||||
tick: 21766,
|
||||
tables: JSON.parse(readFileSync(__dirname + '/../../../data/stringTableResult.json', 'utf8'))
|
||||
};
|
||||
|
||||
const expected = {
|
||||
type: 8,
|
||||
tick: 21766,
|
||||
tables: decodeTables(expectedRaw.tables),
|
||||
rawData: getStream('')
|
||||
};
|
||||
|
||||
|
||||
const getParserState = () => {
|
||||
return new ParserState();
|
||||
};
|
||||
|
||||
const handler = StringTableHandler;
|
||||
|
||||
function parser(stream) {
|
||||
const result: any = handler.parseMessage(stream, getParserState());
|
||||
delete result.rawData;
|
||||
result.tables = encodeTables(result.tables);
|
||||
return result;
|
||||
}
|
||||
|
||||
function encoder(message, stream) {
|
||||
handler.encodeMessage(expected, stream, getParserState());
|
||||
}
|
||||
|
||||
suite('StringTable', () => {
|
||||
test('Parse StringTable message', () => {
|
||||
assertParser(parser, getStream(data), expectedRaw, 3690024);
|
||||
});
|
||||
|
||||
test('Encode StringTable message', () => {
|
||||
assertEncoder(parser, encoder, expectedRaw, 3690024);
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue