jspurefix 2.0.2 → 2.0.3

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 (272) hide show
  1. package/appveyor.yml +1 -0
  2. package/dist/runtime/session-launcher.js +2 -2
  3. package/dist/runtime/session-launcher.js.map +1 -1
  4. package/package.json +7 -7
  5. package/src/runtime/session-launcher.ts +2 -2
  6. package/dist/a-session-msg-factory.d.ts +0 -0
  7. package/dist/a-session-msg-factory.js +0 -1
  8. package/dist/a-session-msg-factory.js.map +0 -1
  9. package/dist/ascii-encoder.test.d.ts +0 -0
  10. package/dist/ascii-encoder.test.js +0 -1
  11. package/dist/ascii-encoder.test.js.map +0 -1
  12. package/dist/ascii-parser.test.d.ts +0 -0
  13. package/dist/ascii-parser.test.js +0 -1
  14. package/dist/ascii-parser.test.js.map +0 -1
  15. package/dist/ascii-segment.test.d.ts +0 -0
  16. package/dist/ascii-segment.test.js +0 -1
  17. package/dist/ascii-segment.test.js.map +0 -1
  18. package/dist/ascii-store-replay.test.d.ts +0 -0
  19. package/dist/ascii-store-replay.test.js +0 -1
  20. package/dist/ascii-store-replay.test.js.map +0 -1
  21. package/dist/ascii-tag-pos.test.d.ts +0 -0
  22. package/dist/ascii-tag-pos.test.js +0 -1
  23. package/dist/ascii-tag-pos.test.js.map +0 -1
  24. package/dist/buffer/segment-description.d.ts +0 -26
  25. package/dist/buffer/segment-description.js +0 -72
  26. package/dist/buffer/segment-description.js.map +0 -1
  27. package/dist/buffer/segment-summary.d.ts +0 -13
  28. package/dist/buffer/segment-summary.js +0 -20
  29. package/dist/buffer/segment-summary.js.map +0 -1
  30. package/dist/buffer/segment-type.d.ts +0 -8
  31. package/dist/buffer/segment-type.js +0 -13
  32. package/dist/buffer/segment-type.js.map +0 -1
  33. package/dist/buffer/tag-pos.d.ts +0 -12
  34. package/dist/buffer/tag-pos.js +0 -55
  35. package/dist/buffer/tag-pos.js.map +0 -1
  36. package/dist/buffer/tag-type.d.ts +0 -13
  37. package/dist/buffer/tag-type.js +0 -18
  38. package/dist/buffer/tag-type.js.map +0 -1
  39. package/dist/buffer/tags.d.ts +0 -21
  40. package/dist/buffer/tags.js +0 -122
  41. package/dist/buffer/tags.js.map +0 -1
  42. package/dist/dictionary/parser/fix-repository/repository-msg.d.ts +0 -0
  43. package/dist/dictionary/parser/fix-repository/repository-msg.js +0 -1
  44. package/dist/dictionary/parser/fix-repository/repository-msg.js.map +0 -1
  45. package/dist/execution-report.test.d.ts +0 -0
  46. package/dist/execution-report.test.js +0 -1
  47. package/dist/execution-report.test.js.map +0 -1
  48. package/dist/experiment.d.ts +0 -0
  49. package/dist/experiment.js +0 -1
  50. package/dist/experiment.js.map +0 -1
  51. package/dist/fix-repo-dict.test.d.ts +0 -0
  52. package/dist/fix-repo-dict.test.js +0 -1
  53. package/dist/fix-repo-dict.test.js.map +0 -1
  54. package/dist/fix-session-state-args.d.ts +0 -0
  55. package/dist/fix-session-state-args.js +0 -1
  56. package/dist/fix-session-state-args.js.map +0 -1
  57. package/dist/fix-session-state.d.ts +0 -0
  58. package/dist/fix-session-state.js +0 -1
  59. package/dist/fix-session-state.js.map +0 -1
  60. package/dist/fix-session.d.ts +0 -0
  61. package/dist/fix-session.js +0 -1
  62. package/dist/fix-session.js.map +0 -1
  63. package/dist/fix.txt +0 -1
  64. package/dist/fixml-alloc-parse.test.d.ts +0 -0
  65. package/dist/fixml-alloc-parse.test.js +0 -1
  66. package/dist/fixml-alloc-parse.test.js.map +0 -1
  67. package/dist/fixml-mkt-data-fut-parse.test.d.ts +0 -0
  68. package/dist/fixml-mkt-data-fut-parse.test.js +0 -1
  69. package/dist/fixml-mkt-data-fut-parse.test.js.map +0 -1
  70. package/dist/fixml-mkt-data-settle-parse.test.d.ts +0 -0
  71. package/dist/fixml-mkt-data-settle-parse.test.js +0 -1
  72. package/dist/fixml-mkt-data-settle-parse.test.js.map +0 -1
  73. package/dist/fixml-tc-bi-lateral-parse.test.d.ts +0 -0
  74. package/dist/fixml-tc-bi-lateral-parse.test.js +0 -1
  75. package/dist/fixml-tc-bi-lateral-parse.test.js.map +0 -1
  76. package/dist/includes.test.d.ts +0 -0
  77. package/dist/includes.test.js +0 -1
  78. package/dist/includes.test.js.map +0 -1
  79. package/dist/launcher.d.ts +0 -0
  80. package/dist/launcher.js +0 -1
  81. package/dist/launcher.js.map +0 -1
  82. package/dist/logon.test.d.ts +0 -0
  83. package/dist/logon.test.js +0 -1
  84. package/dist/logon.test.js.map +0 -1
  85. package/dist/make-fix-session.d.ts +0 -0
  86. package/dist/make-fix-session.js +0 -1
  87. package/dist/make-fix-session.js.map +0 -1
  88. package/dist/memory-store.test.d.ts +0 -0
  89. package/dist/memory-store.test.js +0 -1
  90. package/dist/memory-store.test.js.map +0 -1
  91. package/dist/object.json +0 -691
  92. package/dist/qf-full-msg.test.d.ts +0 -0
  93. package/dist/qf-full-msg.test.js +0 -1
  94. package/dist/qf-full-msg.test.js.map +0 -1
  95. package/dist/repo-full-ascii-msg.test.d.ts +0 -0
  96. package/dist/repo-full-ascii-msg.test.js +0 -1
  97. package/dist/repo-full-ascii-msg.test.js.map +0 -1
  98. package/dist/runtime/DITokens.d.ts +0 -20
  99. package/dist/runtime/DITokens.js +0 -25
  100. package/dist/runtime/DITokens.js.map +0 -1
  101. package/dist/runtime/app-launcher.d.ts +0 -27
  102. package/dist/runtime/app-launcher.js +0 -131
  103. package/dist/runtime/app-launcher.js.map +0 -1
  104. package/dist/runtime/launcher.d.ts +0 -29
  105. package/dist/runtime/launcher.js +0 -131
  106. package/dist/runtime/launcher.js.map +0 -1
  107. package/dist/sample/launcher.d.ts +0 -29
  108. package/dist/sample/launcher.js +0 -131
  109. package/dist/sample/launcher.js.map +0 -1
  110. package/dist/sample/tcp/trade-capture/app-launher.d.ts +0 -0
  111. package/dist/sample/tcp/trade-capture/app-launher.js +0 -1
  112. package/dist/sample/tcp/trade-capture/app-launher.js.map +0 -1
  113. package/dist/sample/tcp/trade-capture/jsfix.test_client.txt +0 -11
  114. package/dist/sample/tcp/trade-capture/jsfix.test_server.txt +0 -10
  115. package/dist/segment-description.d.ts +0 -0
  116. package/dist/segment-description.js +0 -1
  117. package/dist/segment-description.js.map +0 -1
  118. package/dist/segment-summary.d.ts +0 -0
  119. package/dist/segment-summary.js +0 -1
  120. package/dist/segment-summary.js.map +0 -1
  121. package/dist/segment-type.d.ts +0 -0
  122. package/dist/segment-type.js +0 -1
  123. package/dist/segment-type.js.map +0 -1
  124. package/dist/session-description.d.ts +0 -0
  125. package/dist/session-description.js +0 -1
  126. package/dist/session-description.js.map +0 -1
  127. package/dist/session-msg-factory.d.ts +0 -0
  128. package/dist/session-msg-factory.js +0 -1
  129. package/dist/session-msg-factory.js.map +0 -1
  130. package/dist/session-state.d.ts +0 -0
  131. package/dist/session-state.js +0 -1
  132. package/dist/session-state.js.map +0 -1
  133. package/dist/session-state.test.d.ts +0 -0
  134. package/dist/session-state.test.js +0 -1
  135. package/dist/session-state.test.js.map +0 -1
  136. package/dist/session.test.d.ts +0 -0
  137. package/dist/session.test.js +0 -1
  138. package/dist/session.test.js.map +0 -1
  139. package/dist/setup.d.ts +0 -0
  140. package/dist/setup.js +0 -1
  141. package/dist/setup.js.map +0 -1
  142. package/dist/skeleton-runner.d.ts +0 -0
  143. package/dist/skeleton-runner.js +0 -1
  144. package/dist/skeleton-runner.js.map +0 -1
  145. package/dist/structure.json +0 -631
  146. package/dist/tag-pos.d.ts +0 -0
  147. package/dist/tag-pos.js +0 -1
  148. package/dist/tag-pos.js.map +0 -1
  149. package/dist/tag-type.d.ts +0 -0
  150. package/dist/tag-type.js +0 -1
  151. package/dist/tag-type.js.map +0 -1
  152. package/dist/tags.d.ts +0 -0
  153. package/dist/tags.js +0 -1
  154. package/dist/tags.js.map +0 -1
  155. package/dist/test/ascii-encoder.test.d.ts +0 -1
  156. package/dist/test/ascii-encoder.test.js +0 -508
  157. package/dist/test/ascii-encoder.test.js.map +0 -1
  158. package/dist/test/ascii-parser.test.d.ts +0 -1
  159. package/dist/test/ascii-parser.test.js +0 -123
  160. package/dist/test/ascii-parser.test.js.map +0 -1
  161. package/dist/test/ascii-segment.test.d.ts +0 -1
  162. package/dist/test/ascii-segment.test.js +0 -86
  163. package/dist/test/ascii-segment.test.js.map +0 -1
  164. package/dist/test/ascii-store-replay.test.d.ts +0 -1
  165. package/dist/test/ascii-store-replay.test.js +0 -92
  166. package/dist/test/ascii-store-replay.test.js.map +0 -1
  167. package/dist/test/ascii-tag-pos.test.d.ts +0 -1
  168. package/dist/test/ascii-tag-pos.test.js +0 -105
  169. package/dist/test/ascii-tag-pos.test.js.map +0 -1
  170. package/dist/test/execution-report.test.d.ts +0 -1
  171. package/dist/test/execution-report.test.js +0 -494
  172. package/dist/test/execution-report.test.js.map +0 -1
  173. package/dist/test/experiment.d.ts +0 -23
  174. package/dist/test/experiment.js +0 -33
  175. package/dist/test/experiment.js.map +0 -1
  176. package/dist/test/expieriment.d.ts +0 -23
  177. package/dist/test/expieriment.js +0 -33
  178. package/dist/test/expieriment.js.map +0 -1
  179. package/dist/test/fix-log-replay.test.d.ts +0 -1
  180. package/dist/test/fix-log-replay.test.js +0 -47
  181. package/dist/test/fix-log-replay.test.js.map +0 -1
  182. package/dist/test/fix-repo-dict.test.d.ts +0 -1
  183. package/dist/test/fix-repo-dict.test.js +0 -128
  184. package/dist/test/fix-repo-dict.test.js.map +0 -1
  185. package/dist/test/fixml-alloc-parse.test.d.ts +0 -1
  186. package/dist/test/fixml-alloc-parse.test.js +0 -161
  187. package/dist/test/fixml-alloc-parse.test.js.map +0 -1
  188. package/dist/test/fixml-mkt-data-fut-parse.test.d.ts +0 -1
  189. package/dist/test/fixml-mkt-data-fut-parse.test.js +0 -61
  190. package/dist/test/fixml-mkt-data-fut-parse.test.js.map +0 -1
  191. package/dist/test/fixml-mkt-data-settle-parse.test.d.ts +0 -1
  192. package/dist/test/fixml-mkt-data-settle-parse.test.js +0 -34
  193. package/dist/test/fixml-mkt-data-settle-parse.test.js.map +0 -1
  194. package/dist/test/fixml-tc-bi-lateral-parse.test.d.ts +0 -1
  195. package/dist/test/fixml-tc-bi-lateral-parse.test.js +0 -97
  196. package/dist/test/fixml-tc-bi-lateral-parse.test.js.map +0 -1
  197. package/dist/test/includes.test.d.ts +0 -1
  198. package/dist/test/includes.test.js +0 -43
  199. package/dist/test/includes.test.js.map +0 -1
  200. package/dist/test/logon.test.d.ts +0 -1
  201. package/dist/test/logon.test.js +0 -93
  202. package/dist/test/logon.test.js.map +0 -1
  203. package/dist/test/memory-store.test.d.ts +0 -1
  204. package/dist/test/memory-store.test.js +0 -78
  205. package/dist/test/memory-store.test.js.map +0 -1
  206. package/dist/test/qf-full-msg.test.d.ts +0 -1
  207. package/dist/test/qf-full-msg.test.js +0 -81
  208. package/dist/test/qf-full-msg.test.js.map +0 -1
  209. package/dist/test/repo-full-ascii-msg.test.d.ts +0 -1
  210. package/dist/test/repo-full-ascii-msg.test.js +0 -87
  211. package/dist/test/repo-full-ascii-msg.test.js.map +0 -1
  212. package/dist/test/repo-full-fixml-msg.test.d.ts +0 -1
  213. package/dist/test/repo-full-fixml-msg.test.js +0 -139
  214. package/dist/test/repo-full-fixml-msg.test.js.map +0 -1
  215. package/dist/test/session-state.test.d.ts +0 -1
  216. package/dist/test/session-state.test.js +0 -73
  217. package/dist/test/session-state.test.js.map +0 -1
  218. package/dist/test/session.test.d.ts +0 -1
  219. package/dist/test/session.test.js +0 -280
  220. package/dist/test/session.test.js.map +0 -1
  221. package/dist/test/setup.d.ts +0 -45
  222. package/dist/test/setup.js +0 -102
  223. package/dist/test/setup.js.map +0 -1
  224. package/dist/test/skeleton-runner.d.ts +0 -15
  225. package/dist/test/skeleton-runner.js +0 -108
  226. package/dist/test/skeleton-runner.js.map +0 -1
  227. package/dist/test/time-formatter.test.d.ts +0 -1
  228. package/dist/test/time-formatter.test.js +0 -80
  229. package/dist/test/time-formatter.test.js.map +0 -1
  230. package/dist/test/to-views.d.ts +0 -11
  231. package/dist/test/to-views.js +0 -56
  232. package/dist/test/to-views.js.map +0 -1
  233. package/dist/test/view-decode.test.d.ts +0 -1
  234. package/dist/test/view-decode.test.js +0 -183
  235. package/dist/test/view-decode.test.js.map +0 -1
  236. package/dist/time-formatter.test.d.ts +0 -0
  237. package/dist/time-formatter.test.js +0 -1
  238. package/dist/time-formatter.test.js.map +0 -1
  239. package/dist/to-views.d.ts +0 -0
  240. package/dist/to-views.js +0 -1
  241. package/dist/to-views.js.map +0 -1
  242. package/dist/token.txt +0 -248
  243. package/dist/transport/FixEntity.d.ts +0 -8
  244. package/dist/transport/FixEntity.js +0 -12
  245. package/dist/transport/FixEntity.js.map +0 -1
  246. package/dist/transport/a-session-msg-factory.d.ts +0 -23
  247. package/dist/transport/a-session-msg-factory.js +0 -58
  248. package/dist/transport/a-session-msg-factory.js.map +0 -1
  249. package/dist/transport/fix-msg-factory.d.ts +0 -15
  250. package/dist/transport/fix-msg-factory.js +0 -3
  251. package/dist/transport/fix-msg-factory.js.map +0 -1
  252. package/dist/transport/fix-session-state-args.d.ts +0 -8
  253. package/dist/transport/fix-session-state-args.js +0 -3
  254. package/dist/transport/fix-session-state-args.js.map +0 -1
  255. package/dist/transport/fix-session-state.d.ts +0 -32
  256. package/dist/transport/fix-session-state.js +0 -133
  257. package/dist/transport/fix-session-state.js.map +0 -1
  258. package/dist/transport/fix-session.d.ts +0 -50
  259. package/dist/transport/fix-session.js +0 -291
  260. package/dist/transport/fix-session.js.map +0 -1
  261. package/dist/transport/make-fix-session.d.ts +0 -5
  262. package/dist/transport/make-fix-session.js +0 -3
  263. package/dist/transport/make-fix-session.js.map +0 -1
  264. package/dist/transport/session-description.d.ts +0 -17
  265. package/dist/transport/session-description.js +0 -3
  266. package/dist/transport/session-description.js.map +0 -1
  267. package/dist/transport/session-msg-factory.d.ts +0 -15
  268. package/dist/transport/session-msg-factory.js +0 -3
  269. package/dist/transport/session-msg-factory.js.map +0 -1
  270. package/dist/transport/session-state.d.ts +0 -25
  271. package/dist/transport/session-state.js +0 -30
  272. package/dist/transport/session-state.js.map +0 -1
