spotify 9.0.1 → 9.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/spotify.rb CHANGED
@@ -497,10 +497,18 @@ module Spotify
497
497
  # FFI::Struct for Subscribers of a Playlist.
498
498
  #
499
499
  # @attr [Fixnum] count
500
- # @attr [Pointer<String>] subscribers
500
+ # @attr [Array<Pointer<String>>] subscribers
501
501
  class Subscribers < FFI::Struct
502
502
  layout :count, :uint,
503
- :subscribers, :array # array of count strings
503
+ :subscribers, [:pointer, 1] # array of pointers to strings
504
+
505
+ # Redefined, as the layout of the Struct can only be determined
506
+ # at run-time.
507
+ #
508
+ # @param [FFI::Pointer] pointer
509
+ def initialize(pointer)
510
+ super(pointer, :count, :uint, :subscribers, [:pointer, pointer.read_uint])
511
+ end
504
512
  end
505
513
 
506
514
  #
@@ -1,4 +1,4 @@
1
1
  module Spotify
2
2
  # See README for versioning policy.
3
- VERSION = [9, 0, 1].join('.')
3
+ VERSION = [9, 1, 0].join('.')
4
4
  end
data/spec/spotify_spec.rb CHANGED
@@ -181,4 +181,26 @@ describe "structs" do
181
181
  end
182
182
  end
183
183
  end
184
+
185
+ describe Spotify::Subscribers do
186
+ it "should create the subscribers array using count" do
187
+ # Memory looks like this:
188
+ #
189
+ # 00 00 00 00 <- count of subscribers
190
+ # 00 00 00 00 <- pointer to subscriber 1
191
+ # …… …… …… ……
192
+ # 00 00 00 00 <- pointer to subscriber n
193
+ real_struct = FFI::MemoryPointer.new(:char, 24)
194
+ real_struct.put_uint(0, 2)
195
+ subscribers = %w[a bb].map { |x| FFI::MemoryPointer.from_string(x) }
196
+ real_struct.put_array_of_pointer(8, subscribers)
197
+
198
+ struct = Spotify::Subscribers.new(real_struct)
199
+ struct[:count].must_equal 2
200
+ struct[:subscribers].size.must_equal 2
201
+ struct[:subscribers][0].read_string.must_equal "a"
202
+ struct[:subscribers][1].read_string.must_equal "bb"
203
+ proc { struct[:subscribers][2] }.must_raise IndexError
204
+ end
205
+ end
184
206
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spotify
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.0.1
4
+ version: 9.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-24 00:00:00.000000000Z
12
+ date: 2011-10-02 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ffi
16
- requirement: &2156717700 !ruby/object:Gem::Requirement
16
+ requirement: &2153532820 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '1.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2156717700
24
+ version_requirements: *2153532820
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: yard
27
- requirement: &2156717280 !ruby/object:Gem::Requirement
27
+ requirement: &2153532100 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2156717280
35
+ version_requirements: *2153532100
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rbgccxml
38
- requirement: &2156716800 !ruby/object:Gem::Requirement
38
+ requirement: &2153531500 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2156716800
46
+ version_requirements: *2153531500
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: gccxml_gem
49
- requirement: &2156716300 !ruby/object:Gem::Requirement
49
+ requirement: &2153530920 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '!='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.9.3
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2156716300
57
+ version_requirements: *2153530920
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: minitest
60
- requirement: &2156715780 !ruby/object:Gem::Requirement
60
+ requirement: &2153530280 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '2.0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2156715780
68
+ version_requirements: *2153530280
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
- requirement: &2156715300 !ruby/object:Gem::Requirement
71
+ requirement: &2153529780 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '1.0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2156715300
79
+ version_requirements: *2153529780
80
80
  description:
81
81
  email:
82
82
  - kim@burgestrand.se