fit_parser 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,16 +1,18 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe FitParser::File::Data do
4
- describe ".generate" do
4
+ describe '.generate' do
5
5
  context 'standard definition' do
6
6
  let(:definition) do
7
- FitParser::File::Definition.read example_file('record/message/definition')
7
+ FitParser::File::Definition.read(
8
+ example_file('record/message/definition')
9
+ )
8
10
  end
9
11
 
10
12
  subject { described_class.generate(definition) }
11
13
 
12
14
  its(:ancestors) { should include(BinData::Record) }
13
- its("new.record_type") { should eq(:file_id) }
15
+ its('new.record_type') { should eq(:file_id) }
14
16
  end
15
17
 
16
18
  context 'definition with multiple time the same field' do
@@ -18,7 +20,9 @@ describe FitParser::File::Data do
18
20
  @fields = FitParser::File::Definitions.fields
19
21
  @dyn_fields = FitParser::File::Definitions.dyn_fields
20
22
  # force a fake definition for scaling of arrays
21
- FitParser::File::Definitions.add_field 2, 2, "field_array", :type => 6, :scale => 10, :offset => 0
23
+ FitParser::File::Definitions.add_field(
24
+ 2, 2, 'field_array', type: 6, scale: 10, offset: 0
25
+ )
22
26
  end
23
27
 
24
28
  after :all do
@@ -29,30 +33,32 @@ describe FitParser::File::Data do
29
33
  before :each do
30
34
  def_file = example_file('record/message/definition_field_array.fit')
31
35
  data_file = example_file('record/message/data_field_array.fit')
32
- definition = described_class.generate(FitParser::File::Definition.read def_file)
33
- @result = definition.read( data_file )
36
+ definition = described_class.generate(
37
+ FitParser::File::Definition.read(def_file)
38
+ )
39
+ @result = definition.read(data_file)
34
40
  end
35
41
 
36
- it "reads the entire record" do
42
+ it 'reads the entire record' do
37
43
  # read first the record definition
38
- expect(@result.raw_field_array).to be == [ 123456789, 987654321 ]
39
- expect(@result.raw_field_4).to be == [ 1, 3 ]
44
+ expect(@result.raw_field_array).to be == [123_456_789, 987_654_321]
45
+ expect(@result.raw_field_4).to be == [1, 3]
40
46
  expect(@result.raw_field_8).to be == 1539
41
47
  expect(@result.raw_active_time_zone).to be == 0
42
48
  end
43
-
44
- it "does not apply the scale equal to 1 for integer" do
49
+
50
+ it 'does not apply the scale equal to 1 for integer' do
45
51
  expect(@result.raw_active_time_zone).to be == 0
46
52
  expect(@result.active_time_zone.to_s).to be_eql '0'
47
53
  end
48
-
49
- it "does not apply the scale equal to 1 for arrays" do
50
- expect(@result.raw_field_4).to be == [ 1, 3 ]
51
- expect(@result.field_4.to_s).to be_eql '[1, 3]'
54
+
55
+ it 'does not apply the scale equal to 1 for arrays' do
56
+ expect(@result.raw_field_4).to be == [1, 3]
57
+ expect(@result.field_4.to_s).to be_eql('[1, 3]')
52
58
  end
53
59
 
54
- it "does apply scale on each element of an array" do
55
- expect(@result.raw_field_array).to be == [ 123456789, 987654321 ]
60
+ it 'does apply scale on each element of an array' do
61
+ expect(@result.raw_field_array).to be == [123_456_789, 987_654_321]
56
62
  expect(@result.field_array.to_s).to be_eql '[12345678.9, 98765432.1]'
57
63
  end
58
64
  end
@@ -61,8 +67,10 @@ describe FitParser::File::Data do
61
67
  before :each do
62
68
  def_file = example_file('record/message/definition_dynamic_fields.fit')
63
69
  data_file = example_file('record/message/data_dynamic_fields.fit')
64
- definition = described_class.generate(FitParser::File::Definition.read def_file)
65
- @result = definition.read( data_file )
70
+ definition = described_class.generate(
71
+ FitParser::File::Definition.read(def_file)
72
+ )
73
+ @result = definition.read(data_file)
66
74
  end
67
75
 