@@ -1,123 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- require("reflect-metadata");
13
- const buffer_1 = require("../buffer");
14
- const util_1 = require("../util");
15
- const __1 = require("..");
16
- const setup_1 = require("./env/setup");
17
- const segment_type_1 = require("../buffer/segment/segment-type");
18
- let config;
19
- let definitions;
20
- let jsonHelper;
21
- const logon = '8=FIX4.4|9=0000208|35=A|49=sender-10|56=target-20|34=1|57=sub-a|52=20180610-10:39:01.621|98=2|108=62441|95=20|96=VgfoSqo56NqSVI1fLdlI|141=Y|789=4886|383=20|384=1|372=ipsum|385=R|464=N|553=sit|554=consectetur|10=49|';
22
- const expectedTagPos = [
23
- new buffer_1.TagPos(0, 8, 2, 6),
24
- new buffer_1.TagPos(1, 9, 11, 7),
25
- new buffer_1.TagPos(2, 35, 22, 1),
26
- new buffer_1.TagPos(3, 49, 27, 9),
27
- new buffer_1.TagPos(4, 56, 40, 9),
28
- new buffer_1.TagPos(5, 34, 53, 1),
29
- new buffer_1.TagPos(6, 57, 58, 5),
30
- new buffer_1.TagPos(7, 52, 67, 21),
31
- new buffer_1.TagPos(8, 98, 92, 1),
32
- new buffer_1.TagPos(9, 108, 98, 5),
33
- new buffer_1.TagPos(10, 95, 107, 2),
34
- new buffer_1.TagPos(11, 96, 113, 20),
35
- new buffer_1.TagPos(12, 141, 138, 1),
36
- new buffer_1.TagPos(13, 789, 144, 4),
37
- new buffer_1.TagPos(14, 383, 153, 2),
38
- new buffer_1.TagPos(15, 384, 160, 1),
39
- new buffer_1.TagPos(16, 372, 166, 5),
40
- new buffer_1.TagPos(17, 385, 176, 1),
41
- new buffer_1.TagPos(18, 464, 182, 1),
42
- new buffer_1.TagPos(19, 553, 188, 3),
43
- new buffer_1.TagPos(20, 554, 196, 11),
44
- new buffer_1.TagPos(21, 10, 211, 2)
45
- ];
46
- let setup = null;
47
- beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
48
- expect.assertions(1);
49
- setup = new setup_1.Setup('session/test-initiator-tls.json', 'session/test-acceptor-tls.json');
50
- yield setup.init();
51
- definitions = setup.definitions;
52
- config = setup.clientConfig;
53
- definitions = setup.definitions;
54
- jsonHelper = new util_1.JsonHelper(definitions);
55
- }), 45000);
56
- test('begin string incorrectly placed', () => {
57
- return expect(setup.client.parseText('8=FIX4.4|8=FIX4.4|')).rejects.toEqual(new Error('BeginString: not expected at position [2]'));
58
- });
59
- test('body length incorrectly placed', () => {
60
- return expect(setup.client.parseText('8=FIX4.4|9=101|9=101|')).rejects.toEqual(new Error('BodyLengthTag: not expected at position [3]'));
61
- });
62
- test('msg type incorrectly placed', () => {
63
- return expect(setup.client.parseText('8=FIX4.4|9=101|35=A|35=A|')).rejects.toEqual(new Error('MsgTag: not expected at position [4]'));
64
- });
65
- test('do not start with 8=', () => {
66
- return expect(setup.client.parseText('59=FIX4.4|')).rejects.toEqual(new Error('position 1 [59] must be BeginString: 8='));
67
- });
68
- test('body length incorrectly placed', () => {
69
- return expect(setup.client.parseText('8=FIX4.4|59=101|9=101|')).rejects.toEqual(new Error('position 2 [59] must be BodyLengthTag: 9='));
70
- });
71
- test('msgTag incorrectly placed', () => {
72
- return expect(setup.client.parseText('8=FIX4.4|9=101|59=A|')).rejects.toEqual(new Error('position 3 [59] must be MsgTag: 35='));
73
- });
74
- test('first 3 fields correctly placed', () => __awaiter(void 0, void 0, void 0, function* () {
75
- const res = yield setup.client.parseText('8=FIX4.4|9=101|35=A|');
76
- expect(res.event).toEqual('done');
77
- }));
78
- test('complete msg parsed', () => __awaiter(void 0, void 0, void 0, function* () {
79
- const res = yield setup.client.parseText(logon);
80
- expect(res.event).toEqual('msg');
81
- expect(res.msgType).toEqual(__1.MsgType.Logon);
82
- }));
83
- test('complete msg in chunks parsed', () => __awaiter(void 0, void 0, void 0, function* () {
84
- const res = yield setup.client.parseText(logon, true);
85
- expect(res.event).toEqual('msg');
86
- expect(res.msgType).toEqual(__1.MsgType.Logon);
87
- }));
88
- test('msg sent in chunks matches parser buffer', () => __awaiter(void 0, void 0, void 0, function* () {
89
- const res = yield setup.client.parseText(logon, true);
90
- expect(res.msgType).toEqual(__1.MsgType.Logon);
91
- expect(res.contents).toEqual(logon);
92
- }));
93
- test('logon parsers to correct tag set', () => __awaiter(void 0, void 0, void 0, function* () {
94
- const res = yield setup.client.parseText(logon, true);
95
- expect(res.msgType).toEqual(__1.MsgType.Logon);
96
- expect(res.view.structure.tags.tagPos).toEqual(expectedTagPos);
97
- }));
98
- test('tags other than 10 past body length', () => __awaiter(void 0, void 0, void 0, function* () {
99
- const begin = '8=FIX4.4|9=0000208|';
100
- const changed = logon.replace('10=49|', '555=you know nothin|10=49');
101
- return expect(setup.client.parseText(changed)).rejects.toEqual(new Error(`Tag: [555] cant be after ${208 + begin.length - 1}`));
102
- }));
103
- test('unknown message type', () => __awaiter(void 0, void 0, void 0, function* () {
104
- const changed = logon.replace('35=A', '35=ZZ');
105
- const res = yield setup.client.parseText(changed);
106
- expect(res.view).toBeTruthy();
107
- expect(res.view.segment.type).toEqual(segment_type_1.SegmentType.Unknown);
108
- }));
109
- test('missing 1 required tag', () => __awaiter(void 0, void 0, void 0, function* () {
110
- const changed = logon.replace('108=62441|', '000=62441|');
111
- const res = yield setup.client.parseText(changed);
112
- expect(res.view).toBeTruthy();
113
- const missing = res.view.missing();
114
- expect(missing).toEqual([108]);
115
- }));
116
- test('missing 2 required tags', () => __awaiter(void 0, void 0, void 0, function* () {
117
- const changed = logon.replace('98=2|108=62441|', '01=2|000=62441|');
118
- const res = yield setup.client.parseText(changed);
119
- expect(res.view).toBeTruthy();
120
- const missing = res.view.missing();
121
- expect(missing).toEqual([98, 108]);
122
- }));
123
- //# sourceMappingURL=ascii-parser.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ascii-parser.test.js","sourceRoot":"","sources":["../../src/test/ascii-parser.test.ts"],"names":[],"mappings":"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","sourcesContent":["import 'reflect-metadata'\r\n\r\nimport { TagPos } from '../buffer'\r\nimport { FixDefinitions } from '../dictionary/definition'\r\nimport { JsonHelper } from '../util'\r\nimport { IJsFixConfig, MsgType } from '..'\r\nimport { Setup } from './env/setup'\r\nimport { SegmentType } from '../buffer/segment/segment-type'\r\nimport { ParsingResult } from './env/parsing-result'\r\n\r\nlet config: IJsFixConfig\r\nlet definitions: FixDefinitions\r\nlet jsonHelper: JsonHelper\r\n\r\nconst logon: string = '8=FIX4.4|9=0000208|35=A|49=sender-10|56=target-20|34=1|57=sub-a|52=20180610-10:39:01.621|98=2|108=62441|95=20|96=VgfoSqo56NqSVI1fLdlI|141=Y|789=4886|383=20|384=1|372=ipsum|385=R|464=N|553=sit|554=consectetur|10=49|'\r\nconst expectedTagPos = [\r\n new TagPos(0, 8, 2, 6),\r\n new TagPos(1, 9, 11, 7),\r\n new TagPos(2, 35, 22, 1),\r\n new TagPos(3, 49, 27, 9),\r\n new TagPos(4, 56, 40, 9),\r\n new TagPos(5, 34, 53, 1),\r\n new TagPos(6, 57, 58, 5),\r\n new TagPos(7, 52, 67, 21),\r\n new TagPos(8, 98, 92, 1),\r\n new TagPos(9, 108, 98, 5),\r\n new TagPos(10, 95, 107, 2),\r\n new TagPos(11, 96, 113, 20),\r\n new TagPos(12, 141, 138, 1),\r\n new TagPos(13, 789, 144, 4),\r\n new TagPos(14, 383, 153, 2),\r\n new TagPos(15, 384, 160, 1),\r\n new TagPos(16, 372, 166, 5),\r\n new TagPos(17, 385, 176, 1),\r\n new TagPos(18, 464, 182, 1),\r\n new TagPos(19, 553, 188, 3),\r\n new TagPos(20, 554, 196, 11),\r\n new TagPos(21, 10, 211, 2)]\r\n\r\nlet setup: Setup = null\r\nbeforeAll(async () => {\r\n expect.assertions(1)\r\n setup = new Setup('session/test-initiator-tls.json', 'session/test-acceptor-tls.json')\r\n await setup.init()\r\n definitions = setup.definitions\r\n config = setup.clientConfig\r\n definitions = setup.definitions\r\n jsonHelper = new JsonHelper(definitions)\r\n}, 45000)\r\n\r\ntest('begin string incorrectly placed', () => {\r\n return expect(setup.client.parseText('8=FIX4.4|8=FIX4.4|')).rejects.toEqual(\r\n new Error('BeginString: not expected at position [2]')\r\n )\r\n})\r\n\r\ntest('body length incorrectly placed', () => {\r\n return expect(setup.client.parseText('8=FIX4.4|9=101|9=101|')).rejects.toEqual(\r\n new Error('BodyLengthTag: not expected at position [3]')\r\n )\r\n})\r\n\r\ntest('msg type incorrectly placed', () => {\r\n return expect(setup.client.parseText('8=FIX4.4|9=101|35=A|35=A|')).rejects.toEqual(\r\n new Error('MsgTag: not expected at position [4]')\r\n )\r\n})\r\n\r\ntest('do not start with 8=', () => {\r\n return expect(setup.client.parseText('59=FIX4.4|')).rejects.toEqual(\r\n new Error('position 1 [59] must be BeginString: 8=')\r\n )\r\n})\r\n\r\ntest('body length incorrectly placed', () => {\r\n return expect(setup.client.parseText('8=FIX4.4|59=101|9=101|')).rejects.toEqual(\r\n new Error('position 2 [59] must be BodyLengthTag: 9=')\r\n )\r\n})\r\n\r\ntest('msgTag incorrectly placed', () => {\r\n return expect(setup.client.parseText('8=FIX4.4|9=101|59=A|')).rejects.toEqual(\r\n new Error('position 3 [59] must be MsgTag: 35=')\r\n )\r\n})\r\n\r\ntest('first 3 fields correctly placed', async () => {\r\n const res: ParsingResult = await setup.client.parseText('8=FIX4.4|9=101|35=A|')\r\n expect(res.event).toEqual('done')\r\n})\r\n\r\ntest('complete msg parsed', async () => {\r\n const res: ParsingResult = await setup.client.parseText(logon)\r\n expect(res.event).toEqual('msg')\r\n expect(res.msgType).toEqual(MsgType.Logon)\r\n})\r\n\r\ntest('complete msg in chunks parsed', async () => {\r\n const res: ParsingResult = await setup.client.parseText(logon, true)\r\n expect(res.event).toEqual('msg')\r\n expect(res.msgType).toEqual(MsgType.Logon)\r\n})\r\n\r\ntest('msg sent in chunks matches parser buffer', async () => {\r\n const res: ParsingResult = await setup.client.parseText(logon, true)\r\n expect(res.msgType).toEqual(MsgType.Logon)\r\n expect(res.contents).toEqual(logon)\r\n})\r\n\r\ntest('logon parsers to correct tag set', async () => {\r\n const res: ParsingResult = await setup.client.parseText(logon, true)\r\n expect(res.msgType).toEqual(MsgType.Logon)\r\n expect(res.view.structure.tags.tagPos).toEqual(expectedTagPos)\r\n})\r\n\r\ntest('tags other than 10 past body length', async () => {\r\n const begin = '8=FIX4.4|9=0000208|'\r\n const changed = logon.replace('10=49|','555=you know nothin|10=49')\r\n return expect(setup.client.parseText(changed)).rejects.toEqual(\r\n new Error(`Tag: [555] cant be after ${208 + begin.length - 1}`)\r\n )\r\n})\r\n\r\ntest('unknown message type', async () => {\r\n const changed = logon.replace('35=A', '35=ZZ')\r\n const res = await setup.client.parseText(changed)\r\n expect(res.view).toBeTruthy()\r\n expect(res.view.segment.type).toEqual(SegmentType.Unknown)\r\n})\r\n\r\ntest('missing 1 required tag', async () => {\r\n const changed = logon.replace('108=62441|','000=62441|')\r\n const res = await setup.client.parseText(changed)\r\n expect(res.view).toBeTruthy()\r\n const missing = res.view.missing()\r\n expect(missing).toEqual([108])\r\n})\r\n\r\ntest('missing 2 required tags', async () => {\r\n // const changed = logon.replace('108=62441|','000=62441|')\r\n const changed = logon.replace('98=2|108=62441|','01=2|000=62441|')\r\n const res = await setup.client.parseText(changed)\r\n expect(res.view).toBeTruthy()\r\n const missing = res.view.missing()\r\n expect(missing).toEqual([98, 108])\r\n})\r\n"]}
@@ -1 +0,0 @@
1
- import 'reflect-metadata';
@@ -1,86 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- require("reflect-metadata");
13
- const util_1 = require("../util");
14
- const __1 = require("..");
15
- const setup_1 = require("./env/setup");
16
- let definitions;
17
- let jsonHelper;
18
- const logon = '8=FIX4.4|9=0000208|35=A|49=sender-10|56=target-20|34=1|57=sub-a|52=20180610-10:39:01.621|98=2|108=62441|95=20|96=VgfoSqo56NqSVI1fLdlI|141=Y|789=4886|383=20|384=1|372=ipsum|385=R|464=N|553=sit|554=consectetur|10=49|';
19
- let config;
20
- let setup = null;
21
- beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
22
- setup = new setup_1.Setup();
23
- yield setup.init();
24
- definitions = setup.definitions;
25
- jsonHelper = new util_1.JsonHelper(definitions);
26
- config = setup.clientConfig;
27
- }), 45000);
28
- test('0 gaps', () => __awaiter(void 0, void 0, void 0, function* () {
29
- const res = yield setup.client.parseText(logon);
30
- expect(res.event).toEqual('msg');
31
- expect(res.msgType).toEqual(__1.MsgType.Logon);
32
- const unknowns = res.view.structure.layout['.undefined'];
33
- expect(unknowns).toBeFalsy();
34
- const o = res.view.toObject();
35
- expect(o).toBeTruthy();
36
- expect(o.Password).toEqual('consectetur');
37
- expect(o.Username).toEqual('sit');
38
- }));
39
- test('1 gap', () => __awaiter(void 0, void 0, void 0, function* () {
40
- const gap = logon.replace('108=62441|', '108=62441|9999=im not here');
41
- const res = yield setup.client.parseText(gap);
42
- expect(res.event).toEqual('msg');
43
- expect(res.msgType).toEqual(__1.MsgType.Logon);
44
- const unknown = res.view.structure.layout['.undefined'];
45
- expect(unknown).toBeTruthy();
46
- expect(unknown.startTag).toEqual(9999);
47
- expect(unknown.startPosition).toEqual(10);
48
- const o = res.view.toObject();
49
- expect(o).toBeTruthy();
50
- expect(o.Password).toEqual('consectetur');
51
- expect(o.Username).toEqual('sit');
52
- }));
53
- test('1 gap next to 1 gap', () => __awaiter(void 0, void 0, void 0, function* () {
54
- const gap = logon.replace('108=62441|', '108=62441|1=gap|2=gap|');
55
- const res = yield setup.client.parseText(gap);
56
- expect(res.event).toEqual('msg');
57
- expect(res.msgType).toEqual(__1.MsgType.Logon);
58
- const unknowns = res.view.structure.layout['.undefined'];
59
- expect(unknowns).toBeTruthy();
60
- expect(Array.isArray(unknowns)).toEqual(true);
61
- expect(unknowns[0].startTag).toEqual(1);
62
- expect(unknowns[0].startPosition).toEqual(10);
63
- expect(unknowns[1].startTag).toEqual(2);
64
- expect(unknowns[1].startPosition).toEqual(11);
65
- const o = res.view.toObject();
66
- expect(o).toBeTruthy();
67
- expect(o.Password).toEqual('consectetur');
68
- expect(o.Username).toEqual('sit');
69
- }));
70
- test('1 gap undefined msg', () => __awaiter(void 0, void 0, void 0, function* () {
71
- const gap = logon.replace('108=62441|', '108=62441|9999=im not here');
72
- const res = yield setup.client.parseText(gap);
73
- expect(res.event).toEqual('msg');
74
- expect(res.msgType).toEqual(__1.MsgType.Logon);
75
- expect(res.view.getUndefined()).toBeTruthy();
76
- expect(res.view.undefinedForMsg()).toEqual('undefined tag = 9999');
77
- }));
78
- test('2 gap undefined msg', () => __awaiter(void 0, void 0, void 0, function* () {
79
- const gap = logon.replace('108=62441|', '108=62441|1=gap|2=gap|');
80
- const res = yield setup.client.parseText(gap);
81
- expect(res.event).toEqual('msg');
82
- expect(res.msgType).toEqual(__1.MsgType.Logon);
83
- expect(res.view.getUndefined()).toBeTruthy();
84
- expect(res.view.undefinedForMsg()).toEqual('undefined tags = 1, 2');
85
- }));
86
- //# sourceMappingURL=ascii-segment.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ascii-segment.test.js","sourceRoot":"","sources":["../../src/test/ascii-segment.test.ts"],"names":[],"mappings":"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","sourcesContent":["import 'reflect-metadata'\r\n\r\nimport { SegmentDescription } from '../buffer'\r\nimport { FixDefinitions } from '../dictionary/definition'\r\nimport { ILogon } from '../types/FIX4.4/repo'\r\nimport { JsonHelper } from '../util'\r\nimport { IJsFixConfig, MsgType } from '..'\r\nimport { Setup } from './env/setup'\r\nimport { ParsingResult } from './env/parsing-result'\r\n\r\nlet definitions: FixDefinitions\r\nlet jsonHelper: JsonHelper\r\nconst logon: string = '8=FIX4.4|9=0000208|35=A|49=sender-10|56=target-20|34=1|57=sub-a|52=20180610-10:39:01.621|98=2|108=62441|95=20|96=VgfoSqo56NqSVI1fLdlI|141=Y|789=4886|383=20|384=1|372=ipsum|385=R|464=N|553=sit|554=consectetur|10=49|'\r\nlet config: IJsFixConfig\r\n\r\nlet setup: Setup = null\r\nbeforeAll(async () => {\r\n setup = new Setup()\r\n await setup.init()\r\n definitions = setup.definitions\r\n jsonHelper = new JsonHelper(definitions)\r\n config = setup.clientConfig\r\n}, 45000)\r\n\r\ntest('0 gaps', async () => {\r\n const res: ParsingResult = await setup.client.parseText(logon)\r\n expect(res.event).toEqual('msg')\r\n expect(res.msgType).toEqual(MsgType.Logon)\r\n const unknowns: SegmentDescription[] = res.view.structure.layout['.undefined']\r\n expect(unknowns).toBeFalsy()\r\n const o: ILogon = res.view.toObject()\r\n expect(o).toBeTruthy()\r\n expect(o.Password).toEqual('consectetur')\r\n expect(o.Username).toEqual('sit')\r\n})\r\n\r\ntest('1 gap', async () => {\r\n const gap = logon.replace('108=62441|', '108=62441|9999=im not here')\r\n const res: ParsingResult = await setup.client.parseText(gap)\r\n expect(res.event).toEqual('msg')\r\n expect(res.msgType).toEqual(MsgType.Logon)\r\n const unknown: SegmentDescription = res.view.structure.layout['.undefined']\r\n expect(unknown).toBeTruthy()\r\n expect(unknown.startTag).toEqual(9999)\r\n expect(unknown.startPosition).toEqual(10)\r\n const o: ILogon = res.view.toObject()\r\n expect(o).toBeTruthy()\r\n expect(o.Password).toEqual('consectetur')\r\n expect(o.Username).toEqual('sit')\r\n})\r\n\r\ntest('1 gap next to 1 gap', async () => {\r\n const gap = logon.replace('108=62441|', '108=62441|1=gap|2=gap|')\r\n const res: ParsingResult = await setup.client.parseText(gap)\r\n expect(res.event).toEqual('msg')\r\n expect(res.msgType).toEqual(MsgType.Logon)\r\n const unknowns: SegmentDescription[] = res.view.structure.layout['.undefined']\r\n expect(unknowns).toBeTruthy()\r\n expect(Array.isArray(unknowns)).toEqual(true)\r\n expect(unknowns[0].startTag).toEqual(1)\r\n expect(unknowns[0].startPosition).toEqual(10)\r\n expect(unknowns[1].startTag).toEqual(2)\r\n expect(unknowns[1].startPosition).toEqual(11)\r\n const o: ILogon = res.view.toObject()\r\n expect(o).toBeTruthy()\r\n expect(o.Password).toEqual('consectetur')\r\n expect(o.Username).toEqual('sit')\r\n})\r\n\r\ntest('1 gap undefined msg', async () => {\r\n const gap = logon.replace('108=62441|', '108=62441|9999=im not here')\r\n const res: ParsingResult = await setup.client.parseText(gap)\r\n expect(res.event).toEqual('msg')\r\n expect(res.msgType).toEqual(MsgType.Logon)\r\n expect(res.view.getUndefined()).toBeTruthy()\r\n expect(res.view.undefinedForMsg()).toEqual('undefined tag = 9999')\r\n})\r\n\r\ntest('2 gap undefined msg', async () => {\r\n const gap = logon.replace('108=62441|', '108=62441|1=gap|2=gap|')\r\n const res: ParsingResult = await setup.client.parseText(gap)\r\n expect(res.event).toEqual('msg')\r\n expect(res.msgType).toEqual(MsgType.Logon)\r\n expect(res.view.getUndefined()).toBeTruthy()\r\n expect(res.view.undefinedForMsg()).toEqual('undefined tags = 1, 2')\r\n})\r\n"]}
@@ -1 +0,0 @@
1
- import 'reflect-metadata';
@@ -1,92 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- require("reflect-metadata");
13
- const path = require("path");
14
- const types_1 = require("../types");
15
- const setup_1 = require("./env/setup");
16
- const test_recovery_1 = require("./env/test-recovery");
17
- const root = path.join(__dirname, '../../data');
18
- let definitions;
19
- let server;
20
- let client;
21
- let setup = null;
22
- beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
23
- setup = new setup_1.Setup('session/test-initiator-tls.json', 'session/test-acceptor-tls.json');
24
- yield setup.init();
25
- definitions = setup.definitions;
26
- const serverConfig = setup.serverConfig;
27
- const clientConfig = setup.clientConfig;
28
- const views = yield setup.server.replayer.replayFixFile(path.join(root, 'examples/FIX.4.4/jsfix.test_client.txt'));
29
- server = new test_recovery_1.TestRecovery(views, serverConfig);
30
- client = new test_recovery_1.TestRecovery(views, clientConfig);
31
- yield server.populate();
32
- yield client.populate();
33
- }), 45000);
34
- test('expect 15 messages in log', () => {
35
- expect(server.views.length).toEqual(15);
36
- expect(client.views.length).toEqual(15);
37
- });
38
- test('server store states', () => __awaiter(void 0, void 0, void 0, function* () {
39
- const s1 = yield server.recovery.store.getState();
40
- expect(s1.length).toEqual(9);
41
- }));
42
- test('client store states', () => __awaiter(void 0, void 0, void 0, function* () {
43
- const s1 = yield client.recovery.store.getState();
44
- expect(s1.length).toEqual(1);
45
- }));
46
- test('server replay request from seq=1 to seq=10', () => __awaiter(void 0, void 0, void 0, function* () {
47
- const vec = yield server.recovery.getResendRequest(1, 10);
48
- expect(vec).toBeTruthy();
49
- expect(Array.isArray(vec));
50
- expect(vec.length).toEqual(10);
51
- checkSeqReset(vec[0], 1, 2);
52
- expect(vec[1].msgType).toEqual(types_1.MsgType.TradeCaptureReportRequestAck);
53
- expect(vec[1].seqNum).toEqual(2);
54
- for (let i = 2; i <= 6; ++i) {
55
- expect(vec[i].msgType).toEqual(types_1.MsgType.TradeCaptureReport);
56
- expect(vec[i].seqNum).toEqual(i + 1);
57
- }
58
- expect(vec[7].msgType).toEqual(types_1.MsgType.TradeCaptureReportRequestAck);
59
- expect(vec[7].seqNum).toEqual(8);
60
- for (let i = 8; i < 10; ++i) {
61
- expect(vec[i].msgType).toEqual(types_1.MsgType.TradeCaptureReport);
62
- expect(vec[i].seqNum).toEqual(i + 1);
63
- }
64
- }));
65
- test('client replay request from seq=1 to seq=10', () => __awaiter(void 0, void 0, void 0, function* () {
66
- const vec = yield client.recovery.getResendRequest(1, 10);
67
- expect(vec).toBeTruthy();
68
- expect(Array.isArray(vec));
69
- expect(vec.length).toEqual(3);
70
- checkSeqReset(vec[0], 1, 2);
71
- expect(vec[1].msgType).toEqual(types_1.MsgType.TradeCaptureReportRequest);
72
- expect(vec[1].seqNum).toEqual(2);
73
- checkSeqReset(vec[2], 3, 11);
74
- }));
75
- function checkSeqReset(rec, from, to) {
76
- const reset = rec.obj;
77
- expect(rec.msgType).toEqual(types_1.MsgType.SequenceReset);
78
- expect(rec.obj).toBeTruthy();
79
- expect(rec.seqNum).toEqual(to);
80
- expect(reset.GapFillFlag).toBeTruthy();
81
- expect(reset.StandardHeader.MsgType).toEqual(types_1.MsgType.SequenceReset);
82
- expect(reset.StandardHeader.PossDupFlag).toBeTruthy();
83
- expect(reset.StandardHeader.MsgSeqNum).toEqual(from);
84
- }
85
- test('client replay request from seq=4 to seq=10', () => __awaiter(void 0, void 0, void 0, function* () {
86
- const vec = yield client.recovery.getResendRequest(4, 10);
87
- expect(vec).toBeTruthy();
88
- expect(Array.isArray(vec));
89
- expect(vec.length).toEqual(1);
90
- checkSeqReset(vec[0], 4, 11);
91
- }));
92
- //# sourceMappingURL=ascii-store-replay.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ascii-store-replay.test.js","sourceRoot":"","sources":["../../src/test/ascii-store-replay.test.ts"],"names":[],"mappings":"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","sourcesContent":["import 'reflect-metadata'\r\n\r\nimport * as path from 'path'\r\nimport { FixDefinitions } from '../dictionary/definition'\r\n\r\nimport {\r\n IFixMsgStoreRecord\r\n} from '../store'\r\nimport { MsgType } from '../types'\r\nimport { ISequenceReset } from '../types/FIX4.4/repo'\r\n\r\nimport { Setup } from './env/setup'\r\nimport { TestRecovery } from './env/test-recovery'\r\n\r\nconst root: string = path.join(__dirname, '../../data')\r\n\r\nlet definitions: FixDefinitions\r\n\r\nlet server: TestRecovery\r\nlet client: TestRecovery\r\nlet setup: Setup = null\r\n\r\nbeforeAll(async () => {\r\n setup = new Setup('session/test-initiator-tls.json', 'session/test-acceptor-tls.json')\r\n await setup.init()\r\n definitions = setup.definitions\r\n const serverConfig = setup.serverConfig\r\n const clientConfig = setup.clientConfig\r\n const views = await setup.server.replayer.replayFixFile(path.join(root, 'examples/FIX.4.4/jsfix.test_client.txt'))\r\n server = new TestRecovery(views, serverConfig)\r\n client = new TestRecovery(views, clientConfig)\r\n await server.populate()\r\n await client.populate()\r\n}, 45000)\r\n\r\ntest('expect 15 messages in log', () => {\r\n expect(server.views.length).toEqual(15)\r\n expect(client.views.length).toEqual(15)\r\n})\r\n\r\n/*\r\nclient: (all client messages)\r\n8=FIX4.4|9=000124|35=AD|49=init-tls-comp|56=accept-tls-comp|34=2|57=fix|52=20210307-16:16:44.388|568=all-trades|569=0|263=1|580=1|75=20210307|10=187|\r\n8=FIX4.4|9=000112|35=0|49=init-tls-comp|56=accept-tls-comp|34=3|57=fix|52=20210307-16:17:14.431|112=Sun, 07 Mar 2021 16:17:14 GMT|10=220|\r\n8=FIX4.4|9=000109|35=5|49=init-tls-comp|56=accept-tls-comp|34=4|57=fix|52=20210307-16:17:16.397|58=test_client initiate logout|10=191|\r\n */\r\n\r\n/*\r\nserver: (application only)\r\n\r\n8=FIX4.4|9=000112|35=AQ|49=accept-tls-comp|56=init-tls-comp|34=2|57=fix|52=20210307-16:16:44.429|568=all-trades|569=0|749=0|750=0|10=142|\r\n8=FIX4.4|9=000209|35=AE|49=accept-tls-comp|56=init-tls-comp|34=3|57=fix|52=20210307-16:16:44.430|571=100000|487=0|856=0|828=0|17=600000|39=2|570=N|55=Platinum|48=Platinum.INC|32=172|31=7.36|75=20210307|60=20210307-16:16:44.430|10=043|\r\n8=FIX4.4|9=000202|35=AE|49=accept-tls-comp|56=init-tls-comp|34=4|57=fix|52=20210307-16:16:44.431|571=100001|487=0|856=0|828=0|17=600001|39=2|570=N|55=Gold|48=Gold.INC|32=175|31=83.67|75=20210307|60=20210307-16:16:44.430|10=219|\r\n8=FIX4.4|9=000210|35=AE|49=accept-tls-comp|56=init-tls-comp|34=5|57=fix|52=20210307-16:16:44.432|571=100002|487=0|856=0|828=0|17=600002|39=2|570=N|55=Platinum|48=Platinum.INC|32=146|31=41.79|75=20210307|60=20210307-16:16:44.430|10=097|\r\n8=FIX4.4|9=000211|35=AE|49=accept-tls-comp|56=init-tls-comp|34=6|57=fix|52=20210307-16:16:44.432|571=100003|487=0|856=0|828=0|17=600003|39=2|570=N|55=Magnesium|48=Magnesium.INC|32=156|31=8.02|75=20210307|60=20210307-16:16:44.430|10=227|\r\n8=FIX4.4|9=000202|35=AE|49=accept-tls-comp|56=init-tls-comp|34=7|57=fix|52=20210307-16:16:44.432|571=100004|487=0|856=0|828=0|17=600004|39=2|570=N|55=Gold|48=Gold.INC|32=136|31=32.13|75=20210307|60=20210307-16:16:44.430|10=211|\r\n8=FIX4.4|9=000112|35=AQ|49=accept-tls-comp|56=init-tls-comp|34=8|57=fix|52=20210307-16:16:44.433|568=all-trades|569=0|749=0|750=1|10=144|\r\n8=FIX4.4|9=000202|35=AE|49=accept-tls-comp|56=init-tls-comp|34=9|57=fix|52=20210307-16:16:59.449|571=100005|487=0|856=0|828=0|17=600005|39=2|570=N|55=Gold|48=Gold.INC|32=166|31=53.91|75=20210307|60=20210307-16:16:59.449|10=001|\r\n8=FIX4.4|9=000206|35=AE|49=accept-tls-comp|56=init-tls-comp|34=10|57=fix|52=20210307-16:17:14.477|571=100006|487=0|856=0|828=0|17=600006|39=2|570=N|55=Silver|48=Silver.INC|32=105|31=61.2|75=20210307|60=20210307-16:17:14.477|10=191|\r\n */\r\n\r\ntest('server store states',async () => {\r\n const s1 = await server.recovery.store.getState()\r\n expect(s1.length).toEqual(9)\r\n})\r\n\r\ntest('client store states',async () => {\r\n const s1 = await client.recovery.store.getState()\r\n expect(s1.length).toEqual(1)\r\n})\r\n\r\ntest('server replay request from seq=1 to seq=10', async () => {\r\n const vec = await server.recovery.getResendRequest(1, 10)\r\n expect(vec).toBeTruthy()\r\n expect(Array.isArray(vec))\r\n expect(vec.length).toEqual(10)\r\n\r\n checkSeqReset(vec[0], 1, 2)\r\n\r\n expect(vec[1].msgType).toEqual(MsgType.TradeCaptureReportRequestAck)\r\n expect(vec[1].seqNum).toEqual(2)\r\n\r\n for (let i = 2; i <= 6; ++i) {\r\n expect(vec[i].msgType).toEqual(MsgType.TradeCaptureReport)\r\n expect(vec[i].seqNum).toEqual(i + 1)\r\n }\r\n\r\n expect(vec[7].msgType).toEqual(MsgType.TradeCaptureReportRequestAck)\r\n expect(vec[7].seqNum).toEqual(8)\r\n\r\n for (let i = 8; i < 10; ++i) {\r\n expect(vec[i].msgType).toEqual(MsgType.TradeCaptureReport)\r\n expect(vec[i].seqNum).toEqual(i + 1)\r\n }\r\n})\r\n\r\ntest('client replay request from seq=1 to seq=10', async () => {\r\n const vec = await client.recovery.getResendRequest(1, 10)\r\n expect(vec).toBeTruthy()\r\n expect(Array.isArray(vec))\r\n expect(vec.length).toEqual(3)\r\n\r\n checkSeqReset(vec[0], 1, 2)\r\n\r\n expect(vec[1].msgType).toEqual(MsgType.TradeCaptureReportRequest)\r\n expect(vec[1].seqNum).toEqual(2)\r\n\r\n checkSeqReset(vec[2], 3, 11)\r\n})\r\n\r\nfunction checkSeqReset (rec: IFixMsgStoreRecord, from: number, to: number) {\r\n const reset: ISequenceReset = rec.obj as ISequenceReset\r\n expect(rec.msgType).toEqual(MsgType.SequenceReset)\r\n expect(rec.obj).toBeTruthy()\r\n expect(rec.seqNum).toEqual(to)\r\n expect(reset.GapFillFlag).toBeTruthy()\r\n expect(reset.StandardHeader.MsgType).toEqual(MsgType.SequenceReset)\r\n expect(reset.StandardHeader.PossDupFlag).toBeTruthy()\r\n expect(reset.StandardHeader.MsgSeqNum).toEqual(from)\r\n}\r\n\r\n// expect to gap fill entire request - and move expected seqNo to 11\r\n// which will be the next message sent\r\ntest('client replay request from seq=4 to seq=10', async () => {\r\n const vec = await client.recovery.getResendRequest(4, 10)\r\n expect(vec).toBeTruthy()\r\n expect(Array.isArray(vec))\r\n expect(vec.length).toEqual(1)\r\n checkSeqReset(vec[0], 4, 11)\r\n})\r\n"]}
@@ -1 +0,0 @@
1
- import 'reflect-metadata';
@@ -1,105 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- require("reflect-metadata");
13
- const path = require("path");
14
- const buffer_1 = require("../buffer");
15
- const setup_1 = require("./env/setup");
16
- const root = path.join(__dirname, '../../data');
17
- let definitions;
18
- let session;
19
- let views;
20
- let structure;
21
- let tp;
22
- const testTags = [
23
- new buffer_1.TagPos(0, 120, 0, 1),
24
- new buffer_1.TagPos(1, 50, 1, 1),
25
- new buffer_1.TagPos(2, 50, 2, 1),
26
- new buffer_1.TagPos(3, 120, 3, 1),
27
- new buffer_1.TagPos(4, 100, 4, 1)
28
- ];
29
- const expected = [
30
- new buffer_1.TagPos(1, 50, 1, 1),
31
- new buffer_1.TagPos(2, 50, 2, 1),
32
- new buffer_1.TagPos(4, 100, 4, 1),
33
- new buffer_1.TagPos(0, 120, 0, 1),
34
- new buffer_1.TagPos(3, 120, 3, 1)
35
- ];
36
- const unsortedLogon = [
37
- new buffer_1.TagPos(0, 8, 2, 6),
38
- new buffer_1.TagPos(1, 9, 11, 7),
39
- new buffer_1.TagPos(2, 35, 22, 1),
40
- new buffer_1.TagPos(3, 49, 27, 9),
41
- new buffer_1.TagPos(4, 56, 40, 9),
42
- new buffer_1.TagPos(5, 34, 53, 1),
43
- new buffer_1.TagPos(6, 57, 58, 5),
44
- new buffer_1.TagPos(7, 52, 67, 21),
45
- new buffer_1.TagPos(8, 98, 92, 1),
46
- new buffer_1.TagPos(9, 108, 98, 5),
47
- new buffer_1.TagPos(10, 95, 107, 2),
48
- new buffer_1.TagPos(11, 96, 113, 20),
49
- new buffer_1.TagPos(12, 141, 138, 1),
50
- new buffer_1.TagPos(13, 789, 144, 4),
51
- new buffer_1.TagPos(14, 383, 153, 2),
52
- new buffer_1.TagPos(15, 384, 160, 1),
53
- new buffer_1.TagPos(16, 372, 166, 5),
54
- new buffer_1.TagPos(17, 385, 176, 1),
55
- new buffer_1.TagPos(18, 464, 182, 1),
56
- new buffer_1.TagPos(19, 553, 188, 3),
57
- new buffer_1.TagPos(20, 554, 196, 11)
58
- ];
59
- let setup = null;
60
- beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
61
- setup = new setup_1.Setup('session/test-initiator.json');
62
- yield setup.init();
63
- definitions = setup.clientConfig.definitions;
64
- session = setup.client.transmitter;
65
- views = yield setup.client.replayer.replayFixFile(path.join(root, 'examples/FIX.4.4/quickfix/logon/fix.txt'));
66
- if (views && views.length > 0) {
67
- structure = views[0].structure;
68
- tp = views[0].structure.tags.tagPos.slice(0, views[0].segment.endPosition);
69
- }
70
- }), 45000);
71
- test('logon tags parsed fully', () => {
72
- expect(tp).toEqual(unsortedLogon);
73
- });
74
- test('expect tags to sort in tag first order', () => {
75
- const sorted = testTags.slice().sort(buffer_1.TagPos.compare);
76
- const sortedTags = sorted.map(e => e.tag);
77
- expect(sortedTags).toEqual([50, 50, 100, 120, 120]);
78
- });
79
- test('expect tags to sort in tag then start order', () => {
80
- const sorted = testTags.slice().sort(buffer_1.TagPos.compare);
81
- expect(sorted[0].tag).toEqual(sorted[1].tag);
82
- expect(sorted[0].start < sorted[1].start).toEqual(true);
83
- });
84
- test('expect start to carry with its tag', () => {
85
- const sorted = testTags.slice().sort(buffer_1.TagPos.compare);
86
- expect(sorted).toEqual(expected);
87
- });
88
- test('binary search on sorted', () => {
89
- const sorted = testTags.slice().sort(buffer_1.TagPos.compare);
90
- expect(buffer_1.TagPos.binarySearch(sorted, 100)).toEqual(2);
91
- });
92
- test('binary search for non existing tag', () => {
93
- const sorted = testTags.slice().sort(buffer_1.TagPos.compare);
94
- expect(buffer_1.TagPos.binarySearch(sorted, 1000) < 0).toEqual(true);
95
- });
96
- test('binary search duplicate tag', () => {
97
- const sorted = testTags.slice().sort(buffer_1.TagPos.compare);
98
- expect(buffer_1.TagPos.binarySearch(sorted, 50) <= 1).toEqual(true);
99
- });
100
- test('check logon', () => {
101
- const sorted = tp.slice().sort(buffer_1.TagPos.compare);
102
- expect(sorted[0].tag).toEqual(8);
103
- expect(sorted[sorted.length - 1].tag).toEqual(789);
104
- });
105
- //# sourceMappingURL=ascii-tag-pos.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ascii-tag-pos.test.js","sourceRoot":"","sources":["../../src/test/ascii-tag-pos.test.ts"],"names":[],"mappings":"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","sourcesContent":["import 'reflect-metadata'\r\n\r\nimport * as path from 'path'\r\nimport { MsgView, TagPos, Structure } from '../buffer'\r\nimport { FixDefinitions } from '../dictionary/definition'\r\nimport { AsciiMsgTransmitter } from '../transport/ascii/ascii-msg-transmitter'\r\nimport { Setup } from './env/setup'\r\n\r\nconst root: string = path.join(__dirname, '../../data')\r\n\r\nlet definitions: FixDefinitions\r\nlet session: AsciiMsgTransmitter\r\nlet views: MsgView[]\r\nlet structure: Structure\r\nlet tp: TagPos[]\r\n\r\nconst testTags: TagPos[] = [\r\n new TagPos(0, 120, 0, 1), // 3\r\n new TagPos(1, 50, 1, 1), // 0\r\n new TagPos(2, 50, 2, 1), // 1\r\n new TagPos(3, 120, 3, 1), // 4\r\n new TagPos(4, 100, 4, 1) // 2\r\n]\r\n\r\nconst expected: TagPos[] = [\r\n new TagPos(1, 50, 1, 1), // 0\r\n new TagPos(2, 50, 2, 1), // 1\r\n new TagPos(4, 100, 4, 1), // 2\r\n new TagPos(0, 120, 0, 1), // 3\r\n new TagPos(3, 120, 3, 1) // 4\r\n]\r\n\r\nconst unsortedLogon = [\r\n new TagPos(0, 8, 2, 6),\r\n new TagPos(1, 9, 11, 7),\r\n new TagPos(2, 35, 22, 1),\r\n new TagPos(3, 49, 27, 9),\r\n new TagPos(4, 56, 40, 9),\r\n new TagPos(5, 34, 53, 1),\r\n new TagPos(6, 57, 58, 5),\r\n new TagPos(7, 52, 67, 21),\r\n new TagPos(8, 98, 92, 1),\r\n new TagPos(9, 108, 98, 5),\r\n new TagPos(10, 95, 107, 2),\r\n new TagPos(11, 96, 113, 20),\r\n new TagPos(12, 141, 138, 1),\r\n new TagPos(13, 789, 144, 4),\r\n new TagPos(14, 383, 153, 2),\r\n new TagPos(15, 384, 160, 1),\r\n new TagPos(16, 372, 166, 5),\r\n new TagPos(17, 385, 176, 1),\r\n new TagPos(18, 464, 182, 1),\r\n new TagPos(19, 553, 188, 3),\r\n new TagPos(20, 554, 196, 11)\r\n]\r\n\r\nlet setup: Setup = null\r\nbeforeAll(async () => {\r\n setup = new Setup('session/test-initiator.json')\r\n await setup.init()\r\n definitions = setup.clientConfig.definitions\r\n session = setup.client.transmitter as AsciiMsgTransmitter\r\n views = await setup.client.replayer.replayFixFile(path.join(root, 'examples/FIX.4.4/quickfix/logon/fix.txt'))\r\n if (views && views.length > 0) {\r\n structure = views[0].structure\r\n tp = views[0].structure.tags.tagPos.slice(0, views[0].segment.endPosition)\r\n }\r\n}, 45000)\r\n\r\ntest('logon tags parsed fully', () => {\r\n expect(tp).toEqual(unsortedLogon)\r\n})\r\n\r\ntest('expect tags to sort in tag first order', () => {\r\n const sorted = testTags.slice().sort(TagPos.compare)\r\n const sortedTags = sorted.map(e => e.tag)\r\n expect(sortedTags).toEqual([50, 50, 100, 120, 120])\r\n})\r\n\r\ntest('expect tags to sort in tag then start order', () => {\r\n const sorted = testTags.slice().sort(TagPos.compare)\r\n expect(sorted[0].tag).toEqual(sorted[1].tag)\r\n expect(sorted[0].start < sorted[1].start).toEqual(true)\r\n})\r\n\r\ntest('expect start to carry with its tag', () => {\r\n const sorted = testTags.slice().sort(TagPos.compare)\r\n expect(sorted).toEqual(expected)\r\n})\r\n\r\ntest('binary search on sorted', () => {\r\n const sorted = testTags.slice().sort(TagPos.compare)\r\n expect(TagPos.binarySearch(sorted, 100)).toEqual(2)\r\n})\r\n\r\ntest('binary search for non existing tag', () => {\r\n const sorted = testTags.slice().sort(TagPos.compare)\r\n expect(TagPos.binarySearch(sorted, 1000) < 0).toEqual(true)\r\n})\r\n\r\ntest('binary search duplicate tag', () => {\r\n const sorted = testTags.slice().sort(TagPos.compare)\r\n expect(TagPos.binarySearch(sorted, 50) <= 1).toEqual(true)\r\n})\r\n\r\ntest('check logon', () => {\r\n const sorted = tp.slice().sort(TagPos.compare)\r\n expect(sorted[0].tag).toEqual(8)\r\n expect(sorted[sorted.length - 1].tag).toEqual(789)\r\n})\r\n"]}
@@ -1 +0,0 @@
1
- import 'reflect-metadata';