-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfit_test.ts
More file actions
109 lines (88 loc) · 3.17 KB
/
fit_test.ts
File metadata and controls
109 lines (88 loc) · 3.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import { BinaryReader } from "./deps.ts";
import { Fit } from "./fit.ts";
import { assertEquals, test } from "./test_deps.ts";
test({
name: "Properly decodes older .FIT files.",
fn() {
const file = Deno.openSync("./fixtures/older-format.fit");
const buf = Deno.readAllSync(file);
Deno.close(file.rid);
const io = new BinaryReader(buf);
const fit = new Fit(io);
const header = {
size: 12,
protocolVersion: 16,
profileVersion: 64,
dataSize: 452611,
dataType: new Uint8Array([46, 70, 73, 84]),
};
assertEquals(fit.header.size, header.size);
assertEquals(fit.header.protocolVersion, header.protocolVersion);
assertEquals(fit.header.profileVersion, header.profileVersion);
assertEquals(fit.header.dataSize, header.dataSize);
assertEquals(fit.header.dataType, header.dataType);
assertEquals(fit.messages.length, 9);
const MESSAGE_INDEX_LAP = 2;
const MESSAGE_INDEX_RECORD = 3;
assertEquals(fit.messages[MESSAGE_INDEX_LAP].name, "lap");
assertEquals(fit.messages[MESSAGE_INDEX_RECORD].name, "record");
},
});
test({
name: "Properly decodes contemporary Garmin .FIT files.",
fn() {
const file = Deno.openSync("./fixtures/garmin.fit");
const buf = Deno.readAllSync(file);
Deno.close(file.rid);
const io = new BinaryReader(buf);
const fit = new Fit(io);
const header = {
size: 14,
protocolVersion: 16,
profileVersion: 2010,
dataSize: 191877,
dataType: new Uint8Array([46, 70, 73, 84]),
crc: 36757,
};
assertEquals(fit.header.size, header.size);
assertEquals(fit.header.protocolVersion, header.protocolVersion);
assertEquals(fit.header.profileVersion, header.profileVersion);
assertEquals(fit.header.dataSize, header.dataSize);
assertEquals(fit.header.dataType, header.dataType);
assertEquals(fit.header.crc, header.crc);
assertEquals(fit.messages.length, 16);
const MESSAGE_INDEX_LAP = 6;
const MESSAGE_INDEX_RECORD = 7;
assertEquals(fit.messages[MESSAGE_INDEX_LAP].name, "lap");
assertEquals(fit.messages[MESSAGE_INDEX_RECORD].name, "record");
},
});
test({
name: "Properly decodes .FIT files from other-than-Garmin vendors.",
fn() {
const file = Deno.openSync("./fixtures/wahoo.fit");
const buf = Deno.readAllSync(file);
Deno.close(file.rid);
const io = new BinaryReader(buf);
const fit = new Fit(io);
const header = {
size: 14,
protocolVersion: 16,
profileVersion: 1660,
dataSize: 21613,
dataType: new Uint8Array([46, 70, 73, 84]),
crc: 17752,
};
assertEquals(fit.header.size, header.size);
assertEquals(fit.header.protocolVersion, header.protocolVersion);
assertEquals(fit.header.profileVersion, header.profileVersion);
assertEquals(fit.header.dataSize, header.dataSize);
assertEquals(fit.header.dataType, header.dataType);
assertEquals(fit.header.crc, header.crc);
assertEquals(fit.messages.length, 10);
const MESSAGE_INDEX_LAP = 3;
const MESSAGE_INDEX_RECORD = 4;
assertEquals(fit.messages[MESSAGE_INDEX_LAP].name, "lap");
assertEquals(fit.messages[MESSAGE_INDEX_RECORD].name, "record");
},
});