tdms 0.1.0
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.
- checksums.yaml +7 -0
- data/.travis.yml +10 -0
- data/LICENSE.txt +25 -0
- data/README.md +34 -0
- data/Rakefile +15 -0
- data/demo.rb +16 -0
- data/doc/data_types.txt +23 -0
- data/doc/example_disasm.txt +47 -0
- data/doc/tdms_format.txt +101 -0
- data/doc/usage.txt +46 -0
- data/lib/tdms.rb +8 -0
- data/lib/tdms/aggregate.rb +71 -0
- data/lib/tdms/channel.rb +100 -0
- data/lib/tdms/datatypes.rb +173 -0
- data/lib/tdms/document.rb +114 -0
- data/lib/tdms/path.rb +58 -0
- data/lib/tdms/property.rb +17 -0
- data/lib/tdms/segment.rb +12 -0
- data/lib/tdms/streaming.rb +82 -0
- data/test/build_fixtures/README.txt +25 -0
- data/test/build_fixtures/type_01_int8_one_segment.vi +0 -0
- data/test/build_fixtures/type_01_int8_three_segments.vi +0 -0
- data/test/build_fixtures/type_01_int8_two_channels_one_segment.vi +0 -0
- data/test/build_fixtures/type_02_int16_one_segment.vi +0 -0
- data/test/build_fixtures/type_02_int16_three_segments.vi +0 -0
- data/test/build_fixtures/type_02_int16_two_channels_one_segment.vi +0 -0
- data/test/build_fixtures/type_03_int32_one_segment.vi +0 -0
- data/test/build_fixtures/type_03_int32_three_segments.vi +0 -0
- data/test/build_fixtures/type_03_int32_two_channels_one_segment.vi +0 -0
- data/test/build_fixtures/type_04_int64_one_segment.vi +0 -0
- data/test/build_fixtures/type_04_int64_three_segments.vi +0 -0
- data/test/build_fixtures/type_04_int64_two_channels_one_segment.vi +0 -0
- data/test/build_fixtures/type_05_uint8_one_segment.vi +0 -0
- data/test/build_fixtures/type_05_uint8_three_segments.vi +0 -0
- data/test/build_fixtures/type_05_uint8_two_channels_one_segment.vi +0 -0
- data/test/build_fixtures/type_06_uint16_one_segment.vi +0 -0
- data/test/build_fixtures/type_06_uint16_three_segments.vi +0 -0
- data/test/build_fixtures/type_06_uint16_two_channels_one_segment.vi +0 -0
- data/test/build_fixtures/type_07_uint32_one_segment.vi +0 -0
- data/test/build_fixtures/type_07_uint32_three_segments.vi +0 -0
- data/test/build_fixtures/type_07_uint32_two_channels_one_segment.vi +0 -0
- data/test/build_fixtures/type_08_uint64_one_segment.vi +0 -0
- data/test/build_fixtures/type_08_uint64_three_segments.vi +0 -0
- data/test/build_fixtures/type_08_uint64_two_channels_one_segment.vi +0 -0
- data/test/build_fixtures/type_09_single_one_segment.vi +0 -0
- data/test/build_fixtures/type_09_single_three_segments.vi +0 -0
- data/test/build_fixtures/type_09_single_two_channels_one_segment.vi +0 -0
- data/test/build_fixtures/type_0a_double_one_segment.vi +0 -0
- data/test/build_fixtures/type_0a_double_three_segments.vi +0 -0
- data/test/build_fixtures/type_0a_double_two_channels_one_segment.vi +0 -0
- data/test/build_fixtures/type_20_string_one_segment.vi +0 -0
- data/test/build_fixtures/type_20_string_three_segments.vi +0 -0
- data/test/build_fixtures/type_20_string_two_channels_one_segment.vi +0 -0
- data/test/build_fixtures/type_21_boolean_one_segment.vi +0 -0
- data/test/build_fixtures/type_21_boolean_three_segments.vi +0 -0
- data/test/build_fixtures/type_21_boolean_two_channels_one_segment.vi +0 -0
- data/test/build_fixtures/type_44_datetime_one_segment.vi +0 -0
- data/test/build_fixtures/type_44_timestamp_three_segments.vi +0 -0
- data/test/build_fixtures/type_44_timestamp_two_channels_one_segment.vi +0 -0
- data/test/fixtures/example.tdms +0 -0
- data/test/fixtures/type_01_int8_one_segment.tdms +0 -0
- data/test/fixtures/type_01_int8_three_segments.tdms +0 -0
- data/test/fixtures/type_01_int8_two_channels_one_segment.tdms +0 -0
- data/test/fixtures/type_02_int16_one_segment.tdms +0 -0
- data/test/fixtures/type_02_int16_three_segments.tdms +0 -0
- data/test/fixtures/type_02_int16_two_channels_one_segment.tdms +0 -0
- data/test/fixtures/type_03_int32_one_segment.tdms +0 -0
- data/test/fixtures/type_03_int32_three_segments.tdms +0 -0
- data/test/fixtures/type_03_int32_two_channels_one_segment.tdms +0 -0
- data/test/fixtures/type_04_int64_one_segment.tdms +0 -0
- data/test/fixtures/type_04_int64_three_segments.tdms +0 -0
- data/test/fixtures/type_04_int64_two_channels_one_segment.tdms +0 -0
- data/test/fixtures/type_05_uint8_one_segment.tdms +0 -0
- data/test/fixtures/type_05_uint8_three_segments.tdms +0 -0
- data/test/fixtures/type_05_uint8_two_channels_one_segment.tdms +0 -0
- data/test/fixtures/type_06_uint16_one_segment.tdms +0 -0
- data/test/fixtures/type_06_uint16_three_segments.tdms +0 -0
- data/test/fixtures/type_06_uint16_two_channels_one_segment.tdms +0 -0
- data/test/fixtures/type_07_uint32_one_segment.tdms +0 -0
- data/test/fixtures/type_07_uint32_three_segments.tdms +0 -0
- data/test/fixtures/type_07_uint32_two_channels_one_segment.tdms +0 -0
- data/test/fixtures/type_08_uint64_one_segment.tdms +0 -0
- data/test/fixtures/type_08_uint64_three_segments.tdms +0 -0
- data/test/fixtures/type_08_uint64_two_channels_one_segment.tdms +0 -0
- data/test/fixtures/type_09_single_one_segment.tdms +0 -0
- data/test/fixtures/type_09_single_three_segments.tdms +0 -0
- data/test/fixtures/type_09_single_two_channels_one_segment.tdms +0 -0
- data/test/fixtures/type_0a_double_one_segment.tdms +0 -0
- data/test/fixtures/type_0a_double_three_segments.tdms +0 -0
- data/test/fixtures/type_0a_double_two_channels_one_segment.tdms +0 -0
- data/test/fixtures/type_19_single_with_unit_one_segment.tdms +0 -0
- data/test/fixtures/type_19_single_with_unit_three_segments.tdms +0 -0
- data/test/fixtures/type_19_single_with_unit_two_channels_one_segment.tdms +0 -0
- data/test/fixtures/type_1a_double_with_unit_one_segment.tdms +0 -0
- data/test/fixtures/type_1a_double_with_unit_three_segments.tdms +0 -0
- data/test/fixtures/type_1a_double_with_unit_two_channels_one_segment.tdms +0 -0
- data/test/fixtures/type_20_double_two_channels_one_segment.tdms +0 -0
- data/test/fixtures/type_20_string_one_segment.tdms +0 -0
- data/test/fixtures/type_20_string_three_segments.tdms +0 -0
- data/test/fixtures/type_20_string_two_channels_one_segment.tdms +0 -0
- data/test/fixtures/type_20_string_two_segments.tdms +0 -0
- data/test/fixtures/type_21_boolean_one_segment.tdms +0 -0
- data/test/fixtures/type_21_boolean_three_segments.tdms +0 -0
- data/test/fixtures/type_21_boolean_two_channels_one_segment.tdms +0 -0
- data/test/fixtures/type_44_timestamp_one_segment.tdms +0 -0
- data/test/fixtures/type_44_timestamp_three_segments.tdms +0 -0
- data/test/fixtures/type_44_timestamp_two_channels_one_segment.tdms +0 -0
- data/test/read_type_01_int8_test.rb +58 -0
- data/test/read_type_02_int16_test.rb +58 -0
- data/test/read_type_03_int32_test.rb +58 -0
- data/test/read_type_04_int64_test.rb +64 -0
- data/test/read_type_05_uint8_test.rb +56 -0
- data/test/read_type_06_uint16_test.rb +58 -0
- data/test/read_type_07_uint32_test.rb +58 -0
- data/test/read_type_08_uint64_test.rb +58 -0
- data/test/read_type_09_single_test.rb +58 -0
- data/test/read_type_0a_double_test.rb +58 -0
- data/test/read_type_19_single_with_unit_test.rb +58 -0
- data/test/read_type_1a_double_with_unit_test.rb +58 -0
- data/test/read_type_20_string_test.rb +60 -0
- data/test/read_type_21_boolean_test.rb +56 -0
- data/test/read_type_44_timestamp_test.rb +60 -0
- data/test/test_helper.rb +9 -0
- metadata +284 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
class ReadType05Uint8Test < Test::Unit::TestCase
|
|
2
|
+
|
|
3
|
+
def test_reads_one_uint8_channel_in_one_segment
|
|
4
|
+
filename = fixture_filename("type_05_uint8_one_segment")
|
|
5
|
+
doc = Tdms::File.parse(filename)
|
|
6
|
+
|
|
7
|
+
assert_equal 1, doc.segments.size
|
|
8
|
+
assert_equal 1, doc.segments[0].objects.size
|
|
9
|
+
assert_equal Tdms::DataType::Uint8::Id, doc.segments[0].objects[0].data_type_id
|
|
10
|
+
|
|
11
|
+
chan = doc.channels.find {|ch| ch.path == "/'uint8_group'/'uint8_channel'" }
|
|
12
|
+
assert_equal 5, chan.values.size
|
|
13
|
+
|
|
14
|
+
expected = [0, 1, 62, 127, 255]
|
|
15
|
+
assert_equal expected, chan.values.to_a
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_reads_two_uint8_channels_in_one_segment
|
|
19
|
+
filename = fixture_filename("type_05_uint8_two_channels_one_segment")
|
|
20
|
+
doc = Tdms::File.parse(filename)
|
|
21
|
+
|
|
22
|
+
assert_equal 1, doc.segments.size
|
|
23
|
+
assert_equal 2, doc.segments[0].objects.size
|
|
24
|
+
assert_equal Tdms::DataType::Uint8::Id, doc.segments[0].objects[0].data_type_id
|
|
25
|
+
assert_equal Tdms::DataType::Uint8::Id, doc.segments[0].objects[1].data_type_id
|
|
26
|
+
|
|
27
|
+
chan = doc.channels.find {|ch| ch.path == "/'uint8_group'/'uint8_channel_a'" }
|
|
28
|
+
assert_equal 5, chan.values.size
|
|
29
|
+
expected = [0, 1, 62, 127, 255]
|
|
30
|
+
assert_equal expected, chan.values.to_a
|
|
31
|
+
|
|
32
|
+
chan = doc.channels.find {|ch| ch.path == "/'uint8_group'/'uint8_channel_b'" }
|
|
33
|
+
assert_equal 5, chan.values.size
|
|
34
|
+
expected = [255, 127, 62, 1, 0]
|
|
35
|
+
assert_equal expected, chan.values.to_a
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_reads_one_uint8_channel_across_three_segments
|
|
39
|
+
filename = fixture_filename("type_05_uint8_three_segments")
|
|
40
|
+
doc = Tdms::File.parse(filename)
|
|
41
|
+
|
|
42
|
+
assert_equal 3, doc.segments.size
|
|
43
|
+
assert_equal 1, doc.segments[0].objects.size
|
|
44
|
+
assert_equal 1, doc.segments[1].objects.size
|
|
45
|
+
assert_equal 1, doc.segments[2].objects.size
|
|
46
|
+
assert_equal Tdms::DataType::Uint8::Id, doc.segments[0].objects[0].data_type_id
|
|
47
|
+
assert_equal Tdms::DataType::Uint8::Id, doc.segments[1].objects[0].data_type_id
|
|
48
|
+
assert_equal Tdms::DataType::Uint8::Id, doc.segments[2].objects[0].data_type_id
|
|
49
|
+
|
|
50
|
+
chan = doc.channels.find {|ch| ch.path == "/'uint8_group'/'uint8_channel'" }
|
|
51
|
+
assert_equal 15, chan.values.size
|
|
52
|
+
expected = [0, 1, 62, 127, 255, 0, 1, 62, 127, 255, 0, 1, 62, 127, 255]
|
|
53
|
+
assert_equal expected, chan.values.to_a
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
class ReadType06Uint16Test < Test::Unit::TestCase
|
|
2
|
+
|
|
3
|
+
def test_reads_one_uint16_channel_in_one_segment
|
|
4
|
+
filename = fixture_filename("type_06_uint16_one_segment")
|
|
5
|
+
doc = Tdms::File.parse(filename)
|
|
6
|
+
|
|
7
|
+
assert_equal 1, doc.segments.size
|
|
8
|
+
assert_equal 1, doc.segments[0].objects.size
|
|
9
|
+
assert_equal Tdms::DataType::Uint16::Id, doc.segments[0].objects[0].data_type_id
|
|
10
|
+
|
|
11
|
+
chan = doc.channels.find {|ch| ch.path == "/'uint16_group'/'uint16_channel'" }
|
|
12
|
+
assert_equal 5, chan.values.size
|
|
13
|
+
|
|
14
|
+
expected = [0, 1, 16_383, 32_767, 65_535]
|
|
15
|
+
assert_equal expected, chan.values.to_a
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_reads_two_uint16_channels_in_one_segment
|
|
19
|
+
filename = fixture_filename("type_06_uint16_two_channels_one_segment")
|
|
20
|
+
doc = Tdms::File.parse(filename)
|
|
21
|
+
|
|
22
|
+
assert_equal 1, doc.segments.size
|
|
23
|
+
assert_equal 2, doc.segments[0].objects.size
|
|
24
|
+
assert_equal Tdms::DataType::Uint16::Id, doc.segments[0].objects[0].data_type_id
|
|
25
|
+
assert_equal Tdms::DataType::Uint16::Id, doc.segments[0].objects[1].data_type_id
|
|
26
|
+
|
|
27
|
+
chan = doc.channels.find {|ch| ch.path == "/'uint16_group'/'uint16_channel_a'" }
|
|
28
|
+
assert_equal 5, chan.values.size
|
|
29
|
+
expected = [0, 1, 16_383, 32_767, 65_535]
|
|
30
|
+
assert_equal expected, chan.values.to_a
|
|
31
|
+
|
|
32
|
+
chan = doc.channels.find {|ch| ch.path == "/'uint16_group'/'uint16_channel_b'" }
|
|
33
|
+
assert_equal 5, chan.values.size
|
|
34
|
+
expected = [65_535, 32_767, 16_383, 1, 0]
|
|
35
|
+
assert_equal expected, chan.values.to_a
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_reads_one_uint16_channel_across_three_segments
|
|
39
|
+
filename = fixture_filename("type_06_uint16_three_segments")
|
|
40
|
+
doc = Tdms::File.parse(filename)
|
|
41
|
+
|
|
42
|
+
assert_equal 3, doc.segments.size
|
|
43
|
+
assert_equal 1, doc.segments[0].objects.size
|
|
44
|
+
assert_equal 1, doc.segments[1].objects.size
|
|
45
|
+
assert_equal 1, doc.segments[2].objects.size
|
|
46
|
+
assert_equal Tdms::DataType::Uint16::Id, doc.segments[0].objects[0].data_type_id
|
|
47
|
+
assert_equal Tdms::DataType::Uint16::Id, doc.segments[1].objects[0].data_type_id
|
|
48
|
+
assert_equal Tdms::DataType::Uint16::Id, doc.segments[2].objects[0].data_type_id
|
|
49
|
+
|
|
50
|
+
chan = doc.channels.find {|ch| ch.path == "/'uint16_group'/'uint16_channel'" }
|
|
51
|
+
assert_equal 15, chan.values.size
|
|
52
|
+
expected = [0, 1, 16_383, 32_767, 65_535,
|
|
53
|
+
0, 1, 16_383, 32_767, 65_535,
|
|
54
|
+
0, 1, 16_383, 32_767, 65_535]
|
|
55
|
+
assert_equal expected, chan.values.to_a
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
class ReadType07Uint32Test < Test::Unit::TestCase
|
|
2
|
+
|
|
3
|
+
def test_reads_one_uint32_channel_in_one_segment
|
|
4
|
+
filename = fixture_filename("type_07_uint32_one_segment")
|
|
5
|
+
doc = Tdms::File.parse(filename)
|
|
6
|
+
|
|
7
|
+
assert_equal 1, doc.segments.size
|
|
8
|
+
assert_equal 1, doc.segments[0].objects.size
|
|
9
|
+
assert_equal Tdms::DataType::Uint32::Id, doc.segments[0].objects[0].data_type_id
|
|
10
|
+
|
|
11
|
+
chan = doc.channels.find {|ch| ch.path == "/'uint32_group'/'uint32_channel'" }
|
|
12
|
+
assert_equal 5, chan.values.size
|
|
13
|
+
|
|
14
|
+
expected = [0, 1, 1_073_741_823, 2_147_483_647, 4_294_967_295]
|
|
15
|
+
assert_equal expected, chan.values.to_a
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_reads_two_uint32_channels_in_one_segment
|
|
19
|
+
filename = fixture_filename("type_07_uint32_two_channels_one_segment")
|
|
20
|
+
doc = Tdms::File.parse(filename)
|
|
21
|
+
|
|
22
|
+
assert_equal 1, doc.segments.size
|
|
23
|
+
assert_equal 2, doc.segments[0].objects.size
|
|
24
|
+
assert_equal Tdms::DataType::Uint32::Id, doc.segments[0].objects[0].data_type_id
|
|
25
|
+
assert_equal Tdms::DataType::Uint32::Id, doc.segments[0].objects[1].data_type_id
|
|
26
|
+
|
|
27
|
+
chan = doc.channels.find {|ch| ch.path == "/'uint32_group'/'uint32_channel_a'" }
|
|
28
|
+
assert_equal 5, chan.values.size
|
|
29
|
+
expected = [0, 1, 1_073_741_823, 2_147_483_647, 4_294_967_295]
|
|
30
|
+
assert_equal expected, chan.values.to_a
|
|
31
|
+
|
|
32
|
+
chan = doc.channels.find {|ch| ch.path == "/'uint32_group'/'uint32_channel_b'" }
|
|
33
|
+
assert_equal 5, chan.values.size
|
|
34
|
+
expected = [4_294_967_295, 2_147_483_647, 1_073_741_823, 1, 0]
|
|
35
|
+
assert_equal expected, chan.values.to_a
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_reads_one_uint32_channel_across_three_segments
|
|
39
|
+
filename = fixture_filename("type_07_uint32_three_segments")
|
|
40
|
+
doc = Tdms::File.parse(filename)
|
|
41
|
+
|
|
42
|
+
assert_equal 3, doc.segments.size
|
|
43
|
+
assert_equal 1, doc.segments[0].objects.size
|
|
44
|
+
assert_equal 1, doc.segments[1].objects.size
|
|
45
|
+
assert_equal 1, doc.segments[2].objects.size
|
|
46
|
+
assert_equal Tdms::DataType::Uint32::Id, doc.segments[0].objects[0].data_type_id
|
|
47
|
+
assert_equal Tdms::DataType::Uint32::Id, doc.segments[1].objects[0].data_type_id
|
|
48
|
+
assert_equal Tdms::DataType::Uint32::Id, doc.segments[2].objects[0].data_type_id
|
|
49
|
+
|
|
50
|
+
chan = doc.channels.find {|ch| ch.path == "/'uint32_group'/'uint32_channel'" }
|
|
51
|
+
assert_equal 15, chan.values.size
|
|
52
|
+
expected = [0, 1, 1_073_741_823, 2_147_483_647, 4_294_967_295,
|
|
53
|
+
0, 1, 1_073_741_823, 2_147_483_647, 4_294_967_295,
|
|
54
|
+
0, 1, 1_073_741_823, 2_147_483_647, 4_294_967_295]
|
|
55
|
+
assert_equal expected, chan.values.to_a
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
class ReadType08Uint64Test < Test::Unit::TestCase
|
|
2
|
+
|
|
3
|
+
def test_reads_one_uint64_channel_in_one_segment
|
|
4
|
+
filename = fixture_filename("type_08_uint64_one_segment")
|
|
5
|
+
doc = Tdms::File.parse(filename)
|
|
6
|
+
|
|
7
|
+
assert_equal 1, doc.segments.size
|
|
8
|
+
assert_equal 1, doc.segments[0].objects.size
|
|
9
|
+
assert_equal Tdms::DataType::Uint64::Id, doc.segments[0].objects[0].data_type_id
|
|
10
|
+
|
|
11
|
+
chan = doc.channels.find {|ch| ch.path == "/'uint64_group'/'uint64_channel'" }
|
|
12
|
+
assert_equal 5, chan.values.size
|
|
13
|
+
|
|
14
|
+
expected = [0, 1, 4_294_967_295, 9_223_372_036_854_775_807, 18_446_744_073_709_551_615]
|
|
15
|
+
assert_equal expected, chan.values.to_a
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_reads_two_uint64_channels_in_one_segment
|
|
19
|
+
filename = fixture_filename("type_08_uint64_two_channels_one_segment")
|
|
20
|
+
doc = Tdms::File.parse(filename)
|
|
21
|
+
|
|
22
|
+
assert_equal 1, doc.segments.size
|
|
23
|
+
assert_equal 2, doc.segments[0].objects.size
|
|
24
|
+
assert_equal Tdms::DataType::Uint64::Id, doc.segments[0].objects[0].data_type_id
|
|
25
|
+
assert_equal Tdms::DataType::Uint64::Id, doc.segments[0].objects[1].data_type_id
|
|
26
|
+
|
|
27
|
+
chan = doc.channels.find {|ch| ch.path == "/'uint64_group'/'uint64_channel_a'" }
|
|
28
|
+
assert_equal 5, chan.values.size
|
|
29
|
+
expected = [0, 1, 4_294_967_295, 9_223_372_036_854_775_807, 18_446_744_073_709_551_615]
|
|
30
|
+
assert_equal expected, chan.values.to_a
|
|
31
|
+
|
|
32
|
+
chan = doc.channels.find {|ch| ch.path == "/'uint64_group'/'uint64_channel_b'" }
|
|
33
|
+
assert_equal 5, chan.values.size
|
|
34
|
+
expected = [18_446_744_073_709_551_615, 9_223_372_036_854_775_807, 4_294_967_295, 1, 0]
|
|
35
|
+
assert_equal expected, chan.values.to_a
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_reads_one_uint64_channel_across_three_segments
|
|
39
|
+
filename = fixture_filename("type_08_uint64_three_segments")
|
|
40
|
+
doc = Tdms::File.parse(filename)
|
|
41
|
+
|
|
42
|
+
assert_equal 3, doc.segments.size
|
|
43
|
+
assert_equal 1, doc.segments[0].objects.size
|
|
44
|
+
assert_equal 1, doc.segments[1].objects.size
|
|
45
|
+
assert_equal 1, doc.segments[2].objects.size
|
|
46
|
+
assert_equal Tdms::DataType::Uint64::Id, doc.segments[0].objects[0].data_type_id
|
|
47
|
+
assert_equal Tdms::DataType::Uint64::Id, doc.segments[1].objects[0].data_type_id
|
|
48
|
+
assert_equal Tdms::DataType::Uint64::Id, doc.segments[2].objects[0].data_type_id
|
|
49
|
+
|
|
50
|
+
chan = doc.channels.find {|ch| ch.path == "/'uint64_group'/'uint64_channel'" }
|
|
51
|
+
assert_equal 15, chan.values.size
|
|
52
|
+
expected = [0, 1, 4_294_967_295, 9_223_372_036_854_775_807, 18_446_744_073_709_551_615,
|
|
53
|
+
0, 1, 4_294_967_295, 9_223_372_036_854_775_807, 18_446_744_073_709_551_615,
|
|
54
|
+
0, 1, 4_294_967_295, 9_223_372_036_854_775_807, 18_446_744_073_709_551_615]
|
|
55
|
+
assert_equal expected, chan.values.to_a
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
class ReadType09SingleTest < Test::Unit::TestCase
|
|
2
|
+
|
|
3
|
+
def test_reads_one_single_channel_in_one_segment
|
|
4
|
+
filename = fixture_filename("type_09_single_one_segment")
|
|
5
|
+
doc = Tdms::File.parse(filename)
|
|
6
|
+
|
|
7
|
+
assert_equal 1, doc.segments.size
|
|
8
|
+
assert_equal 1, doc.segments[0].objects.size
|
|
9
|
+
assert_equal Tdms::DataType::Single::Id, doc.segments[0].objects[0].data_type_id
|
|
10
|
+
|
|
11
|
+
chan = doc.channels.find {|ch| ch.path == "/'single_group'/'single_channel'" }
|
|
12
|
+
assert_equal 5, chan.values.size
|
|
13
|
+
|
|
14
|
+
expected = %w[-2.02 -1.01 0.00 1.01 2.02]
|
|
15
|
+
assert_equal expected, chan.values.map { |float| "%0.2f" % float }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_reads_two_single_channels_in_one_segment
|
|
19
|
+
filename = fixture_filename("type_09_single_two_channels_one_segment")
|
|
20
|
+
doc = Tdms::File.parse(filename)
|
|
21
|
+
|
|
22
|
+
assert_equal 1, doc.segments.size
|
|
23
|
+
assert_equal 2, doc.segments[0].objects.size
|
|
24
|
+
assert_equal Tdms::DataType::Single::Id, doc.segments[0].objects[0].data_type_id
|
|
25
|
+
assert_equal Tdms::DataType::Single::Id, doc.segments[0].objects[1].data_type_id
|
|
26
|
+
|
|
27
|
+
chan = doc.channels.find {|ch| ch.path == "/'single_group'/'single_channel_a'" }
|
|
28
|
+
assert_equal 5, chan.values.size
|
|
29
|
+
expected = %w[-2.02 -1.01 0.00 1.01 2.02]
|
|
30
|
+
assert_equal expected, chan.values.map { |float| "%0.2f" % float }
|
|
31
|
+
|
|
32
|
+
chan = doc.channels.find {|ch| ch.path == "/'single_group'/'single_channel_b'" }
|
|
33
|
+
assert_equal 5, chan.values.size
|
|
34
|
+
expected = %w[2.02 1.01 0.00 -1.01 -2.02]
|
|
35
|
+
assert_equal expected, chan.values.map { |float| "%0.2f" % float }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_reads_one_single_channel_across_three_segments
|
|
39
|
+
filename = fixture_filename("type_09_single_three_segments")
|
|
40
|
+
doc = Tdms::File.parse(filename)
|
|
41
|
+
|
|
42
|
+
assert_equal 3, doc.segments.size
|
|
43
|
+
assert_equal 1, doc.segments[0].objects.size
|
|
44
|
+
assert_equal 1, doc.segments[1].objects.size
|
|
45
|
+
assert_equal 1, doc.segments[2].objects.size
|
|
46
|
+
assert_equal Tdms::DataType::Single::Id, doc.segments[0].objects[0].data_type_id
|
|
47
|
+
assert_equal Tdms::DataType::Single::Id, doc.segments[1].objects[0].data_type_id
|
|
48
|
+
assert_equal Tdms::DataType::Single::Id, doc.segments[2].objects[0].data_type_id
|
|
49
|
+
|
|
50
|
+
chan = doc.channels.find {|ch| ch.path == "/'single_group'/'single_channel'" }
|
|
51
|
+
assert_equal 15, chan.values.size
|
|
52
|
+
expected = %w[-2.02 -1.01 0.00 1.01 2.02
|
|
53
|
+
-2.02 -1.01 0.00 1.01 2.02
|
|
54
|
+
-2.02 -1.01 0.00 1.01 2.02]
|
|
55
|
+
assert_equal expected, chan.values.map { |float| "%0.2f" % float }
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
class ReadType0aDoubleTest < Test::Unit::TestCase
|
|
2
|
+
|
|
3
|
+
def test_reads_one_double_channel_in_one_segment
|
|
4
|
+
filename = fixture_filename("type_0a_double_one_segment")
|
|
5
|
+
doc = Tdms::File.parse(filename)
|
|
6
|
+
|
|
7
|
+
assert_equal 1, doc.segments.size
|
|
8
|
+
assert_equal 1, doc.segments[0].objects.size
|
|
9
|
+
assert_equal Tdms::DataType::Double::Id, doc.segments[0].objects[0].data_type_id
|
|
10
|
+
|
|
11
|
+
chan = doc.channels.find {|ch| ch.path == "/'double_group'/'double_channel'" }
|
|
12
|
+
assert_equal 5, chan.values.size
|
|
13
|
+
|
|
14
|
+
expected = [-2.02, -1.01, 0, 1.01, 2.02]
|
|
15
|
+
assert_equal expected, chan.values.to_a
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_reads_two_double_channels_in_one_segment
|
|
19
|
+
filename = fixture_filename("type_0a_double_two_channels_one_segment")
|
|
20
|
+
doc = Tdms::File.parse(filename)
|
|
21
|
+
|
|
22
|
+
assert_equal 1, doc.segments.size
|
|
23
|
+
assert_equal 2, doc.segments[0].objects.size
|
|
24
|
+
assert_equal Tdms::DataType::Double::Id, doc.segments[0].objects[0].data_type_id
|
|
25
|
+
assert_equal Tdms::DataType::Double::Id, doc.segments[0].objects[1].data_type_id
|
|
26
|
+
|
|
27
|
+
chan = doc.channels.find {|ch| ch.path == "/'double_group'/'double_channel_a'" }
|
|
28
|
+
assert_equal 5, chan.values.size
|
|
29
|
+
expected = [-2.02, -1.01, 0, 1.01, 2.02]
|
|
30
|
+
assert_equal expected, chan.values.to_a
|
|
31
|
+
|
|
32
|
+
chan = doc.channels.find {|ch| ch.path == "/'double_group'/'double_channel_b'" }
|
|
33
|
+
assert_equal 5, chan.values.size
|
|
34
|
+
expected = [2.02, 1.01, 0, -1.01, -2.02]
|
|
35
|
+
assert_equal expected, chan.values.to_a
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_reads_one_double_channel_across_three_segments
|
|
39
|
+
filename = fixture_filename("type_0a_double_three_segments")
|
|
40
|
+
doc = Tdms::File.parse(filename)
|
|
41
|
+
|
|
42
|
+
assert_equal 3, doc.segments.size
|
|
43
|
+
assert_equal 1, doc.segments[0].objects.size
|
|
44
|
+
assert_equal 1, doc.segments[1].objects.size
|
|
45
|
+
assert_equal 1, doc.segments[2].objects.size
|
|
46
|
+
assert_equal Tdms::DataType::Double::Id, doc.segments[0].objects[0].data_type_id
|
|
47
|
+
assert_equal Tdms::DataType::Double::Id, doc.segments[1].objects[0].data_type_id
|
|
48
|
+
assert_equal Tdms::DataType::Double::Id, doc.segments[2].objects[0].data_type_id
|
|
49
|
+
|
|
50
|
+
chan = doc.channels.find {|ch| ch.path == "/'double_group'/'double_channel'" }
|
|
51
|
+
assert_equal 15, chan.values.size
|
|
52
|
+
expected = [-2.02, -1.01, 0.0, 1.01, 2.02,
|
|
53
|
+
-2.02, -1.01, 0.0, 1.01, 2.02,
|
|
54
|
+
-2.02, -1.01, 0.0, 1.01, 2.02]
|
|
55
|
+
assert_equal expected, chan.values.to_a
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
class ReadType19SingleWithUnitTest < Test::Unit::TestCase
|
|
2
|
+
|
|
3
|
+
def test_reads_one_single_with_unit_channel_in_one_segment
|
|
4
|
+
filename = fixture_filename("type_19_single_with_unit_one_segment")
|
|
5
|
+
doc = Tdms::File.parse(filename)
|
|
6
|
+
|
|
7
|
+
assert_equal 1, doc.segments.size
|
|
8
|
+
assert_equal 1, doc.segments[0].objects.size
|
|
9
|
+
assert_equal Tdms::DataType::SingleWithUnit::Id, doc.segments[0].objects[0].data_type_id
|
|
10
|
+
|
|
11
|
+
chan = doc.channels.find {|ch| ch.path == "/'single_group'/'single_channel'" }
|
|
12
|
+
assert_equal 5, chan.values.size
|
|
13
|
+
|
|
14
|
+
expected = %w[-2.02 -1.01 0.00 1.01 2.02]
|
|
15
|
+
assert_equal expected, chan.values.map { |float| "%0.2f" % float }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_reads_two_single_with_unit_channels_in_one_segment
|
|
19
|
+
filename = fixture_filename("type_19_single_with_unit_two_channels_one_segment")
|
|
20
|
+
doc = Tdms::File.parse(filename)
|
|
21
|
+
|
|
22
|
+
assert_equal 1, doc.segments.size
|
|
23
|
+
assert_equal 2, doc.segments[0].objects.size
|
|
24
|
+
assert_equal Tdms::DataType::SingleWithUnit::Id, doc.segments[0].objects[0].data_type_id
|
|
25
|
+
assert_equal Tdms::DataType::SingleWithUnit::Id, doc.segments[0].objects[1].data_type_id
|
|
26
|
+
|
|
27
|
+
chan = doc.channels.find {|ch| ch.path == "/'single_group'/'single_channel_a'" }
|
|
28
|
+
assert_equal 5, chan.values.size
|
|
29
|
+
expected = %w[-2.02 -1.01 0.00 1.01 2.02]
|
|
30
|
+
assert_equal expected, chan.values.map { |float| "%0.2f" % float }
|
|
31
|
+
|
|
32
|
+
chan = doc.channels.find {|ch| ch.path == "/'single_group'/'single_channel_b'" }
|
|
33
|
+
assert_equal 5, chan.values.size
|
|
34
|
+
expected = %w[2.02 1.01 0.00 -1.01 -2.02]
|
|
35
|
+
assert_equal expected, chan.values.map { |float| "%0.2f" % float }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_reads_one_single_with_unit_channel_across_three_segments
|
|
39
|
+
filename = fixture_filename("type_19_single_with_unit_three_segments")
|
|
40
|
+
doc = Tdms::File.parse(filename)
|
|
41
|
+
|
|
42
|
+
assert_equal 3, doc.segments.size
|
|
43
|
+
assert_equal 1, doc.segments[0].objects.size
|
|
44
|
+
assert_equal 1, doc.segments[1].objects.size
|
|
45
|
+
assert_equal 1, doc.segments[2].objects.size
|
|
46
|
+
assert_equal Tdms::DataType::SingleWithUnit::Id, doc.segments[0].objects[0].data_type_id
|
|
47
|
+
assert_equal Tdms::DataType::SingleWithUnit::Id, doc.segments[1].objects[0].data_type_id
|
|
48
|
+
assert_equal Tdms::DataType::SingleWithUnit::Id, doc.segments[2].objects[0].data_type_id
|
|
49
|
+
|
|
50
|
+
chan = doc.channels.find {|ch| ch.path == "/'single_group'/'single_channel'" }
|
|
51
|
+
assert_equal 15, chan.values.size
|
|
52
|
+
expected = %w[-2.02 -1.01 0.00 1.01 2.02
|
|
53
|
+
-2.02 -1.01 0.00 1.01 2.02
|
|
54
|
+
-2.02 -1.01 0.00 1.01 2.02]
|
|
55
|
+
assert_equal expected, chan.values.map { |float| "%0.2f" % float }
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
class ReadType1aDoubleWithUnitTest < Test::Unit::TestCase
|
|
2
|
+
|
|
3
|
+
def test_reads_one_double_with_unit_channel_in_one_segment
|
|
4
|
+
filename = fixture_filename("type_1a_double_with_unit_one_segment")
|
|
5
|
+
doc = Tdms::File.parse(filename)
|
|
6
|
+
|
|
7
|
+
assert_equal 1, doc.segments.size
|
|
8
|
+
assert_equal 1, doc.segments[0].objects.size
|
|
9
|
+
assert_equal Tdms::DataType::DoubleWithUnit::Id, doc.segments[0].objects[0].data_type_id
|
|
10
|
+
|
|
11
|
+
chan = doc.channels.find {|ch| ch.path == "/'double_group'/'double_channel'" }
|
|
12
|
+
assert_equal 5, chan.values.size
|
|
13
|
+
|
|
14
|
+
expected = [-2.02, -1.01, 0, 1.01, 2.02]
|
|
15
|
+
assert_equal expected, chan.values.to_a
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_reads_two_double_with_unit_channels_in_one_segment
|
|
19
|
+
filename = fixture_filename("type_1a_double_with_unit_two_channels_one_segment")
|
|
20
|
+
doc = Tdms::File.parse(filename)
|
|
21
|
+
|
|
22
|
+
assert_equal 1, doc.segments.size
|
|
23
|
+
assert_equal 2, doc.segments[0].objects.size
|
|
24
|
+
assert_equal Tdms::DataType::DoubleWithUnit::Id, doc.segments[0].objects[0].data_type_id
|
|
25
|
+
assert_equal Tdms::DataType::DoubleWithUnit::Id, doc.segments[0].objects[1].data_type_id
|
|
26
|
+
|
|
27
|
+
chan = doc.channels.find {|ch| ch.path == "/'double_group'/'double_channel_a'" }
|
|
28
|
+
assert_equal 5, chan.values.size
|
|
29
|
+
expected = [-2.02, -1.01, 0, 1.01, 2.02]
|
|
30
|
+
assert_equal expected, chan.values.to_a
|
|
31
|
+
|
|
32
|
+
chan = doc.channels.find {|ch| ch.path == "/'double_group'/'double_channel_b'" }
|
|
33
|
+
assert_equal 5, chan.values.size
|
|
34
|
+
expected = [2.02, 1.01, 0, -1.01, -2.02]
|
|
35
|
+
assert_equal expected, chan.values.to_a
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_reads_one_double_with_unit_channel_across_three_segments
|
|
39
|
+
filename = fixture_filename("type_1a_double_with_unit_three_segments")
|
|
40
|
+
doc = Tdms::File.parse(filename)
|
|
41
|
+
|
|
42
|
+
assert_equal 3, doc.segments.size
|
|
43
|
+
assert_equal 1, doc.segments[0].objects.size
|
|
44
|
+
assert_equal 1, doc.segments[1].objects.size
|
|
45
|
+
assert_equal 1, doc.segments[2].objects.size
|
|
46
|
+
assert_equal Tdms::DataType::DoubleWithUnit::Id, doc.segments[0].objects[0].data_type_id
|
|
47
|
+
assert_equal Tdms::DataType::DoubleWithUnit::Id, doc.segments[1].objects[0].data_type_id
|
|
48
|
+
assert_equal Tdms::DataType::DoubleWithUnit::Id, doc.segments[2].objects[0].data_type_id
|
|
49
|
+
|
|
50
|
+
chan = doc.channels.find {|ch| ch.path == "/'double_group'/'double_channel'" }
|
|
51
|
+
assert_equal 15, chan.values.size
|
|
52
|
+
expected = [-2.02, -1.01, 0.0, 1.01, 2.02,
|
|
53
|
+
-2.02, -1.01, 0.0, 1.01, 2.02,
|
|
54
|
+
-2.02, -1.01, 0.0, 1.01, 2.02]
|
|
55
|
+
assert_equal expected, chan.values.to_a
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|