taglib-ruby 0.5.2-x86-mingw32 → 0.6.0-x86-mingw32

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.
Files changed (52) hide show
  1. data/.yardopts +1 -1
  2. data/CHANGES.md +11 -0
  3. data/LICENSE.txt +0 -2
  4. data/README.md +7 -9
  5. data/docs/taglib/base.rb +35 -7
  6. data/docs/taglib/id3v2.rb +37 -5
  7. data/docs/taglib/mp4.rb +267 -0
  8. data/docs/taglib/mpeg.rb +23 -8
  9. data/ext/taglib_base/includes.i +2 -2
  10. data/ext/taglib_base/taglib_base.i +3 -0
  11. data/ext/taglib_base/taglib_base_wrap.cxx +11 -12
  12. data/ext/taglib_flac/extconf.rb +4 -0
  13. data/ext/taglib_flac/taglib_flac_wrap.cxx +21 -25
  14. data/ext/taglib_id3v1/taglib_id3v1_wrap.cxx +4 -8
  15. data/ext/taglib_id3v2/taglib_id3v2.i +3 -0
  16. data/ext/taglib_id3v2/taglib_id3v2_wrap.cxx +528 -69
  17. data/ext/taglib_mp4/extconf.rb +4 -0
  18. data/ext/taglib_mp4/taglib_mp4.i +225 -0
  19. data/ext/taglib_mp4/taglib_mp4_wrap.cxx +4830 -0
  20. data/ext/taglib_mpeg/taglib_mpeg.i +15 -0
  21. data/ext/taglib_mpeg/taglib_mpeg_wrap.cxx +174 -88
  22. data/ext/taglib_ogg/taglib_ogg_wrap.cxx +2 -6
  23. data/ext/taglib_vorbis/taglib_vorbis_wrap.cxx +8 -12
  24. data/lib/libtag.dll +0 -0
  25. data/lib/taglib.rb +1 -0
  26. data/lib/taglib/mp4.rb +33 -0
  27. data/lib/taglib/version.rb +2 -2
  28. data/lib/taglib_base.so +0 -0
  29. data/lib/taglib_flac.so +0 -0
  30. data/lib/taglib_id3v1.so +0 -0
  31. data/lib/taglib_id3v2.so +0 -0
  32. data/lib/taglib_mp4.so +0 -0
  33. data/lib/taglib_mpeg.so +0 -0
  34. data/lib/taglib_ogg.so +0 -0
  35. data/lib/taglib_vorbis.so +0 -0
  36. data/taglib-ruby.gemspec +19 -3
  37. data/tasks/ext.rake +3 -0
  38. data/tasks/swig.rake +6 -1
  39. data/test/base_test.rb +11 -0
  40. data/test/data/Makefile +5 -2
  41. data/test/data/flac-create.cpp +2 -22
  42. data/test/data/get_picture_data.cpp +22 -0
  43. data/test/data/mp4-create.cpp +38 -0
  44. data/test/data/mp4.m4a +0 -0
  45. data/test/fileref_write_test.rb +9 -0
  46. data/test/flac_file_test.rb +2 -1
  47. data/test/id3v2_header_test.rb +61 -0
  48. data/test/id3v2_write_test.rb +17 -0
  49. data/test/mp4_file_test.rb +51 -0
  50. data/test/mp4_file_write_test.rb +66 -0
  51. data/test/mp4_items_test.rb +183 -0
  52. metadata +84 -7
@@ -1885,7 +1885,7 @@ TagLib::ByteVector ruby_string_to_taglib_bytevector(VALUE s) {
1885
1885
  if (NIL_P(s)) {
1886
1886
  return TagLib::ByteVector::null;
1887
1887
  } else {
1888
- return TagLib::ByteVector(RSTRING_PTR(s), RSTRING_LEN(s));
1888
+ return TagLib::ByteVector(RSTRING_PTR(StringValue(s)), RSTRING_LEN(s));
1889
1889
  }
1890
1890
  }
1891
1891
 
@@ -1903,7 +1903,7 @@ TagLib::String ruby_string_to_taglib_string(VALUE s) {
1903
1903
  if (NIL_P(s)) {
1904
1904
  return TagLib::String::null;
1905
1905
  } else {
1906
- return TagLib::String(RSTRING_PTR(CONVERT_TO_UTF8(s)), TagLib::String::UTF8);
1906
+ return TagLib::String(RSTRING_PTR(CONVERT_TO_UTF8(StringValue(s))), TagLib::String::UTF8);
1907
1907
  }
1908
1908
  }