68
76
  it 'uses dynamic field value' do
@@ -75,8 +83,10 @@ describe FitParser::File::Data do
75
83
  before :each do
76
84
  def_file = example_file('record/message/definition_dynamic_fields.fit')
77
85
  data_file = example_file('record/message/data_dynamic_fields.fit')
78
- definition = described_class.generate(FitParser::File::Definition.read def_file)
79
- @result = definition.read( data_file )
86
+ definition = described_class.generate(
87
+ FitParser::File::Definition.read(def_file)
88
+ )
89
+ @result = definition.read(data_file)
80
90
  end
81
91
 
82
92
  it 'returns the real value' do
@@ -87,13 +97,19 @@ describe FitParser::File::Data do
87
97
 
88
98
  context 'definition with bit field types' do
89
99
  before :each do
90
- def_file = example_file('record/message/definition_file_capabilities.fit')
91
- @definition = described_class.generate(FitParser::File::Definition.read def_file)
100
+ def_file = example_file(
101
+ 'record/message/definition_file_capabilities.fit'
102
+ )
103
+ @definition = described_class.generate(
104
+ FitParser::File::Definition.read(def_file)
105
+ )
92
106
  end
93
107
 
94
108
  context 'when only 1 bit set' do
95
109
  it 'returns the single value' do
96
- res = @definition.read( example_file('record/message/data_file_capabilities_activities.fit') )
110
+ res = @definition.read(
111
+ example_file('record/message/data_file_capabilities_activities.fit')
112
+ )
97
113
  expect(res.raw_flags).to eq(2)
98
114
  expect(res.flags).to eq('read')
99
115
  end
@@ -101,7 +117,9 @@ describe FitParser::File::Data do
101
117
 
102
118
  context 'when several bits set' do
103
119
  it 'returns the compound value' do
104
- res = @definition.read( example_file('record/message/data_file_capabilities_settings.fit') )
120
+ res = @definition.read(
121
+ example_file('record/message/data_file_capabilities_settings.fit')
122
+ )
105
123
  expect(res.raw_flags).to eq(6)
106
124
  expect(res.flags).to eq('read/write')
107
125
  end
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe FitParser::File::Definition do
4
- context "given a sample definition message" do
5
- describe ".read" do
4
+ context 'given a sample definition message' do
5
+ describe '.read' do
6
6
  subject do
7
7
  described_class.read example_file('record/message/definition')
8
8
  end
@@ -4,7 +4,7 @@ require 'spec_helper'
4
4
  # with already defined fields in definitions.rb and test are
5
5
  # not really independant of the code
6
6
  describe FitParser::File::Definitions do
7
- describe ".add_field" do
7
+ describe '.add_field' do
8
8
  before :all do
9
9
  @fields = described_class.fields
10
10
  @dyn_fields = described_class.dyn_fields
@@ -15,16 +15,16 @@ describe FitParser::File::Definitions do
15
15
  FitParser::File::Definitions.dyn_fields = @dyn_fields
16
16
  end
17
17
 
18
- context "without additional options" do
18
+ context 'without additional options' do
19
19
  before :each do
20
20
  FitParser::File::Definitions.fields = Hash.new { |h,k| h[k]={} }
21
21
  FitParser::File::Definitions.dyn_fields = Hash.new { |h,k| h[k]={} }
22
22
  described_class.add_field(999, 999, 'rspec_test')
23
23
  end
24
24
 
25
- it "adds field data" do
26
- expect(described_class.get_field(999,999)).to be_a(Hash)
27
- expect(described_class.get_field(999,999)).to eql({ :name => 'rspec_test'})
25
+ it 'adds field data' do
26
+ expect(described_class.get_field(999, 999)).to be_a(Hash)
27
+ expect(described_class.get_field(999, 999)).to eql(name: 'rspec_test')
28
28
  end
29
29
 
30
30
  it 'raised an error for dynamic field data' do
@@ -32,29 +32,29 @@ describe FitParser::File::Definitions do
32
32
  end
33
33
  end
34
34
 
35
- context "with additional options" do
35
+ context 'with additional options' do
36
36
  before :each do
