wc3maptranslator 3.0.3 → 4.0.1

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.
Files changed (100) hide show
  1. package/.codeclimate.yml +0 -1
  2. package/.eslintignore +0 -1
  3. package/.github/workflows/codeql-analysis.yml +54 -0
  4. package/.nycrc +1 -2
  5. package/.travis.yml +1 -2
  6. package/CHANGELOG.md +78 -0
  7. package/LICENSE.md +23 -0
  8. package/README.md +68 -75
  9. package/index.js +11 -15
  10. package/index.ts +12 -30
  11. package/lib/CommonInterfaces.ts +22 -0
  12. package/lib/HexBuffer.ts +11 -14
  13. package/lib/W3Buffer.ts +7 -3
  14. package/lib/translators/CamerasTranslator.ts +36 -41
  15. package/lib/translators/DoodadsTranslator.ts +57 -55
  16. package/lib/translators/ImportsTranslator.ts +29 -31
  17. package/lib/translators/InfoTranslator.ts +252 -204
  18. package/lib/translators/{object/ObjectsTranslator.ts → ObjectsTranslator.ts} +84 -82
  19. package/lib/translators/RegionsTranslator.ts +40 -58
  20. package/lib/translators/SoundsTranslator.ts +112 -96
  21. package/lib/translators/StringsTranslator.ts +23 -49
  22. package/lib/translators/TerrainTranslator.ts +166 -97
  23. package/lib/translators/UnitsTranslator.ts +98 -97
  24. package/lib/translators/index.ts +0 -1
  25. package/package.json +23 -16
  26. package/test/.mocharc.json +4 -0
  27. package/test/HexBufferTest.ts +11 -15
  28. package/test/TranslatorReversion.ts +104 -115
  29. package/test/W3BufferTest.ts +19 -13
  30. package/test/data/cameras.json +16 -0
  31. package/test/data/doodads.json +2730 -0
  32. package/test/data/imports.json +386 -0
  33. package/test/data/info.json +250 -0
  34. package/test/data/obj-abilities.json +4892 -0
  35. package/test/data/obj-buffs.json +38 -0
  36. package/test/data/obj-destructables.json +31 -0
  37. package/test/data/obj-doodads.json +38 -0
  38. package/test/data/obj-items.json +31 -0
  39. package/test/data/obj-units.json +40 -0
  40. package/test/data/obj-upgrades.json +38 -0
  41. package/test/data/regions.json +206 -0
  42. package/test/data/sounds.json +50 -0
  43. package/test/data/strings.json +115 -0
  44. package/test/data/terrain.json +1 -0
  45. package/test/data/units.json +452 -0
  46. package/test/data/war3map.doo +0 -0
  47. package/test/data/war3map.imp +0 -0
  48. package/test/data/war3map.j +3442 -0
  49. package/test/data/war3map.shd +0 -0
  50. package/test/data/war3map.w3a +0 -0
  51. package/test/data/war3map.w3b +0 -0
  52. package/test/data/war3map.w3c +0 -0
  53. package/test/data/war3map.w3d +0 -0
  54. package/test/data/war3map.w3e +0 -0
  55. package/test/data/war3map.w3h +0 -0
  56. package/test/data/war3map.w3i +0 -0
  57. package/test/data/war3map.w3q +0 -0
  58. package/test/data/war3map.w3r +0 -0
  59. package/test/data/war3map.w3s +0 -0
  60. package/test/data/war3map.w3t +0 -0
  61. package/test/data/war3map.w3u +0 -0
  62. package/test/data/war3map.wts +631 -0
  63. package/test/data/war3mapUnits.doo +0 -0
  64. package/examples/index.js +0 -123
  65. package/examples/index.ts +0 -134
  66. package/examples/json/cameras.json +0 -16
  67. package/examples/json/doodads.json +0 -28499
  68. package/examples/json/imports.json +0 -10
  69. package/examples/json/info.json +0 -111
  70. package/examples/json/object-abilities.json +0 -31
  71. package/examples/json/object-buffs.json +0 -24
  72. package/examples/json/object-destructables.json +0 -31
  73. package/examples/json/object-doodads.json +0 -24
  74. package/examples/json/object-items.json +0 -45
  75. package/examples/json/object-units.json +0 -45
  76. package/examples/json/object-upgrades.json +0 -31
  77. package/examples/json/regions.json +0 -36
  78. package/examples/json/sounds.json +0 -46
  79. package/examples/json/strings.json +0 -83
  80. package/examples/json/terrain.json +0 -46633
  81. package/examples/json/units.json +0 -332
  82. package/examples/package.json +0 -17
  83. package/examples/tsconfig.json +0 -27
  84. package/examples/war/war3map.doo +0 -0
  85. package/examples/war/war3map.imp +0 -0
  86. package/examples/war/war3map.w3a +0 -0
  87. package/examples/war/war3map.w3b +0 -0
  88. package/examples/war/war3map.w3c +0 -0
  89. package/examples/war/war3map.w3d +0 -0
  90. package/examples/war/war3map.w3e +0 -0
  91. package/examples/war/war3map.w3h +0 -0
  92. package/examples/war/war3map.w3i +0 -0
  93. package/examples/war/war3map.w3q +0 -0
  94. package/examples/war/war3map.w3r +0 -0
  95. package/examples/war/war3map.w3s +0 -0
  96. package/examples/war/war3map.w3t +0 -0
  97. package/examples/war/war3map.w3u +0 -0
  98. package/examples/war/war3map.wts +0 -99
  99. package/lib/translators/index.js +0 -16
  100. package/test/mocha.opts +0 -4