1909
1909
 
@@ -2076,11 +2076,7 @@ SWIGINTERN int
2076
2076
  SWIG_AsCharPtrAndSize(VALUE obj, char** cptr, size_t* psize, int *alloc)
2077
2077
  {
2078
2078
  if (TYPE(obj) == T_STRING) {
2079
- #if defined(StringValuePtr)
2080
2079
  char *cstr = StringValuePtr(obj);
2081
- #else
2082
- char *cstr = STR2CSTR(obj);
2083
- #endif
2084
2080
  size_t size = RSTRING_LEN(obj) + 1;
2085
2081
  if (cptr) {
2086
2082
  if (alloc) {
@@ -2161,12 +2157,12 @@ _wrap_new_Properties__SWIG_0(int argc, VALUE *argv, VALUE self) {
2161
2157
  }
2162
2158
  res1 = SWIG_ConvertPtr(argv[0], &argp1,SWIGTYPE_p_TagLib__Vorbis__File, 0 | 0 );
2163
2159
  if (!SWIG_IsOK(res1)) {
2164
- SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "TagLib::Vorbis::File *","TagLib::Vorbis::Properties", 1, argv[0] ));
2160
+ SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "TagLib::Vorbis::File *","Properties", 1, argv[0] ));
2165
2161
  }
2166
2162
  arg1 = reinterpret_cast< TagLib::Vorbis::File * >(argp1);
2167
2163
  ecode2 = SWIG_AsVal_int(argv[1], &val2);
2168
2164
  if (!SWIG_IsOK(ecode2)) {
2169
- SWIG_exception_fail(SWIG_ArgError(ecode2), Ruby_Format_TypeError( "", "TagLib::AudioProperties::ReadStyle","TagLib::Vorbis::Properties", 2, argv[1] ));
2165
+ SWIG_exception_fail(SWIG_ArgError(ecode2), Ruby_Format_TypeError( "", "TagLib::AudioProperties::ReadStyle","Properties", 2, argv[1] ));
2170
2166
  }
2171
2167
  arg2 = static_cast< TagLib::AudioProperties::ReadStyle >(val2);
2172
2168
  result = (TagLib::Vorbis::Properties *)new TagLib::Vorbis::Properties(arg1,arg2);
@@ -2207,7 +2203,7 @@ _wrap_new_Properties__SWIG_1(int argc, VALUE *argv, VALUE self) {
2207
2203
  }
2208
2204
  res1 = SWIG_ConvertPtr(argv[0], &argp1,SWIGTYPE_p_TagLib__Vorbis__File, 0 | 0 );
2209
2205
  if (!SWIG_IsOK(res1)) {
2210
- SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "TagLib::Vorbis::File *","TagLib::Vorbis::Properties", 1, argv[0] ));
2206
+ SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "TagLib::Vorbis::File *","Properties", 1, argv[0] ));
2211
2207
  }
2212
2208
  arg1 = reinterpret_cast< TagLib::Vorbis::File * >(argp1);
2213
2209
  result = (TagLib::Vorbis::Properties *)new TagLib::Vorbis::Properties(arg1);
@@ -2485,12 +2481,12 @@ _wrap_new_File__SWIG_0(int argc, VALUE *argv, VALUE self) {
2485
2481
  }
2486
2482
  ecode2 = SWIG_AsVal_bool(argv[1], &val2);
2487
2483
  if (!SWIG_IsOK(ecode2)) {
2488
- SWIG_exception_fail(SWIG_ArgError(ecode2), Ruby_Format_TypeError( "", "bool","TagLib::Vorbis::File", 2, argv[1] ));
2484
+ SWIG_exception_fail(SWIG_ArgError(ecode2), Ruby_Format_TypeError( "", "bool","File", 2, argv[1] ));
2489
2485
  }
2490
2486
  arg2 = static_cast< bool >(val2);
2491
2487
  ecode3 = SWIG_AsVal_int(argv[2], &val3);
2492
2488
  if (!SWIG_IsOK(ecode3)) {
2493
- SWIG_exception_fail(SWIG_ArgError(ecode3), Ruby_Format_TypeError( "", "TagLib::Vorbis::Properties::ReadStyle","TagLib::Vorbis::File", 3, argv[2] ));
2489
+ SWIG_exception_fail(SWIG_ArgError(ecode3), Ruby_Format_TypeError( "", "TagLib::Vorbis::Properties::ReadStyle","File", 3, argv[2] ));
2494
2490
  }