37
- FitParser::File::Definitions.fields = Hash.new { |h,k| h[k]={} }
38
- FitParser::File::Definitions.dyn_fields = Hash.new { |h,k| h[k]={} }
39
- described_class.add_field(999, 999, 'rspec_test', :scale => 100, :units => 'm')
40
- described_class.add_field(999, 999, 'rspec_test_dyn', :type => 4, :scale => 10, :offset => 10, :ref_field_name => nil, :ref_field_values => nil)
37
+ FitParser::File::Definitions.fields = Hash.new { |h, k| h[k] = {} }
38
+ FitParser::File::Definitions.dyn_fields = Hash.new { |h, k| h[k] = {} }
39
+ described_class.add_field(999, 999, 'rspec_test', scale: 100, units: 'm')
40
+ described_class.add_field(999, 999, 'rspec_test_dyn', type: 4, scale: 10, offset: 10, ref_field_name: nil, ref_field_values: nil)
41
41
  end
42
42
 
43
- it "adds field data" do
43
+ it 'adds field data' do
44
44
  expect(described_class.get_field(999, 999)).to be_a(Hash)
45
- expect(described_class.get_field(999, 999)).to eql({ :name => 'rspec_test', :scale => 100, :units => 'm'})
45
+ expect(described_class.get_field(999, 999)).to eql(name: 'rspec_test', scale: 100, units: 'm')
46
46
  end
47
-
47
+
48
48
  it 'adds dynamic field data' do
49
49
  expect(described_class.get_dynamic_fields(999, 999)).to be_a(Hash)
50
- expect(described_class.get_dynamic_fields(999, 999)).to eql({ :rspec_test_dyn => {:type => 4, :scale => 10, :offset => 10, :ref_field_name => nil, :ref_field_values => nil} })
50
+ expect(described_class.get_dynamic_fields(999, 999)).to eql(rspec_test_dyn: { type: 4, scale: 10, offset: 10, ref_field_name: nil, ref_field_values: nil })
51
51
  end
52
52
  end
53
53
  end
54
54
 
55
- describe ".get_field" do
56
- it "returns nil if no field exists" do
57
- expect(described_class.get_field(100,101)).to be_nil
55
+ describe '.get_field' do
56
+ it 'returns nil if no field exists' do
57
+ expect(described_class.get_field(100, 101)).to be_nil
58
58
  end
59
59
  end
60
60
 
@@ -65,15 +65,15 @@ describe FitParser::File::Definitions do
65
65
  end
66
66
  end
67
67
 
68
- describe ".add_name" do
69
- it "adds a name" do
68
+ describe '.add_name' do
69
+ it 'adds a name' do
70
70
  described_class.add_name(20, 'record')
71
71
  expect(described_class.get_name(20)).to eql('record')
72
72
  end
73
73
  end
74
74
 
75
- describe ".get_name" do
76
- it "returns nil if no name exists" do
75
+ describe '.get_name' do
76
+ it 'returns nil if no name exists' do
77
77
  expect(described_class.get_name(100)).to be_nil
78
78
  end
79
79
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe FitParser::File::Header do
4
- context "given a sample FIT header" do
4
+ context 'given a sample FIT header' do
5
5
  subject do
6
6
  described_class.read example_file('file/header')
7
7
  end
@@ -9,11 +9,11 @@ describe FitParser::File::Header do
9
9
  its(:header_size) { should == 12 }
10
10
  its(:protocol_version) { should == 16 }
11
11
  its(:profile_version) { should == 64 }
12
- its(:data_size) { should == 36069 }
13
- its(:data_type) { should == ".FIT" }
12
+ its(:data_size) { should == 36_069 }
13
+ its(:data_type) { should == '.FIT' }
14
14
  end
15
15
 
16
- context "given a sample header file of 14 bytes length" do
16
+ context 'given a sample header file of 14 bytes length' do
17
17
  subject do
18
18
  described_class.read example_file('file/header_14b.fit')
19
19
  end
@@ -22,7 +22,7 @@ describe FitParser::File::Header do
22
22
  its(:protocol_version) { should == 16 }
23
23
  its(:profile_version) { should == 411 }
24
24
  its(:data_size) { should == 325 }
25
- its(:data_type) { should == ".FIT" }
26
- its(:crc) { should == 17101 }
25
+ its(:data_type) { should == '.FIT' }
26
+ its(:crc) { should == 17_101 }
27
27
  end