@@ -3,17 +3,24 @@ import * as diff from 'diff-buf';
3
3
  import * as fs from 'fs-extra';
4
4
  import * as Path from 'path';
5
5
 
6
- import { Translator } from '../index';
6
+ import * as Translator from '../index';
7
7
 
8
- const testTranslator = new Translator();
9
- const ObjectType = testTranslator.Objects.ObjectType;
10
- const war3mapDir = Path.resolve('examples/war');
8
+ const ObjectType = Translator.ObjectsTranslator.ObjectType;
9
+ const war3mapDir = Path.resolve('test/data');
11
10
  const outputDir = Path.resolve('test/.output');
12
11
 
13
12
  function readWar3MapBuffer(filename: string) {
14
13
  return fs.readFileSync(Path.join(war3mapDir, filename));
15
14
  }
16
15
 
16
+ function readJsonTestFile(filename: string) {
17
+ return fs.readJsonSync(Path.join(war3mapDir, filename));
18
+ }
19
+
20
+ function writeJsonTestFile(filename: string, json: object) {
21
+ return fs.writeJsonSync(Path.join(outputDir, filename), json);
22
+ }
23
+
17
24
  function buffersAreEqual(b1: Buffer, b2: Buffer) {
18
25
  const comparison = diff.default(b1, b2, { string: false });
19
26
 
@@ -31,17 +38,10 @@ function buffersAreEqual(b1: Buffer, b2: Buffer) {
31
38
  return buffersEqual;
32
39
  }
33
40
 
34
- function writeJsonFile(fileName: string, json: any) {
35
- fs.writeFileSync(
36
- Path.join(outputDir, fileName),
37
- JSON.stringify(json, null, 4)
38
- );
39
- }
40
-
41
- // Ensures that when a war3map file is converted to JSON and back again,
42
- // the two war3map files are the same; converting between the two data formats
43
- // should be a reversible process
44
- describe('Reversion: war -> json -> war', () => {
41
+ // Ensures that when a JSON file is converted to war3map and back again,
42
+ // the two JSON files are the same; converting between the two data formats
43
+ // must yield the original results back (except for some differences in rounding)
44
+ describe('Reversion: json -> war -> json', () => {
45
45
 
46
46
  before(() => {
47
47
  fs.emptyDirSync(outputDir);
@@ -49,181 +49,170 @@ describe('Reversion: war -> json -> war', () => {
49
49
  });
50
50
 
51
51
  it('Doodads reversion', () => {
52
- // Take war3map.doo, -> JSON, -> war3map.doo
53
- // Compare buffers, ensure they are equal
54
- const originalBuffer = readWar3MapBuffer('war3map.doo');
55
- const result = testTranslator.Doodads.warToJson(originalBuffer);
56
- const translatedBuffer = testTranslator.Doodads.jsonToWar(result.json).buffer;
57
- fs.writeFileSync(Path.join(outputDir, 'war3map.doo'), translatedBuffer);
58
- writeJsonFile('doodads.json', result.json);
52
+ const originalJson = readJsonTestFile('doodads.json');
53
+ const translatedBuffer = Translator.DoodadsTranslator.jsonToWar(originalJson).buffer;
54
+ const translatedJson = Translator.DoodadsTranslator.warToJson(translatedBuffer).json;
59
55
 
60
- assert(buffersAreEqual(originalBuffer, translatedBuffer));
56
+ writeJsonTestFile('doodads.json', translatedJson);
57
+
58
+ assert.deepStrictEqual(originalJson, translatedJson);
61
59
  });
62
60
 
63
61
  it('Strings reversion', () => {
64
- const originalBuffer = readWar3MapBuffer('war3map.wts');
65
- const result = testTranslator.Strings.warToJson(originalBuffer);
66
- const translatedBuffer = testTranslator.Strings.jsonToWar(result.json).buffer;
67
- fs.writeFileSync(Path.join(outputDir, 'war3map.wts'), translatedBuffer);
68
- writeJsonFile('strings.json', result.json);
62
+ const originalJson = readJsonTestFile('strings.json');
63
+ const translatedBuffer = Translator.StringsTranslator.jsonToWar(originalJson).buffer;
64
+ const translatedJson = Translator.StringsTranslator.warToJson(translatedBuffer).json;
65
+
66
+ writeJsonTestFile('strings.json', translatedJson);
69
67
 
70
- assert(buffersAreEqual(originalBuffer, translatedBuffer));
68
+ assert.deepStrictEqual(originalJson, translatedJson);
71
69
  });
72
70
 
73
71
  it('Terrain reversion', () => {
74
- // take war3map.w3e -> json -> war3map.w3e
75
- const originalBuffer = readWar3MapBuffer('war3map.w3e');
76
- const result = testTranslator.Terrain.warToJson(originalBuffer);
77
- const translatedBuffer = testTranslator.Terrain.jsonToWar(result.json).buffer;
72
+ const originalJson = readJsonTestFile('terrain.json');
73
+ const translatedBuffer = Translator.TerrainTranslator.jsonToWar(originalJson).buffer;
74
+ const translatedJson = Translator.TerrainTranslator.warToJson(translatedBuffer).json;
78
75
 
79
- fs.writeFileSync(Path.join(outputDir, 'war3map.w3e'), translatedBuffer);
80
- writeJsonFile('terrain.json', result.json);
76
+ writeJsonTestFile('terrain.json', translatedJson);
81
77
 
82
- assert(buffersAreEqual(originalBuffer, translatedBuffer));
78
+ assert.deepStrictEqual(originalJson, translatedJson);
83
79
  });
84
80
 
85
81
  it('Units reversion', () => {
86
- const originalBuffer = readWar3MapBuffer('war3mapUnits.doo');
87
- const result = testTranslator.Units.warToJson(originalBuffer);
88
- const translatedBuffer = testTranslator.Units.jsonToWar(result.json).buffer;
82
+ const originalJson = readJsonTestFile('units.json');
83
+ const translatedBuffer = Translator.UnitsTranslator.jsonToWar(originalJson).buffer;
84
+ const translatedJson = Translator.UnitsTranslator.warToJson(translatedBuffer).json;
89
85
 
90
- fs.writeFileSync(Path.join(outputDir, 'war3mapUnits.doo'), translatedBuffer);
91
- writeJsonFile('units.json', result.json);
86
+ writeJsonTestFile('units.json', translatedJson);
92
87
 
93
- assert(buffersAreEqual(originalBuffer, translatedBuffer));
88
+ assert.deepStrictEqual(originalJson, translatedJson);
94
89
  });
95
90
 
96
91
  it('Regions reversion', () => {
97
- const originalBuffer = readWar3MapBuffer('war3map.w3r');
98
- const result = testTranslator.Regions.warToJson(originalBuffer);
99
- const translatedBuffer = testTranslator.Regions.jsonToWar(result.json).buffer;
92
+ const originalJson = readJsonTestFile('regions.json');
93
+ const translatedBuffer = Translator.RegionsTranslator.jsonToWar(originalJson).buffer;
94
+ const translatedJson = Translator.RegionsTranslator.warToJson(translatedBuffer).json;
100
95
 
101
- fs.writeFileSync(Path.join(outputDir, 'war3map.w3r'), translatedBuffer);
102
- writeJsonFile('regions.json', result.json);
96
+ writeJsonTestFile('regions.json', translatedJson);
103
97
 
104
- assert(buffersAreEqual(originalBuffer, translatedBuffer));
98
+ assert.deepStrictEqual(originalJson, translatedJson);
105
99
  });
106
100
 
107
101
  it('Cameras reversion', () => {
108
- const originalBuffer = readWar3MapBuffer('war3map.w3c');
109
- const result = testTranslator.Cameras.warToJson(originalBuffer);
110
- const translatedBuffer = testTranslator.Cameras.jsonToWar(result.json).buffer;
102
+ const originalJson = readJsonTestFile('cameras.json');
103
+ const translatedBuffer = Translator.CamerasTranslator.jsonToWar(originalJson).buffer;
104
+ const translatedJson = Translator.CamerasTranslator.warToJson(translatedBuffer).json;
111
105
 
112
- fs.writeFileSync(Path.join(outputDir, 'war3map.w3c'), translatedBuffer);
113
- writeJsonFile('cameras.json', result.json);
106
+ writeJsonTestFile('cameras.json', translatedJson);
114
107
 
115
- assert(buffersAreEqual(originalBuffer, translatedBuffer));
108
+ assert.deepStrictEqual(originalJson, translatedJson);
116
109
  });
117
110
 
118
111
  it('Sounds reversion', () => {
119
- const originalBuffer = readWar3MapBuffer('war3map.w3s');
120
- const result = testTranslator.Sounds.warToJson(originalBuffer);
121
- const translatedBuffer = testTranslator.Sounds.jsonToWar(result.json).buffer;
112
+ const originalJson = readJsonTestFile('sounds.json');
113
+ const translatedBuffer = Translator.SoundsTranslator.jsonToWar(originalJson).buffer;
114
+ const translatedJson = Translator.SoundsTranslator.warToJson(translatedBuffer).json;
122
115
 
123
- fs.writeFileSync(Path.join(outputDir, 'war3map.w3s'), translatedBuffer);
124
- writeJsonFile('sounds.json', result.json);
116
+ writeJsonTestFile('sounds.json', translatedJson);
125
117
 
126
- assert(buffersAreEqual(originalBuffer, translatedBuffer));
118
+ assert.deepStrictEqual(originalJson, translatedJson);
127
119
  });
128
120
 
129
121
  it('Units (Object) reversion', () => {
130
- const originalBuffer = readWar3MapBuffer('war3map.w3u');
131
- const result = testTranslator.Objects.warToJson(ObjectType.Units, originalBuffer);
132
- const translatedBuffer = testTranslator.Objects.jsonToWar(ObjectType.Units, result.json).buffer;
122
+ const originalJson = readJsonTestFile('obj-units.json');
123
+ const objectType = Translator.ObjectsTranslator.ObjectType.Units;
124
+ const translatedBuffer = Translator.ObjectsTranslator.jsonToWar(objectType, originalJson).buffer;
125
+ const translatedJson = Translator.ObjectsTranslator.warToJson(objectType, translatedBuffer).json;
133
126
 
134
- fs.writeFileSync(Path.join(outputDir, 'war3map.w3u'), translatedBuffer);
135
- writeJsonFile('object-units.json', result.json);
127
+ writeJsonTestFile('obj-units.json', translatedJson);
136
128
 
137
- assert(buffersAreEqual(originalBuffer, translatedBuffer));
129
+ assert.deepStrictEqual(originalJson, translatedJson);
138
130
  });
139
131
 
140
132
  it('Items (Object) reversion', () => {
141
- const originalBuffer = readWar3MapBuffer('war3map.w3t');
142
- const result = testTranslator.Objects.warToJson(ObjectType.Items, originalBuffer);
143
- const translatedBuffer = testTranslator.Objects.jsonToWar(ObjectType.Items, result.json).buffer;
133
+ const originalJson = readJsonTestFile('obj-items.json');
134
+ const objectType = Translator.ObjectsTranslator.ObjectType.Items;
135
+ const translatedBuffer = Translator.ObjectsTranslator.jsonToWar(objectType, originalJson).buffer;
136
+ const translatedJson = Translator.ObjectsTranslator.warToJson(objectType, translatedBuffer).json;
144
137
 
145
- fs.writeFileSync(Path.join(outputDir, 'war3map.w3t'), translatedBuffer);
146
- writeJsonFile('object-items.json', result.json);
138
+ writeJsonTestFile('obj-items.json', translatedJson);
147
139
 
148
- assert(buffersAreEqual(originalBuffer, translatedBuffer));
140
+ assert.deepStrictEqual(originalJson, translatedJson);
149
141
  });
150
142
 
151
143
  it('Destructables (Object) reversion', () => {
152
- const originalBuffer = readWar3MapBuffer('war3map.w3b');
153
- const result = testTranslator.Objects.warToJson(ObjectType.Items, originalBuffer);
154
- const translatedBuffer = testTranslator.Objects.jsonToWar(ObjectType.Items, result.json).buffer;
144
+ const originalJson = readJsonTestFile('obj-destructables.json');
145
+ const objectType = Translator.ObjectsTranslator.ObjectType.Destructables;
146
+ const translatedBuffer = Translator.ObjectsTranslator.jsonToWar(objectType, originalJson).buffer;
147
+ const translatedJson = Translator.ObjectsTranslator.warToJson(objectType, translatedBuffer).json;
155
148
 
156
- fs.writeFileSync(Path.join(outputDir, 'war3map.w3b'), translatedBuffer);
157
- writeJsonFile('object-destructables.json', result.json);
149
+ writeJsonTestFile('obj-destructables.json', translatedJson);
158
150
 
159
- assert(buffersAreEqual(originalBuffer, translatedBuffer));
151
+ assert.deepStrictEqual(originalJson, translatedJson);
160
152
  });
161
153
 
162
154
  it('Doodads (Object) reversion', () => {
163
- const originalBuffer = readWar3MapBuffer('war3map.w3d');
164
- const result = testTranslator.Objects.warToJson(ObjectType.Doodads, originalBuffer);
165
- const translatedBuffer = testTranslator.Objects.jsonToWar(ObjectType.Doodads, result.json).buffer;
155
+ const originalJson = readJsonTestFile('obj-doodads.json');
156
+ const objectType = Translator.ObjectsTranslator.ObjectType.Doodads;
157
+ const translatedBuffer = Translator.ObjectsTranslator.jsonToWar(objectType, originalJson).buffer;
158
+ const translatedJson = Translator.ObjectsTranslator.warToJson(objectType, translatedBuffer).json;
166
159
 
167
- fs.writeFileSync(Path.join(outputDir, 'war3map.w3d'), translatedBuffer);
168
- writeJsonFile('object-doodads.json', result.json);
160
+ writeJsonTestFile('obj-doodads.json', translatedJson);
169
161
 
170
- assert(buffersAreEqual(originalBuffer, translatedBuffer));
162
+ assert.deepStrictEqual(originalJson, translatedJson);
171
163
  });
172
164
 
173
165
  it('Abilities (Object) reversion', () => {
174
- const originalBuffer = readWar3MapBuffer('war3map.w3a');
175
- const result = testTranslator.Objects.warToJson(ObjectType.Abilities, originalBuffer);
176
- const translatedBuffer = testTranslator.Objects.jsonToWar(ObjectType.Abilities, result.json).buffer;
166
+ const originalJson = readJsonTestFile('obj-abilities.json');
167
+ const objectType = Translator.ObjectsTranslator.ObjectType.Abilities;
168
+ const translatedBuffer = Translator.ObjectsTranslator.jsonToWar(objectType, originalJson).buffer;
169
+ const translatedJson = Translator.ObjectsTranslator.warToJson(objectType, translatedBuffer).json;
177
170
 
178
- fs.writeFileSync(Path.join(outputDir, 'war3map.w3a'), translatedBuffer);
179
- writeJsonFile('object-abilities.json', result.json);
171
+ writeJsonTestFile('obj-abilities.json', translatedJson);
180
172
 
181
- assert(buffersAreEqual(originalBuffer, translatedBuffer));
173
+ assert.deepStrictEqual(originalJson, translatedJson);
182
174
  });
183
175
 
184
176
  it('Buffs (Object) reversion', () => {
185
- const originalBuffer = readWar3MapBuffer('war3map.w3h');
186
- const result = testTranslator.Objects.warToJson(ObjectType.Buffs, originalBuffer);
187
- const translatedBuffer = testTranslator.Objects.jsonToWar(ObjectType.Buffs, result.json).buffer;
177
+ const originalJson = readJsonTestFile('obj-buffs.json');
178
+ const objectType = Translator.ObjectsTranslator.ObjectType.Buffs;
179
+ const translatedBuffer = Translator.ObjectsTranslator.jsonToWar(objectType, originalJson).buffer;
180
+ const translatedJson = Translator.ObjectsTranslator.warToJson(objectType, translatedBuffer).json;
188
181
 
189
- fs.writeFileSync(Path.join(outputDir, 'war3map.w3h'), translatedBuffer);
190
- writeJsonFile('object-buffs.json', result.json);
182
+ writeJsonTestFile('obj-buffs.json', translatedJson);
191
183
 
192
- assert(buffersAreEqual(originalBuffer, translatedBuffer));
184
+ assert.deepStrictEqual(originalJson, translatedJson);
193
185
  });
194
186
 
195
187
  it('Upgrades (Object) reversion', () => {
196
- const originalBuffer = readWar3MapBuffer('war3map.w3q');
197
- const result = testTranslator.Objects.warToJson(ObjectType.Upgrades, originalBuffer);
198
- const translatedBuffer = testTranslator.Objects.jsonToWar(ObjectType.Upgrades, result.json).buffer;
188
+ const originalJson = readJsonTestFile('obj-upgrades.json');
189
+ const objectType = Translator.ObjectsTranslator.ObjectType.Upgrades;
190
+ const translatedBuffer = Translator.ObjectsTranslator.jsonToWar(objectType, originalJson).buffer;
191
+ const translatedJson = Translator.ObjectsTranslator.warToJson(objectType, translatedBuffer).json;
199
192
 
200
- fs.writeFileSync(Path.join(outputDir, 'war3map.w3q'), translatedBuffer);
201
- writeJsonFile('object-upgrades.json', result.json);
193
+ writeJsonTestFile('obj-upgrades.json', translatedJson);
202
194
 
203
- assert(buffersAreEqual(originalBuffer, translatedBuffer));
195
+ assert.deepStrictEqual(originalJson, translatedJson);
204
196
  });
205
197
 
206
198
  it('Info reversion', () => {
207
- const originalBuffer = readWar3MapBuffer('war3map.w3i');
208
- const result = testTranslator.Info.warToJson(originalBuffer);
209
- console.log(JSON.stringify(result.json, null, 4));
210
- const translatedBuffer = testTranslator.Info.jsonToWar(result.json).buffer;
199
+ const originalJson = readJsonTestFile('info.json');
200
+ const translatedBuffer = Translator.InfoTranslator.jsonToWar(originalJson).buffer;
201
+ const translatedJson = Translator.InfoTranslator.warToJson(translatedBuffer).json;
211
202
 
212
- fs.writeFileSync(Path.join(outputDir, 'war3map.w3i'), translatedBuffer);
213
- writeJsonFile('info.json', result.json);
203
+ writeJsonTestFile('info.json', translatedJson);
214
204
 
215
- assert(buffersAreEqual(originalBuffer, translatedBuffer));
205
+ assert.deepStrictEqual(originalJson, translatedJson);
216
206
  });
217
207
 
218
208
  it('Imports reversion', () => {
219
- const originalBuffer = readWar3MapBuffer('war3map.imp');
220
- const result = testTranslator.Imports.warToJson(originalBuffer);
221
- const translatedBuffer = testTranslator.Imports.jsonToWar(result.json).buffer;
209
+ const originalJson = readJsonTestFile('imports.json');
210
+ const translatedBuffer = Translator.ImportsTranslator.jsonToWar(originalJson).buffer;
211
+ const translatedJson = Translator.ImportsTranslator.warToJson(translatedBuffer).json;
222
212
 
223
- fs.writeFileSync(Path.join(outputDir, 'war3map.imp'), translatedBuffer);
224
- writeJsonFile('imports.json', result.json);
213
+ writeJsonTestFile('imports.json', translatedJson);
225
214
 
226
- assert(buffersAreEqual(originalBuffer, translatedBuffer));
215
+ assert.deepStrictEqual(originalJson, translatedJson);
227
216
  });
228
217
 
229
218
  });
@@ -5,10 +5,12 @@ import { W3Buffer } from '../lib/W3Buffer';
5
5
  // on W3Buffer. It consists of, in this order:
6
6
  // char(4), int, float, string(7 Ws), byte
7
7
  const buffData = Buffer.from([
8
- 0x57, 0x33, 0x64, 0x6f, // char(4): "W3do"
9
8
  0x01, 0x00, 0x00, 0x00, // int: 1
9
+ 0x81, 0x70, // short: 28801
10
10
  0x00, 0x00, 0x9b, 0xc5, // float: -4960
11
11
  0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x00, // string: "WWWWWWW"
12
+ 0x57, 0x33, 0x64, 0x6f, // char(4): "W3do"
13
+ 0x57, // char(1): "W"
12
14
  0x02 // byte: 2
13
15
  ]);
14
16
 
@@ -16,29 +18,33 @@ const w3buffer = new W3Buffer(buffData);
16
18
 
17
19
  describe('W3Buffer', () => {
18
20
 
19
- it('should readChar(4)', () => {
20
- const result = w3buffer.readChars(4);
21
- assert.equal(result, 'W3do');
21
+ it('should readInt', () => {
22
+ assert.equal(w3buffer.readInt(), 1);
22
23
  });
23
24
 
24
- it('should readInt', () => {
25
- const result = w3buffer.readInt();
26
- assert.equal(result, 1);
25
+ it('should readShort', () => {
26
+ assert.equal(w3buffer.readShort(), 28801);
27
27
  });
28
28
 
29
29
  it('should readFloat', () => {
30
- const result = w3buffer.readFloat();
31
- assert.equal(result, -4960);
30
+ assert.equal(w3buffer.readFloat(), -4960);
32
31
  });
33
32
 
34
33
  it('should readString', () => {
35
- const result = w3buffer.readString();
36
- assert.equal(result, 'WWWWWWW');
34
+ assert.equal(w3buffer.readString(), 'WWWWWWW');
35
+ });
36
+
37
+ it('should readChars', () => {
38
+ assert.equal(w3buffer.readChars(4), 'W3do');
39
+ assert.equal(w3buffer.readChars(), 'W')
37
40
  });
38
41
 
39
42
  it('should readByte', () => {
40
- const result = w3buffer.readByte();
41
- assert.equal(result, 2);
43
+ assert.equal(w3buffer.readByte(), 2);
44
+ });
45
+
46
+ it('should be exhausted', () => {
47
+ assert.ok(w3buffer.isExhausted());
42
48
  });
43
49
 
44
50
  });
@@ -0,0 +1,16 @@
1
+ [
2
+ {
3
+ "target": {
4
+ "x": -319.01,
5
+ "y": -90.18
6
+ },
7
+ "offsetZ": 0,
8
+ "rotation": 90,
9
+ "aoa": 304,
10
+ "distance": 2657.34,
11
+ "roll": 5,
12
+ "fov": 70,
13
+ "farClipping": 5000,
14
+ "name": ""
15
+ }
16
+ ]