2495
2491
  arg3 = static_cast< TagLib::Vorbis::Properties::ReadStyle >(val3);
2496
2492
  result = (TagLib::Vorbis::File *)new TagLib::Vorbis::File(arg1,arg2,arg3);
@@ -2521,7 +2517,7 @@ _wrap_new_File__SWIG_1(int argc, VALUE *argv, VALUE self) {
2521
2517
  }
2522
2518
  ecode2 = SWIG_AsVal_bool(argv[1], &val2);
2523
2519
  if (!SWIG_IsOK(ecode2)) {
2524
- SWIG_exception_fail(SWIG_ArgError(ecode2), Ruby_Format_TypeError( "", "bool","TagLib::Vorbis::File", 2, argv[1] ));
2520
+ SWIG_exception_fail(SWIG_ArgError(ecode2), Ruby_Format_TypeError( "", "bool","File", 2, argv[1] ));
2525
2521
  }
2526
2522
  arg2 = static_cast< bool >(val2);
2527
2523
  result = (TagLib::Vorbis::File *)new TagLib::Vorbis::File(arg1,arg2);
data/lib/libtag.dll CHANGED
Binary file
data/lib/taglib.rb CHANGED
@@ -13,3 +13,4 @@ require 'taglib/id3v2'
13
13
  require 'taglib/ogg'
14
14
  require 'taglib/vorbis'
15
15
  require 'taglib/flac'
16
+ require 'taglib/mp4'
data/lib/taglib/mp4.rb ADDED
@@ -0,0 +1,33 @@
1
+ require 'taglib_mp4'
2
+
3
+ module TagLib::MP4
4
+
5
+ class File
6
+ extend ::TagLib::FileOpenable
7
+ end
8
+
9
+ class Tag
10
+ remove_method :save
11
+ end
12
+
13
+ class Item
14
+ def self.from_int_pair(ary)
15
+ if !(ary.is_a? Array)
16
+ raise ArgumentError, 'argument should be an array'
17
+ elsif ary.length != 2
18
+ raise ArgumentError, 'argument should have exactly two elements'
19
+ else
20
+ new(*ary)
21
+ end
22
+ end
23
+ end
24
+
25
+ class ItemListMap
26
+ alias :clear :_clear
27
+ alias :insert :_insert
28
+ alias :[] :fetch
29
+ remove_method :_clear
30
+ remove_method :_insert
31
+
32
+ end
33
+ end
@@ -1,8 +1,8 @@
1
1
  module TagLib
2
2
  module Version
3
3
  MAJOR = 0
4
- MINOR = 5
5
- PATCH = 2
4
+ MINOR = 6
5
+ PATCH = 0
6
6
  BUILD = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
data/lib/taglib_base.so CHANGED
Binary file
data/lib/taglib_flac.so CHANGED
Binary file
data/lib/taglib_id3v1.so CHANGED
Binary file
data/lib/taglib_id3v2.so CHANGED
Binary file
data/lib/taglib_mp4.so ADDED
Binary file
data/lib/taglib_mpeg.so CHANGED
Binary file
data/lib/taglib_ogg.so CHANGED
Binary file
data/lib/taglib_vorbis.so CHANGED
Binary file
data/taglib-ruby.gemspec CHANGED
@@ -7,9 +7,9 @@ require 'taglib/version'
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "taglib-ruby"
9
9
  s.version = TagLib::Version::STRING
10
- s.authors = ["Robin Stocker"]
10
+ s.authors = ["Robin Stocker", "Jacob Vosmaer"]
11
11
  s.email = ["robin@nibor.org"]
12
- s.homepage = "http://robinst.github.com/taglib-ruby/"
12
+ s.homepage = "http://robinst.github.io/taglib-ruby/"
13
13
  s.licenses = ["MIT"]
14
14
  s.summary = "Ruby interface for the taglib C++ library"
15
15
  s.description = <<DESC
@@ -23,10 +23,11 @@ DESC
23
23
  s.require_paths = ["lib"]
24
24
  s.requirements = ["taglib (libtag1-dev in Debian/Ubuntu, taglib-devel in Fedora/RHEL)"]
25
25
 
