discid 1.0.0.rc1 → 1.0.0rc2

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -1,7 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
- - "1.8.7"
4
- - "1.9.3"
3
+ - 1.8.7
4
+ - 1.9.3
5
+ - 2.0.0
5
6
  - jruby-18mode # JRuby in 1.8 mode
6
7
  - jruby-19mode # JRuby in 1.9 mode
7
8
  - rbx-18mode
data/CHANGES CHANGED
@@ -1,6 +1,9 @@
1
1
  # Changelog
2
2
 
3
- ## 1.0.0
3
+ ## 1.0.0.rc2 (2013-04-29)
4
+ * Fixed loading libdiscid library
5
+
6
+ ## 1.0.0.rc1 (2013-04-22)
4
7
  * Support libdiscid versions 0.1.0 through 0.5.0
5
8
  * Compatible with JRuby
6
9
 
File without changes
data/README.md CHANGED
@@ -65,4 +65,4 @@ Please report any issues on the
65
65
 
66
66
  ## License
67
67
  ruby-discid is released under the GNU Lesser General Public License Version 3.
68
- See LICENSE.txt for details.
68
+ See LICENSE for details.
data/discid.gemspec CHANGED
@@ -13,6 +13,7 @@ Gem::Specification.new do |spec|
13
13
  spec.homepage = "https://github.com/phw/ruby-discid"
14
14
  spec.license = "LGPL-3"