28
28
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe FitParser::File::RecordHeader do
4
- context "given a sample normal header" do
4
+ context 'given a sample normal header' do
5
5
  subject do
6
6
  described_class.read example_file('record/normal_header')
7
7
  end
@@ -14,7 +14,7 @@ describe FitParser::File::RecordHeader do
14
14
  it { is_expected.not_to be_a_compressed_timestamp }
15
15
  end
16
16
 
17
- context "given a sample compressed timestamp header" do
17
+ context 'given a sample compressed timestamp header' do
18
18
  # TODO
19
19
  end
20
20
  end
@@ -1,56 +1,45 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe FitParser::File::Record do
4
- before do
5
- described_class.clear_definitions!
6
- described_class.read(example_file('record/definition_record_2.fit'))
7
- end
8
-
9
- describe ".read" do
10
- subject { described_class.read(file) }
11
-
12
- context "given a sample definition record" do
13
- let(:file) { example_file('record/definition_record') }
14
-
15
- it { expect(subject.header).to be_a FitParser::File::RecordHeader }
16
- it { expect(subject.content).to be_a FitParser::File::Definition }
17
-
18
- end
19
-
20
- context "given a sample data record" do
21
- let(:file) { nil }
4
+ describe '#read' do
5
+ context 'given a sample definition record' do
6
+ it 'works' do
7
+ record = described_class.new({})
8
+ file = example_file('record/definition_record')
9
+ record.read(file)
10
+ expect(record.header).to be_a(FitParser::File::RecordHeader)
11
+ expect(record.content).to be_a(FitParser::File::Definition)
12
+ end
22
13
  end
23
-
24
- context "given a sample data record with a string non null terminated" do
25
14
 
15
+ context 'given a sample data record with a string non null terminated' do
26
16
  context 'string length is equal to field size' do
27
-
28
- let(:file) { example_file('record/data_record_2.fit') }
29
-
30
- its(:header) { should be_a(FitParser::File::RecordHeader) }
31
- it { expect(subject.content.raw_version).to be == 250 }
32
- it { expect(subject.content.raw_part_number).to be == '123-A1234-00' }
17
+ it 'works' do
18
+ record = described_class.new({})
19
+ record.read(example_file('record/definition_record_2.fit'))
20
+ definitions = record.definitions
21
+ file = example_file('record/data_record_2.fit')
22
+ record = described_class.new(definitions).read(file)
23
+ expect(record.header).to be_a(FitParser::File::RecordHeader)
24
+ expect(record.content.raw_version).to eql(250)
25
+ expect(record.content.raw_part_number).to eql('123-A1234-00')
26
+ end
33
27
  end
34
28
 
35
- context 'string length is smaller than field size' do
36
-
37
- let(:file) { example_file('record/data_record_2bis.fit') }
38
-
39
- its(:header) { should be_a(FitParser::File::RecordHeader) }
40
- it { expect(subject.content.raw_version).to be == 251 }
41
- it { expect(subject.content.version).to be == 2.51 }
42
- it { expect(subject.content.raw_part_number).to be == '123-A1234' }
43
- it { expect(subject.content.part_number).to be == '123-A1234' }
29
+ context 'string length is smaller than field size' do
30
+ it 'works' do
31
+ record = described_class.new({})
32
+ record.read(example_file('record/definition_record_2.fit'))
33
+ definitions = record.definitions
34
+ file = example_file('record/data_record_2bis.fit')
35
+ record = described_class.new(definitions).read(file)
36
+ expect(record.header).to be_a(FitParser::File::RecordHeader)
37
+ expect(record.content.raw_version).to eql(251)
38
+ expect(record.content.version).to eql(2.51)
39
+ expect(record.content.raw_part_number).to eql('123-A1234')
40
+ expect(record.content.part_number).to eql('123-A1234')
41
+ end
44
42
  end
45
43
  end
46
44
  end
47
-
48
- describe ".clear_definitions" do
49
- it "should clear the definitions class variable" do
50
- described_class.read example_file('record/definition_record')
51
- expect(described_class.definitions).to_not be_empty
52
- described_class.clear_definitions!
53
- expect(described_class.definitions).to be_empty
54
- end
55
- end
56
45
  end