26
- s.add_development_dependency 'bundler', '~> 1.1.0'
26
+ s.add_development_dependency 'bundler', '~> 1.2'
27
27
  s.add_development_dependency 'rake-compiler', '~> 0.8'
28
28
  s.add_development_dependency 'shoulda-context', '~> 1.0'
29
29
  s.add_development_dependency 'yard', '~> 0.7'
30
+ s.add_development_dependency 'kramdown', '~> 1.0'
30
31
 
31
32
  s.extensions = [
32
33
  "ext/taglib_base/extconf.rb",
@@ -36,6 +37,7 @@ DESC
36
37
  "ext/taglib_ogg/extconf.rb",
37
38
  "ext/taglib_vorbis/extconf.rb",
38
39
  "ext/taglib_flac/extconf.rb",
40
+ "ext/taglib_mp4/extconf.rb",
39
41
  ]
40
42
  s.extra_rdoc_files = [
41
43
  "CHANGES.md",
@@ -55,6 +57,7 @@ DESC
55
57
  "docs/taglib/flac.rb",
56
58
  "docs/taglib/id3v1.rb",
57
59
  "docs/taglib/id3v2.rb",
60
+ "docs/taglib/mp4.rb",
58
61
  "docs/taglib/mpeg.rb",
59
62
  "docs/taglib/ogg.rb",
60
63
  "docs/taglib/vorbis.rb",
@@ -63,6 +66,7 @@ DESC
63
66
  "ext/taglib_base/includes.i",
64
67
  "ext/taglib_base/taglib_base.i",
65
68
  "ext/taglib_base/taglib_base_wrap.cxx",
69
+ "ext/taglib_flac/extconf.rb",
66
70
  "ext/taglib_flac/taglib_flac.i",
67
71
  "ext/taglib_flac/taglib_flac_wrap.cxx",
68
72
  "ext/taglib_id3v1/extconf.rb",
@@ -72,6 +76,9 @@ DESC
72
76
  "ext/taglib_id3v2/relativevolumeframe.i",
73
77
  "ext/taglib_id3v2/taglib_id3v2.i",
74
78
  "ext/taglib_id3v2/taglib_id3v2_wrap.cxx",
79
+ "ext/taglib_mp4/extconf.rb",
80
+ "ext/taglib_mp4/taglib_mp4.i",
81
+ "ext/taglib_mp4/taglib_mp4_wrap.cxx",
75
82
  "ext/taglib_mpeg/extconf.rb",
76
83
  "ext/taglib_mpeg/taglib_mpeg.i",
77
84
  "ext/taglib_mpeg/taglib_mpeg_wrap.cxx",
@@ -88,6 +95,7 @@ DESC
88
95
  "lib/taglib/flac.rb",
89
96
  "lib/taglib/id3v1.rb",
90
97
  "lib/taglib/id3v2.rb",
98
+ "lib/taglib/mp4.rb",
91
99
  "lib/taglib/mpeg.rb",
92
100
  "lib/taglib/ogg.rb",
93
101
  "lib/taglib/version.rb",
@@ -97,15 +105,19 @@ DESC
97
105
  "tasks/ext.rake",
98
106
  "tasks/gemspec_check.rake",
99
107
  "tasks/swig.rake",
108
+ "test/base_test.rb",
100
109
  "test/data/Makefile",
101
110
  "test/data/add-relative-volume.cpp",
102
111
  "test/data/crash.mp3",
103
112
  "test/data/flac-create.cpp",
104
113
  "test/data/flac.flac",
114
+ "test/data/get_picture_data.cpp",
105
115
  "test/data/globe_east_540.jpg",
106
116
  "test/data/globe_east_90.jpg",
107
117
  "test/data/id3v1-create.cpp",
108
118
  "test/data/id3v1.mp3",
119
+ "test/data/mp4-create.cpp",
120
+ "test/data/mp4.m4a",
109
121
  "test/data/relative-volume.mp3",
110
122
  "test/data/sample.mp3",
111
123
  "test/data/unicode.mp3",
@@ -119,11 +131,15 @@ DESC
119
131
  "test/flac_file_write_test.rb",
120
132
  "test/id3v1_tag_test.rb",
121
133
  "test/id3v2_frames_test.rb",
134
+ "test/id3v2_header_test.rb",
122
135
  "test/id3v2_memory_test.rb",
123
136
  "test/id3v2_relative_volume_test.rb",
124
137
  "test/id3v2_tag_test.rb",
125
138
  "test/id3v2_unicode_test.rb",
126
139
  "test/id3v2_write_test.rb",
140
+ "test/mp4_file_test.rb",
141
+ "test/mp4_file_write_test.rb",
142
+ "test/mp4_items_test.rb",
127
143
  "test/mpeg_file_test.rb",
128
144
  "test/tag_test.rb",
129
145
  "test/unicode_filename_test.rb",
data/tasks/ext.rake CHANGED
@@ -46,6 +46,9 @@ end
46
46
  Rake::ExtensionTask.new("taglib_flac", $gemspec) do |ext|
47
47
  configure_cross_compile(ext)
48
48
  end
49
+ Rake::ExtensionTask.new("taglib_mp4", $gemspec) do |ext|
50
+ configure_cross_compile(ext)
51
+ end
49
52
 
50
53
  task :cross => [:taglib] do
51
54
  # Mkmf just uses "g++" as C++ compiler, despite what's in rbconfig.rb.
data/tasks/swig.rake CHANGED
@@ -5,7 +5,7 @@ def run_swig(mod)
5
5
  if swig.empty?
6
6
  swig = `which swig2.0`.chomp
7
7
  end
8
- sh "cd ext/#{mod} && #{swig} -c++ -ruby -autorename -initname #{mod} -I/usr/include #{mod}.i"
8
+ sh "cd ext/#{mod} && #{swig} -c++ -ruby -autorename -initname #{mod} -I/usr/local/include -I/usr/include #{mod}.i"
9
9
  end
10
10
 
11
11
  task :swig =>
@@ -16,6 +16,7 @@ task :swig =>
16
16
  'ext/taglib_ogg/taglib_ogg_wrap.cxx',
17
17
  'ext/taglib_vorbis/taglib_vorbis_wrap.cxx',
18
18
  'ext/taglib_flac/taglib_flac_wrap.cxx',
19
+ 'ext/taglib_mp4/taglib_mp4_wrap.cxx',
19
20
  ]