15
15
  spec.post_install_message = %q{Please make sure you have libdiscid (http://musicbrainz.org/doc/libdiscid) installed.}
16
+ spec.requirements = "libdiscid >= 0.1.0"
16
17
 
17
18
  spec.files = `git ls-files`.split($/)
18
19
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
@@ -26,7 +26,7 @@ begin
26
26
 
27
27
  # Instead of reading from a device we could set the TOC directly:
28
28
  #disc = DiscId.put(1, 82255, [150, 16157, 35932, 57527])
29
- rescue Exception => e
29
+ rescue DiscId::DiscError => e
30
30
  puts e
31
31
  exit(1)
32
32
  end
@@ -37,8 +37,8 @@ print <<EOF
37
37
  Device : #{disc.device}
38
38
  DiscID : #{disc.id}
39
39
  FreeDB ID : #{disc.freedb_id}
40
- First track : #{disc.first_track_num}
41
- Last track : #{disc.last_track_num}
40
+ First track : #{disc.last_track_number}
41
+ Last track : #{disc.first_track_number}
42
42
  Total length: #{disc.seconds} seconds
43
43
  Sectors : #{disc.sectors}
44
44
  EOF
data/lib/discid.rb CHANGED
@@ -89,7 +89,7 @@ module DiscId
89
89
  # supported features by version and platform.
90
90
  #
91
91
  # @raise [TypeError] `device` can not be converted to a String.
92
- # @raise [Exception] Error reading from `device`. `Exception#message` contains
92
+ # @raise [DiscError] Error reading from `device`. `Exception#message` contains
93
93
  # error details.
94
94
  # @param device [String] The device identifier. If set to `nil` {default_device}
95
95
  # will be used.
@@ -107,7 +107,7 @@ module DiscId
107
107
  # This function may be used if the TOC has been read earlier and you want to
108
108
  # calculate the disc ID afterwards, without accessing the disc drive.
109
109
  #
110
- # @raise [Exception] The TOC could not be set. `Exception#message`contains
110
+ # @raise [DiscError] The TOC could not be set. `Exception#message`contains
111
111
  # error details.
112
112
  # @param first_track [Integer] The number of the first audio track on the
113
113
  # disc (usually one).
@@ -167,4 +167,11 @@ module DiscId
167
167
  return (sectors.to_f / 75).round
168
168
  end
169
169
 
170
+ # The libdiscid version.
171
+ #
172
+ # @note This will only give meaningful results for libdiscid 0.4.0
173
+ # and higher. For lower versions this constant will always have
174
+ # the value "libdiscid < 0.4.0".
175
+ LIBDISCID_VERSION = Lib.get_version_string
176
+
170
177
  end
data/lib/discid/disc.rb CHANGED
@@ -31,6 +31,7 @@ module DiscId
31
31
  pointer = Lib.new
32
32
  @handle = FFI::AutoPointer.new(pointer, Lib.method(:free))
33
33
  @read = false
34
+ @tracks = nil
34
35
  end
35
36
 
36
37
  # @private
@@ -47,7 +48,7 @@ module DiscId
47
48
  result = Lib.read @handle, @device, flags
48
49
 
49
50
  if result == 0
50
- raise Exception, Lib.get_error_msg(@handle)
51
+ raise DiscError, Lib.get_error_msg(@handle)
51
52
  else
52
53
  @read = true
53
54
  end
@@ -65,7 +66,7 @@ module DiscId
65
66
  result = Lib.put @handle, first_track, last_track, p
66
67
 
67
68
  if result == 0
68
- raise Exception, Lib.get_error_msg(@handle)
69
+ raise DiscError, Lib.get_error_msg(@handle)
69
70
  else
70
71
  @read = true
71
72
  end
@@ -76,40 +77,35 @@ module DiscId
76
77
  #
77
78
  # @return [String] The DiscID or `nil` if no ID was yet read.
78
79
  def id
79
- return nil unless @read
80
- return Lib.get_id @handle
80
+ return Lib.get_id @handle if @read
81
81
  end
82
82
 
83
83
  # The FreeDB DiscID.
84
84
  #
85
85
  # @return [String] The DiscID or `nil` if no ID was yet read.
86
86
  def freedb_id
87
- return nil unless @read
88
- return Lib.get_freedb_id @handle
87
+ return Lib.get_freedb_id @handle if @read
89
88
  end
90
89
 
91
90
  # The number of the first track on this disc.
92
91
  #
93
92
  # @return [Integer] The number of the first track or `nil` if no ID was yet read.
94
- def first_track_num
95
- return nil unless @read
96
- return Lib.get_first_track_num @handle
93
+ def first_track_number
94
+ return Lib.get_first_track_num @handle if @read
97
95
  end
98
96
 
99
97
  # The number of the last track on this disc.
100
98
  #
101
99
  # @return [Integer] The number of the last track or `nil` if no ID was yet read.
102
- def last_track_num
103
- return nil unless @read
104
- return Lib.get_last_track_num @handle
100
+ def last_track_number
101
+ return Lib.get_last_track_num @handle if @read
105
102
  end
106
103
 
107
104
  # The length of the disc in sectors.
108
105
  #
109
106
  # @return [Integer] Sectors or `nil` if no ID was yet read.
110
107
  def sectors
111
- return nil unless @read
112
- return Lib.get_sectors @handle
108
+ return Lib.get_sectors @handle if @read
113
109
  end
114
110
 
115
111
  # The length of the disc in seconds.
@@ -130,8 +126,7 @@ module DiscId
130
126
  #
131
127
  # @return [String] MCN or `nil` if no ID was yet read.
132
128
  def mcn
133
- return nil unless @read
134
- return Lib.get_mcn @handle
129
+ return Lib.get_mcn @handle if @read
135
130
  end
136
131
 
137
132
  # An URL for submitting the DiscID to MusicBrainz.
@@ -142,8 +137,7 @@ module DiscId
142
137
  #
143
138
  # @return [String] Submission URL
144
139
  def submission_url
145
- return nil unless @read
146
- return Lib.get_submission_url @handle
140
+ return Lib.get_submission_url @handle if @read
147
141
  end
148
142
 
149
143
  # DiscID to String conversion. Same as calling the method {#id} but guaranteed
@@ -167,26 +161,37 @@ module DiscId
167
161
  # @return [Array<TrackInfo>] Array of {TrackInfo} objects.
168
162
  def tracks
169
163
  if @read
170
- track_number = self.first_track_num - 1
171
- tracks = []
164
+ read_tracks if @tracks.nil?
172
165
 
173
- while track_number < self.last_track_num do
174
- track_number += 1
175
- isrc = Lib.get_track_isrc(@handle, track_number)
176
- offset = Lib.get_track_offset(@handle, track_number)
177
- length = Lib.get_track_length(@handle, track_number)
178
- track_info = TrackInfo.new(track_number, offset, length, isrc)
179
-
180
- if block_given?
181
- yield track_info
182
- else
183
- tracks << track_info
184
- end
166
+ if block_given?
167
+ @tracks.each(&Proc.new)
168
+ return nil
169
+ else
170
+ return @tracks
185
171
  end
172
+ end
173
+ end
174
+
175
+ private
176
+
177
+ def read_tracks
178
+ track_number = self.first_track_number - 1
179
+ @tracks = []
180
+
181
+ while track_number < self.last_track_number do
182
+ track_number += 1
183
+ isrc = Lib.get_track_isrc(@handle, track_number)
184
+ offset = Lib.get_track_offset(@handle, track_number)
185
+ length = Lib.get_track_length(@handle, track_number)
186
+ track_info = TrackInfo.new(track_number, offset, length, isrc)
186
187
 
187
- return tracks unless block_given?
188
+ @tracks << track_info
188
189
  end
189
190
  end
190
191
 
191
192
  end
193
+
194
+ # This exception is thrown on errors reading the disc or setting the TOC.
195
+ class DiscError < StandardError
196
+ end
192
197
  end
data/lib/discid/lib.rb CHANGED
@@ -24,7 +24,7 @@ module DiscId
24
24
  # @private
25
25
  module Lib
26
26
  extend FFI::Library
27
- ffi_lib %w[discid, libdiscid.so.0]
27
+ ffi_lib %w[discid libdiscid.so.0]
28
28
 
29
29
  attach_function :new, :discid_new, [], :pointer
30
30
 
@@ -109,7 +109,7 @@ module DiscId
109
109
  # puts track[:sectors] # 16007
110
110
  def [](key)
111
111
  if [:number, :sectors, :start_sector, :end_sector,
112
- :seconds, :start_time, :end_time].include?(key.to_sym)
112
+ :seconds, :start_time, :end_time, :isrc].include?(key.to_sym)
113
113
  method(key).call
114
114
  end
115
115
  end
@@ -119,6 +119,7 @@ module DiscId
119
119
  # @return [Hash]
120
120
  def to_hash
121
121
  {
122
+ :number => number,
122
123
  :sectors => sectors,
123
124
  :start_sector => start_sector,
124
125
  :end_sector => end_sector,
@@ -15,5 +15,6 @@
15
15
 
16
16
 
17
17
  module DiscId
18
- VERSION = "1.0.0.rc1"
18
+ # The version of ruby-discid.
19
+ VERSION = "1.0.0rc2"
19
20
  end
data/test/test_disc.rb ADDED
@@ -0,0 +1,87 @@
1
+ # Copyright (C) 2013 Philipp Wolfer
2
+ #
3
+ # This program is free software: you can redistribute it and/or modify
4
+ # it under the terms of the GNU Lesser General Public License as published by
5
+ # the Free Software Foundation, either version 3 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public License
14
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
15
+
16
+ require 'test/unit'
17
+ require 'discid'
18
+
19
+ # Unit test for the DiscId::Disc class.
20
+ class TestDisc < Test::Unit::TestCase
21
+
22
+ def setup
23
+ @fiction_disc_id = 'Wn8eRBtfLDfM0qjYPdxrz.Zjs_U-'
24
+ @fiction_first_track = 1
25
+ @fiction_last_track = 10
26
+ @fiction_sectors = 206535
27
+ @fiction_seconds = 2754
28
+ @fiction_offsets = [150, 18901, 39738, 59557, 79152, 100126,
29
+ 124833, 147278, 166336, 182560]
30
+ @fiction_lengths = [18751, 20837, 19819, 19595, 20974,
31
+ 24707, 22445, 19058, 16224, 23975]
32
+ end
33
+
34
+ def teardown
35
+ end
36
+
37
+ def test_empty_disc
38
+ disc = DiscId::Disc.new
39
+ assert_equal nil, disc.id
40
+ assert_equal nil, disc.freedb_id
41
+ assert_equal '', disc.to_s
42
+ assert_equal nil, disc.first_track_number
43
+ assert_equal nil, disc.last_track_number
44
+ assert_equal nil, disc.sectors
45
+ assert_equal nil, disc.seconds
46
+ assert_equal nil, disc.tracks
47
+ assert_equal nil, disc.device
48
+ assert_equal nil, disc.submission_url
49
+ assert_equal nil, disc.mcn
50
+ assert_equal nil, disc.device
51
+ end
52
+
53
+ # Test calculation of the disc id if the TOC information
54
+ # gets set by the put method.
55
+ # All attributes should be nil after a failure, even if there was a
56
+ # successfull put before.
57
+ def test_put
58
+ disc = DiscId::Disc.new
59
+
60
+ # Erroneous put
61
+ assert_raise(DiscId::DiscError) do
62
+ disc = DiscId.put(-1, @fiction_sectors, @fiction_offsets)
63
+ end
64
+ assert_equal nil, disc.id
65
+ assert_equal '', disc.to_s
66
+ assert_equal nil, disc.first_track_number
67
+ assert_equal nil, disc.last_track_number
68
+ assert_equal nil, disc.sectors
69
+ assert_equal nil, disc.seconds
70
+ assert_equal nil, disc.tracks
71
+
72
+ # Second successfull put
73
+ assert_nothing_raised do
74
+ disc = DiscId.put(@fiction_first_track, @fiction_sectors,
75
+ @fiction_offsets)
76
+ end
77
+ assert_equal @fiction_disc_id, disc.id
78
+ assert_equal @fiction_disc_id, disc.to_s
79
+ assert_equal @fiction_first_track, disc.first_track_number
80
+ assert_equal @fiction_last_track, disc.last_track_number
81
+ assert_equal @fiction_sectors, disc.sectors
82
+ assert_equal @fiction_seconds, disc.seconds
83
+ assert_equal @fiction_offsets, disc.tracks.map{|t| t.start_sector}
84
+ assert_equal @fiction_lengths, disc.tracks.map{|t| t.sectors}
85
+ end
86
+
87
+ end
data/test/test_discid.rb CHANGED
@@ -1,7 +1,17 @@
1
- # Author:: Philipp Wolfer (mailto:ph.wolfer@gmail.com)
2
- # Copyright:: Copyright (c) 2007-2013, Philipp Wolfer
3
- # License:: RBrainz is free software distributed under LGPLv3.
4
- # See LICENSE[file:../LICENSE.txt] for permissions.
1
+ # Copyright (C) 2013 Philipp Wolfer
2
+ #
3
+ # This program is free software: you can redistribute it and/or modify
4
+ # it under the terms of the GNU Lesser General Public License as published by
5
+ # the Free Software Foundation, either version 3 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public License
14
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
5
15
 
6
16
  require 'test/unit'
7
17
  require 'discid'
@@ -16,8 +26,8 @@ class NotAString
16
26
 
17
27
  end
18
28
 
19
- # Unit test for the MusicBrainz::DiscID class.
20
- class TestDiscID < Test::Unit::TestCase
29
+ # Unit test for the DiscId module.
30
+ class TestDiscId < Test::Unit::TestCase
21
31
 
22
32
  def setup
23
33
  @fiction_disc_id = 'Wn8eRBtfLDfM0qjYPdxrz.Zjs_U-'
@@ -44,60 +54,27 @@ class TestDiscID < Test::Unit::TestCase
44
54
  # Those reads should all fail, but they must never cause a segmentation fault.
45
55
  def test_read_invalid_arguments
46
56
  assert_raise(TypeError) {DiscId.read(NotAString.new)}
47
- assert_raise(Exception) {DiscId.read(1)}
48
- assert_raise(Exception) {DiscId.read('invalid_device')}
49
- assert_raise(Exception) {DiscId.read(:invalid_device)}
50
- # assert_raise(ArgumentError) {disc.read(DiscId::DiscId.default_device,
51
- # 'second argument')}
57
+ assert_raise(DiscId::DiscError) {DiscId.read(1)}
58
+ assert_raise(DiscId::DiscError) {DiscId.read('invalid_device')}
59
+ assert_raise(DiscId::DiscError) {DiscId.read(:invalid_device)}
52
60
  end
53
61
 
54
- # Test calculation of the disc id if the TOC information
55
- # gets set by the put method.
56
- # All attributes should be nil after a failure, even if there was a
57
- # successfull put before.
58
- def test_put
59
- disc = DiscId::Disc.new
60
- assert_equal nil, disc.id
61
- assert_equal '', disc.to_s
62
- assert_equal nil, disc.first_track_num
63
- assert_equal nil, disc.last_track_num
64
- assert_equal nil, disc.sectors
65
- assert_equal nil, disc.seconds
66
- assert_equal nil, disc.tracks
67
- assert_equal nil, disc.device
68
-
69
- # Erroneous put
70
- assert_raise(Exception) {disc = DiscId.put(-1, @fiction_sectors, @fiction_offsets)}
71
- assert_equal nil, disc.id
72
- assert_equal '', disc.to_s
73
- assert_equal nil, disc.first_track_num
74
- assert_equal nil, disc.last_track_num
75
- assert_equal nil, disc.sectors
76
- assert_equal nil, disc.seconds
77
- assert_equal nil, disc.tracks
78
- assert_equal nil, disc.device
79
-
80
- # Second successfull put
81
- assert_nothing_raised {disc = DiscId.put(@fiction_first_track, @fiction_sectors,
82
- @fiction_offsets)}
83
- assert_equal @fiction_disc_id, disc.id
84
- assert_equal @fiction_disc_id, disc.to_s
85
- assert_equal @fiction_first_track, disc.first_track_num
86
- assert_equal @fiction_last_track, disc.last_track_num
87
- assert_equal @fiction_sectors, disc.sectors
88
- assert_equal @fiction_seconds, disc.seconds
89
- assert_equal @fiction_offsets, disc.tracks.map{|t| t.start_sector}
90
- assert_equal @fiction_lengths, disc.tracks.map{|t| t.sectors}
91
- assert_equal nil, disc.device
62
+ def test_put_first_track_not_one
63
+ disc = DiscId.put(3, @fiction_sectors,
64
+ @fiction_offsets)
65
+ assert_equal 3, disc.first_track_number
66
+ assert_equal 12, disc.last_track_number
67
+ assert_equal 10, disc.tracks.size
92
68
  end
93
69
 
94
70
  # Test the tracks method and TrackInfo objects
95
- def test_tracks
71
+ def test_put_and_tracks
96
72
  disc = nil
97
73
 
98
- assert_nothing_raised {disc = DiscId.put(@fiction_first_track, @fiction_sectors,
99
- @fiction_offsets)}
100
-
74
+ assert_nothing_raised do
75
+ disc = DiscId.put(@fiction_first_track, @fiction_sectors,
76
+ @fiction_offsets)
77
+ end
101
78
 
102
79
  # Save a block for testing each track
103
80
  number = 0
@@ -109,21 +86,13 @@ class TestDiscID < Test::Unit::TestCase
109
86
  assert_equal @fiction_offsets[number]+ @fiction_lengths[number],
110
87
  track.end_sector
111
88
 
112
- assert_equal DiscId.sectors_to_seconds(@fiction_offsets[number]), track.start_time
113
- assert_equal DiscId.sectors_to_seconds(@fiction_lengths[number]), track.seconds
114
- assert_equal DiscId.sectors_to_seconds(
115
- @fiction_offsets[number]+ @fiction_lengths[number]),
116
- track.end_time
117
-
118
- assert_equal track.number, track[:number]
119
- assert_equal track.sectors, track[:sectors]
120
- assert_equal track.start_sector, track[:start_sector]
121
- assert_equal track.end_sector, track[:end_sector]
122
- assert_equal track.seconds, track[:seconds]
123
- assert_equal track.start_time, track[:start_time]
124
- assert_equal track.end_time, track[:end_time]
125
-
126
- assert_equal nil, track[:invalid_value]
89
+ assert_equal(DiscId.sectors_to_seconds(@fiction_offsets[number]),
90
+ track.start_time)
91
+ assert_equal(DiscId.sectors_to_seconds(@fiction_lengths[number]),
92
+ track.seconds)
93
+ assert_equal(DiscId.sectors_to_seconds(
94
+ @fiction_offsets[number]+ @fiction_lengths[number]),
95
+ track.end_time)
127
96
 
128
97
  number += 1
129
98
  end
@@ -133,12 +102,13 @@ class TestDiscID < Test::Unit::TestCase
133
102
  assert_nothing_raised {track_info = disc.tracks}
134
103
  assert track_info.is_a?(Array)
135
104
  track_info.each(&proc_test_track)
136
- assert_equal disc.last_track_num, number
105
+ assert_equal disc.last_track_number, number
137
106
 
138
107
  # Calling track_info directly with a given block
139
- number = 0 # Reset the number of tracks (the above block is a closure, so this works)
108
+ # Reset the number of tracks (the above block is a closure, so this works)
109
+ number = 0
140
110
  assert_equal nil, disc.tracks(&proc_test_track)
141
- assert_equal disc.last_track_num, number
111
+ assert_equal disc.last_track_number, number
142
112
  end
143
113
 
144
114
  # Test the conversion from sectors to seconds
@@ -164,4 +134,15 @@ class TestDiscID < Test::Unit::TestCase
164
134
  "Feature :read should be supported")
165
135
  end
166
136
 
137
+ def test_libdiscid_version_should_start_with_libdiscid
138
+ version = DiscId::LIBDISCID_VERSION
139
+ assert version.kind_of?(String)
140
+ assert version.start_with?("libdiscid")
141
+ end
142
+
143
+ def test_default_device_is_a_string
144
+ device = DiscId.default_device
145
+ assert device.kind_of?(String)
146
+ end
147
+
167
148
  end
@@ -0,0 +1,77 @@
1
+ # Copyright (C) 2013 Philipp Wolfer
2
+ #
3
+ # This program is free software: you can redistribute it and/or modify
4
+ # it under the terms of the GNU Lesser General Public License as published by
5
+ # the Free Software Foundation, either version 3 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public License
14
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
15
+
16
+ require 'test/unit'
17
+ require 'discid/track_info'
18
+
19
+ # Unit test for the DiscId::TrackInfo class.
20
+ class TestTrackInfo < Test::Unit::TestCase
21
+
22
+ def setup
23
+ @number = 3
24
+ @offset = 1035
25
+ @length = 23643
26
+ @isrc = "US4E40731510"
27
+ end
28
+
29
+ def test_init_track_info
30
+ track = DiscId::TrackInfo.new @number, @offset, @length, @isrc
31
+
32
+ assert_equal @number, track.number
33
+ assert_equal @offset, track.start_sector
34
+ assert_equal @length, track.sectors
35
+ assert_equal @isrc, track.isrc
36
+
37
+ assert_equal @offset + @length, track.end_sector
38
+ assert_equal 315, track.seconds
39
+ assert_equal 14, track.start_time
40
+ assert_equal 329, track.end_time
41
+ end
42
+
43
+ def test_to_hash
44
+ track = DiscId::TrackInfo.new @number, @offset, @length, @isrc
45
+ hash = track.to_hash
46
+
47
+ assert_equal track.number, hash[:number]
48
+ assert_equal track.start_sector, hash[:start_sector]
49
+ assert_equal track.sectors, hash[:sectors]
50
+ assert_equal track.isrc, hash[:isrc]
51
+
52
+ assert_equal track.end_sector, hash[:end_sector]
53
+ assert_equal track.seconds, hash[:seconds]
54
+ assert_equal track.start_time, hash[:start_time]
55
+ assert_equal track.end_time, hash[:end_time]
56
+ end
57
+
58
+ def test_selector_access
59
+ track = DiscId::TrackInfo.new @number, @offset, @length, @isrc
60
+
61
+ assert_equal track.number, track[:number]
62
+ assert_equal track.start_sector, track[:start_sector]
63
+ assert_equal track.sectors, track[:sectors]
64
+ assert_equal track.isrc, track[:isrc]
65
+
66
+ assert_equal track.end_sector, track[:end_sector]
67
+ assert_equal track.seconds, track[:seconds]
68
+ assert_equal track.start_time, track[:start_time]
69
+ assert_equal track.end_time, track[:end_time]
70
+ end
71
+
72
+ def test_invalid_selector_value
73
+ track = DiscId::TrackInfo.new @number, @offset, @length, @isrc
74
+ assert_equal nil, track[:invalid_value]
75
+ end
76
+
77
+ end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: discid
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc1
5
- prerelease: 6
4
+ version: 1.0.0rc2
5
+ prerelease: 5
6
6
  platform: ruby
7
7
  authors:
8
8
  - Philipp Wolfer
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-22 00:00:00.000000000 Z
12
+ date: 2013-04-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ffi
@@ -105,18 +105,19 @@ files:
105
105
  - .yardopts
106
106
  - CHANGES
107
107
  - Gemfile
108
- - LICENSE.txt
108
+ - LICENSE
109
109
  - README.md
110
110
  - Rakefile
111
- - changelog
112
111
  - discid.gemspec
113
- - examples/discid.rb
112
+ - examples/readdiscid.rb
114
113
  - lib/discid.rb
115
114
  - lib/discid/disc.rb
116
115
  - lib/discid/lib.rb
117
116
  - lib/discid/track_info.rb
118
117
  - lib/discid/version.rb
118
+ - test/test_disc.rb
119
119
  - test/test_discid.rb
120
+ - test/test_track_info.rb
120
121
  homepage: https://github.com/phw/ruby-discid
121
122
  licenses:
122
123
  - LGPL-3
@@ -137,12 +138,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
138
  - - ! '>'
138
139
  - !ruby/object:Gem::Version
139
140
  version: 1.3.1
140
- requirements: []
141
+ requirements:
142
+ - libdiscid >= 0.1.0
141
143
  rubyforge_project:
142
144
  rubygems_version: 1.8.23
143
145
  signing_key:
144
146
  specification_version: 3
145
147
  summary: Ruby bindings for libdiscid
146
148
  test_files:
149
+ - test/test_disc.rb
147
150
  - test/test_discid.rb
151
+ - test/test_track_info.rb
148
152
  has_rdoc:
data/changelog DELETED
@@ -1,35 +0,0 @@
1
- mb-discid (0.2.0-1) quantal; urgency=low
2
-
3
- * Fixed build dependencies
4
-
5
- -- Philipp Wolfer <ph.wolfer@gmail.com> Mon, 18 Feb 2013 08:59:35 +0100
6
-
7
- mb-discid (0.2.0-0) quantal; urgency=low
8
-
9
- * New upstream release
10
-
11
- -- Philipp Wolfer <ph.wolfer@gmail.com> Sun, 17 Feb 2013 15:56:01 +0100
12
-
13
- mb-discid (0.1.5-0) lucid; urgency=low
14
-
15
- * New upstream release
16
-
17
- -- Philipp Wolfer <ph.wolfer@googlemail.com> Sat, 02 Jul 2011 16:14:51 +0200
18
-
19
- mb-discid (0.1.4-2) lucid; urgency=low
20
-
21
- * Fixed building on Maverick and Natty
22
-
23
- -- Philipp Wolfer <ph.wolfer@googlemail.com> Mon, 16 May 2011 00:05:40 +0200
24
-
25
- mb-discid (0.1.4-1) karmic; urgency=low
26
-
27
- * New upstream release
28
-
29
- -- Philipp Wolfer <ph.wolfer@googlemail.com> Mon, 14 Jun 2010 23:10:51 +0200
30
-
31
- mb-discid (0.1.2-1) gutsy; urgency=low
32
-
33
- * Initial packaging
34
-
35
- -- Philipp Wolfer <phw@rubyforge.org> Mon, 17 Dec 2007 22:56:57 +0100