@@ -4,7 +4,11 @@ describe FitParser::File::Type do
4
4
  before :all do
5
5
  @types = FitParser::File::Types.types
6
6
  FitParser::File::Types.add_type(:int_type, :sint8)
7
- FitParser::File::Types.add_type(:int_type_with_val, :uint8, :values => {1 => 'one', 2 => 'two', 3 => 'three'})
7
+ FitParser::File::Types.add_type(
8
+ :int_type_with_val,
9
+ :uint8,
10
+ values: { 1 => 'one', 2 => 'two', 3 => 'three' }
11
+ )
8
12
  end
9
13
 
10
14
  after :all do
@@ -14,11 +18,13 @@ describe FitParser::File::Type do
14
18
  describe '.get_type' do
15
19
  context 'when valid name' do
16
20
  it 'returns a type' do
17
- expect(described_class.get_type(:int_type)).to be_a(FitParser::File::Type)
21
+ expect(described_class.get_type(:int_type))
22
+ .to be_a(FitParser::File::Type)
18
23
  end
19
24
 
20
25
  it 'returns always the same instance' do
21
- expect(described_class.get_type(:int_type)).to equal described_class.get_type(:int_type)
26
+ expect(described_class.get_type(:int_type))
27
+ .to eql(described_class.get_type(:int_type))
22
28
  end
23
29
  end
24
30
 
@@ -31,7 +37,6 @@ describe FitParser::File::Type do
31
37
 
32
38
  describe '#value' do
33
39
  context 'when type has values' do
34
-
35
40
  let(:type) { described_class.get_type(:int_type_with_val) }
36
41
 
37
42
  context 'known value requested' do
@@ -39,7 +44,7 @@ describe FitParser::File::Type do
39
44
  expect(type.value(2)).to eql 'two'
40
45
  end
41
46
  end
42
-
47
+
43
48
  context 'unknown value requested' do
44
49
  it 'returns the input value' do
45
50
  expect(type.value(999)).to eql 999
@@ -57,19 +62,18 @@ describe FitParser::File::Type do
57
62
  context 'when type has date_time value' do
58
63
  let(:type) { described_class.get_type(:date_time) }
59
64
  it 'returns the date' do
60
- expect(type.value(790509304)).to eq('2015-01-18 09:55:04 UTC')
65
+ expect(type.value(790_509_304)).to eq('2015-01-18 09:55:04 UTC')
61
66
  end
62
67
  end
63
68
 
64
69
  context 'when type has message_index value' do
65
70
  let(:type) { described_class.get_type(:message_index) }
66
-
71
+
67
72
  it 'returns the message_index' do
68
73
  expect(type.value(10)).to eq(10)
69
- expect(type.value(32778)).to eq(10)
70
- expect(type.value(28682)).to eq(10)
71
- end
72
-
74
+ expect(type.value(32_778)).to eq(10)
75
+ expect(type.value(28_682)).to eq(10)
76
+ end
73
77
  end
74
78
 
75
79
  context 'when type has file_flags value' do
@@ -11,14 +11,15 @@ describe FitParser::File::Types do
11
11
 
12
12
  describe '.add_type' do
13
13
  before :each do
14
- FitParser::File::Types.types = Hash.new { |h,k| h[k]={} }
14
+ FitParser::File::Types.types = Hash.new { |h, k| h[k] = {} }
15
15
  end
16
16
 
17
17
  context 'for enum type' do
18
18
  it 'add enum data' do
19
- val = {:values => { 1 => 'val1', 2=> 'val2', 3 => 'val3'}}
19
+ val = { values: { 1 => 'val1', 2 => 'val2', 3 => 'val3' } }
20
20
  described_class.add_type(:test_enum, :enum, val)
21
- expect(described_class.get_type_definition(:test_enum)).to eql val.merge({:basic_type => :enum})
21
+ expect(described_class.get_type_definition(:test_enum))
22
+ .to eql(val.merge(basic_type: :enum))
22
23
  end
23
24
  end
24
25
  end
@@ -28,34 +29,40 @@ describe FitParser::File::Types do
28
29
  expect(described_class.get_type_definition(:rspec_unknown)).to be_nil
29
30
  end
30
31
  end
31
-
32
+
32
33
  describe '.date_time_value' do