20
21
 
21
22
  base_dependencies = ['ext/taglib_base/taglib_base.i', 'ext/taglib_base/includes.i']
@@ -47,3 +48,7 @@ end
47
48
  file 'ext/taglib_flac/taglib_flac_wrap.cxx' => ['ext/taglib_flac/taglib_flac.i'] + base_dependencies do
48
49
  run_swig('taglib_flac')
49
50
  end
51
+
52
+ file 'ext/taglib_mp4/taglib_mp4_wrap.cxx' => ['ext/taglib_mp4/taglib_mp4.i'] + base_dependencies do
53
+ run_swig('taglib_mp4')
54
+ end
data/test/base_test.rb ADDED
@@ -0,0 +1,11 @@
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
+
3
+ class BaseTest < Test::Unit::TestCase
4
+ context "TagLib" do
5
+ should "contain version constants" do
6
+ assert TagLib::TAGLIB_MAJOR_VERSION.is_a? Integer
7
+ assert TagLib::TAGLIB_MINOR_VERSION.is_a? Integer
8
+ assert TagLib::TAGLIB_PATCH_VERSION.is_a? Integer
9
+ end
10
+ end
11
+ end
data/test/data/Makefile CHANGED
@@ -1,6 +1,6 @@
1
1
  .PHONY: all clean
2
2
 
3
- all:: add-relative-volume id3v1-create vorbis-create flac-create
3
+ all:: add-relative-volume id3v1-create vorbis-create flac-create mp4-create
4
4
 
5
5
  add-relative-volume: add-relative-volume.cpp
6
6
  g++ -o $@ $< -ltag -I/usr/include/taglib
@@ -14,5 +14,8 @@ vorbis-create: vorbis-create.cpp
14
14
  flac-create: flac-create.cpp
15
15
  g++ -o $@ $< -ltag -I/usr/include/taglib
16
16
 
17
+ mp4-create: mp4-create.cpp
18
+ g++ -o $@ $< -ltag -I/usr/include/taglib
19
+
17
20
  clean::
18
- -rm add-relative-volume id3v1-create vorbis-create flac-create
21
+ -rm add-relative-volume id3v1-create vorbis-create flac-create mp4-create
@@ -1,14 +1,13 @@
1
1
  #include <iostream>
2
- #include <fstream>
3
2
  #include <stdlib.h>
4
3
 
5
4
  #include <taglib/taglib.h>
6
5
  #include <taglib/flacfile.h>
7
6
  #include <taglib/xiphcomment.h>
8
7
 
9
- using namespace TagLib;
8
+ #include "get_picture_data.cpp"
10
9
 
11
- ByteVector getPictureData(const char *filename);
10
+ using namespace TagLib;
12
11
 
13
12
  int main(int argc, char **argv) {
14
13
  if (argc != 2) {
@@ -58,23 +57,4 @@ int main(int argc, char **argv) {
58
57
  file.save();
59
58
  }
60
59
 
61
- ByteVector getPictureData(const char *filename) {
62
- std::ifstream is;
63
- is.open(filename, std::ios::binary);
64
-
65
- is.seekg(0, std::ios::end);
66
- int length = is.tellg();
67
- is.seekg(0, std::ios::beg);
68
-
69
- char *buffer = new char[length];
70
-
71
- is.read(buffer, length);
72
- is.close();
73
-
74
- ByteVector result(buffer, length);
75
- delete[] buffer;
76
-
77
- return result;
78
- }
79
-
80
60
  // vim: set filetype=cpp sw=2 ts=2 expandtab:
@@ -0,0 +1,22 @@
1
+ #include <fstream>
2
+
3
+ using namespace TagLib;
4
+
5
+ ByteVector getPictureData(const char *filename) {
6
+ std::ifstream is;
7
+ is.open(filename, std::ios::binary);
8
+
9
+ is.seekg(0, std::ios::end);
10
+ int length = is.tellg();
11
+ is.seekg(0, std::ios::beg);
12
+
13
+ char *buffer = new char[length];
14
+
15
+ is.read(buffer, length);
16
+ is.close();
17
+
18
+ ByteVector result(buffer, length);
19
+ delete[] buffer;
20
+
21
+ return result;
22
+ }
@@ -0,0 +1,38 @@
1
+ #include <iostream>
2
+ #include <stdlib.h>
3
+
4
+ #include <taglib/taglib.h>
5
+ #include <taglib/mp4file.h>
6
+
7
+ #include "get_picture_data.cpp"
8
+
9
+ using namespace TagLib;
10
+
11
+ int main(int argc, char **argv) {
12
+ if (argc != 2) {
13
+ std::cout << "usage: " << argv[0] << " file.m4a" << std::endl;
14
+ exit(1);
15
+ }
16
+ char *filename = argv[1];
17
+
18
+ MP4::File file(filename);
19
+ MP4::Tag *tag = file.tag();
20
+
21
+ tag->setTitle("Title");
22
+ tag->setArtist("Artist");
23
+ tag->setAlbum("Album");
24
+ tag->setComment("Comment");
25
+ tag->setGenre("Pop");
26
+ tag->setYear(2011);
27
+ tag->setTrack(7);
28
+
29
+ ByteVector data = getPictureData("globe_east_90.jpg");
30
+ MP4::CoverArt cover_art = MP4::CoverArt(MP4::CoverArt::JPEG, data);
31
+ MP4::CoverArtList cover_art_list = MP4::CoverArtList();
32
+ cover_art_list.append(cover_art);
33
+ tag->itemListMap().insert("covr", MP4::Item(cover_art_list));
34
+
35
+ file.save();
36
+ }
37
+
38
+ // vim: set filetype=cpp sw=2 ts=2 expandtab:
data/test/data/mp4.m4a ADDED
Binary file
@@ -27,6 +27,15 @@ class TestFileRefWrite < Test::Unit::TestCase
27
27
  written_file.close
28
28
  end
29
29
 
30
+ should "not segfault when setting int" do
31
+ begin
32
+ @file.tag.title = 42
33
+ flunk("Should have raised a TypeError")
34
+ rescue TypeError
35
+ # this is good
36
+ end
37
+ end
38
+
30
39
  teardown do
31
40
  if @file
32
41
  @file.close
@@ -44,7 +44,8 @@ class FlacFileTest < Test::Unit::TestCase
44
44
 
45
45
  should "contain flac-specific information" do
46
46
  assert_equal 16, @properties.sample_width
47
- assert_equal "x\xD1\x9B\x86\xDF,\xD4\x88\xB3YW\xE6\xBD\x88Ih", @properties.signature
47
+ s = ["78d19b86df2cd488b35957e6bd884968"].pack('H*')
48
+ assert_equal s, @properties.signature
48
49
  end
49
50
  end
50
51