33
34
  context 'wen value below min' do
34
35
  it 'returns system time in second' do
35
- expect(described_class.date_time_value(9999, {268435456 => 'min'}, {:utc => true})).to eql '9999'
36
- expect(described_class.date_time_value(9999, {268435456 => 'min'}, {:utc => false})).to eql '9999'
36
+ values = [9999, { 268_435_456 => 'min' }, utc: true]
37
+ expect(described_class.date_time_value(*values)).to eql('9999')
38
+ values = [9999, { 268_435_456 => 'min' }, utc: false]
39
+ expect(described_class.date_time_value(*values)).to eql('9999')
37
40
  end
38
41
  end
39
42
 
40
43
  context 'when value is above min' do
41
44
  context 'with UTC mode' do
42
45
  it 'returns exact date UTC' do
43
- expect(described_class.date_time_value(790509304, {268435456 => 'min'}, {:utc => true})).to eql '2015-01-18 09:55:04 UTC'
46
+ values = [790_509_304, { 268_435_456 => 'min' }, utc: true]
47
+ expect(described_class.date_time_value(*values))
48
+ .to eql('2015-01-18 09:55:04 UTC')
44
49
  end
45
50
  end
46
-
51
+
47
52
  context 'with local mode' do
48
53
  it 'returns exact date in locale time zone' do
49
54
  # TODO: manage answer based on current system local
50
- expect(described_class.date_time_value(790509304, {268435456 => 'min'}, {:utc => false})).not_to match(/UTC$/)
55
+ values = [790_509_304, { 268_435_456 => 'min' }, utc: false]
56
+ expect(described_class.date_time_value(*values)).not_to match(/UTC$/)
51
57
  end
52
58
  end
53
-
54
59
  end
55
60
  end
56
61
 
57
62
  describe '.message_index_value' do
58
- let(:values) { {32768 => 'selected', 28672 => 'reserved', 4095 => 'mask' } }
63
+ let(:values) do
64
+ { 32_768 => 'selected', 28_672 => 'reserved', 4095 => 'mask' }
65
+ end
59
66
 
60
67
  context 'when value is not reserved or selected' do
61
68
  it 'returns the message index' do
@@ -65,20 +72,19 @@ describe FitParser::File::Types do
65
72
 
66
73
  context 'when value is reserved' do
67
74
  it 'returns real message index' do
68
- expect(described_class.message_index_value(28682, values)).to eq(10)
75
+ expect(described_class.message_index_value(28_682, values)).to eq(10)
69
76
  end
70
77
  end
71
78
 
72
79
  context 'when value is selected' do
73
80
  it 'returns real message index' do
74
- expect(described_class.message_index_value(32778, values)).to eq(10)
81
+ expect(described_class.message_index_value(32_778, values)).to eq(10)
75
82
  end
76
83
  end
77
-
78
84
  end
79
85
 
80
86
  describe '.bitfield_value' do
81
- let(:values) { {0x02 => 'read', 0x04 => 'write', 0x08 => 'erase'} }
87
+ let(:values) { { 0x02 => 'read', 0x04 => 'write', 0x08 => 'erase' } }
82
88
 
83
89
  context 'when value is a single bit' do
84
90
  it 'returns the single value' do
@@ -95,6 +101,4 @@ describe FitParser::File::Types do
95
101
  end
96
102
  end
97
103
  end
98
-
99
104
  end
100
-
@@ -1,10 +1,23 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe FitParser do
4
- describe "VERSION" do
4
+ describe 'VERSION' do
5
5
  subject{ FitParser::VERSION }
6
6
 
7
7
  it { is_expected.to be_a(String) }
8
8
  it { is_expected.to match(/\d{1,2}\.\d{1,2}\.\d{1,2}/) }
9
9
  end
10
+
11
+ describe '.load_file' do
12
+ it 'works with threads' do
13
+ threads = []
14
+ %w(3863374146 3110334490).each do |file|
15
+ threads << Thread.new(file) do |el|
16
+ data = FitParser.load_file("spec/support/examples/file/#{el}")
17
+ expect(data.records).to_not be_nil
18
+ end
19
+ end
20
+ threads.each { |thread| thread.join }
21
+ end
22
+ end
10
23
  end