java_bin 0.3.4 → 0.3.5

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.
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ 0.3.5 (2010/05/22)
2
+ * fix issue 3
3
+ * fix issue 4 (strict aliasing rule problem)
4
+
1
5
  0.3.4 (2010/02/06)
2
6
  * remove dependence on glibc byteswap.h
3
7
  * a little performance improve
data/README.rdoc CHANGED
@@ -78,7 +78,6 @@ This is an Apache Solr JavaBin format (binary format) implementation for Ruby.
78
78
  * more parse speed
79
79
  * license
80
80
  * shared string over parsing
81
- * 64bit build
82
81
  * builder(writer)作成
83
82
  * JRuby support
84
83
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.4
1
+ 0.3.5
@@ -8,6 +8,7 @@ static VALUE rb_mExt;
8
8
  static VALUE rb_cParser;
9
9
 
10
10
  static ID i_At; // Time#at用
11
+ static ID i_Utc; // Time#utc用
11
12
  #ifdef HAVE_RUBY_ENCODING_H
12
13
  static rb_encoding* rb_encUtf8;
13
14
  #endif
@@ -183,21 +184,21 @@ static inline VALUE JavaBinParser_read_date(JAVA_BIN_PARSER* ptr) {
183
184
  u_int64_t c;
184
185
  _readnumeric(ptr, c);
185
186
  c = _swap_64(c);
186
- return rb_funcall(rb_cTime, i_At, 1, ULL2NUM(c / 1000));
187
+ return rb_funcall(rb_funcall(rb_cTime, i_At, 1, ULL2NUM(c / 1000)), i_Utc, 0);
187
188
  }
188
189
 
189
190
  static inline VALUE JavaBinParser_read_float(JAVA_BIN_PARSER* ptr) {
190
- u_int32_t c;
191
- _readnumeric(ptr, c);
192
- c = _swap_32(c);
193
- return rb_float_new((double)*((float*)&c));
191
+ JAVA_BIN_FLOAT c;
192
+ _readnumeric(ptr, c.i_value);
193
+ c.i_value = _swap_32(c.i_value);
194
+ return rb_float_new((double)c.f_value);
194
195
  }
195
196
 
196
197
  static inline VALUE JavaBinParser_read_double(JAVA_BIN_PARSER* ptr) {
197
- u_int64_t c;
198
- _readnumeric(ptr, c);
199
- c = _swap_64(c);
200
- return rb_float_new(*((double*)&c));
198
+ JAVA_BIN_DOUBLE c;
199
+ _readnumeric(ptr, c.i_value);
200
+ c.i_value = _swap_64(c.i_value);
201
+ return rb_float_new(c.d_value);
201
202
  }
202
203
 
203
204
  static inline VALUE JavaBinParser_read_byte_array(JAVA_BIN_PARSER* ptr) {
@@ -396,6 +397,7 @@ static VALUE JavaBinParser_alloc(VALUE klass) {
396
397
  */
397
398
  void Init_parser(void) {
398
399
  i_At = rb_intern("at");
400
+ i_Utc = rb_intern("utc");
399
401
  #ifdef HAVE_RUBY_ENCODING_H
400
402
  rb_encUtf8 = rb_utf8_encoding();
401
403
  #endif
@@ -111,6 +111,16 @@ typedef struct java_bin_parser {
111
111
  typedef unsigned __int64 u_int64_t;
112
112
  #endif
113
113
 
114
+ typedef union java_bin_float {
115
+ float f_value;
116
+ u_int32_t i_value;
117
+ } JAVA_BIN_FLOAT;
118
+
119
+ typedef union java_bin_double {
120
+ double d_value;
121
+ u_int64_t i_value;
122
+ } JAVA_BIN_DOUBLE;
123
+
114
124
  static VALUE JavaBinParser_read_val(JAVA_BIN_PARSER* ptr);
115
125
 
116
126
  static void JavaBinParser_free(JAVA_BIN_PARSER* ptr);
@@ -0,0 +1,14 @@
1
+ * rake
2
+ * JavaBin=pure rake
3
+ * vim CHANGELOG
4
+ * vim README.rdoc
5
+ * vim lib/java_bin/version.rb
6
+ * rake version:bump:patch
7
+ * rake gemspec
8
+ * git commit -a -m "release x.x.x"
9
+ * git tag vx.x.x
10
+ * git push
11
+ * git push --tags
12
+ * rake gemcutter:release
13
+
14
+
data/java_bin.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{java_bin}
8
- s.version = "0.3.4"
8
+ s.version = "0.3.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["kennyj"]
12
- s.date = %q{2010-02-06}
12
+ s.date = %q{2010-05-22}
13
13
  s.description = %q{Apache Solr JavaBin format (binary format) implementation for Ruby.}
14
14
  s.email = %q{kennyj@gmail.com}
15
15
  s.extensions = ["ext/java_bin/ext/extconf.rb"]
@@ -35,6 +35,7 @@ Gem::Specification.new do |s|
35
35
  "fixtures/json2.dat",
36
36
  "fixtures/ruby.dat",
37
37
  "fixtures/ruby2.dat",
38
+ "how_to_release.txt",
38
39
  "java_bin.gemspec",
39
40
  "lib/java_bin.rb",
40
41
  "lib/java_bin/ext.rb",
@@ -51,19 +52,19 @@ Gem::Specification.new do |s|
51
52
  s.homepage = %q{http://github.com/kennyj/java_bin}
52
53
  s.rdoc_options = ["--charset=UTF-8"]
53
54
  s.require_paths = ["lib", "ext"]
54
- s.rubygems_version = %q{1.3.5}
55
+ s.rubygems_version = %q{1.3.7}
55
56
  s.summary = %q{Apache Solr JavaBin format implementation for Ruby.}
56
57
  s.test_files = [
57
- "test/test_java_bin_parser.rb",
58
+ "test/helper.rb",
58
59
  "test/xxx_performance.rb",
59
- "test/helper.rb"
60
+ "test/test_java_bin_parser.rb"
60
61
  ]
61
62
 
62
63
  if s.respond_to? :specification_version then
63
64
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
64
65
  s.specification_version = 3
65
66
 
66
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
67
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
67
68
  else
68
69
  end
69
70
  else
@@ -1,7 +1,7 @@
1
1
  # vim:fileencoding=utf-8
2
2
  module JavaBin
3
3
  # JavaBin version
4
- VERSION = '0.3.4'
4
+ VERSION = '0.3.5'
5
5
  VERSION_ARRAY = VERSION.split(/\./).map { |x| x.to_i } # :nodoc:
6
6
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
7
7
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'stringio'
4
4
  require 'helper'
5
+ require 'time'
5
6
 
6
7
  case ENV['JavaBin']
7
8
  when 'pure'
@@ -67,7 +68,9 @@ class TestJavaBinParser < Test::Unit::TestCase
67
68
  result = @parser.parse(open("fixtures/javabin.dat", READ_ASCII).read)
68
69
  assert result['response']['docs'][0]['features'].include?('eaiou with umlauts: ëäïöü')
69
70
  assert_equal result['response']['docs'][1]['incubationdate_dt'], Time.local(2006, 1, 17, 9, 0, 0)
70
- assert_equal result['response']['docs'][1]['score'], 0.5030758380889893
71
+ assert_in_delta result['response']['maxScore'], 0.6288448, 0.0001
72
+ assert_in_delta result['response']['docs'][0]['score'], 0.628844797611237, 0.0001
73
+ assert_in_delta result['response']['docs'][1]['score'], 0.5030758380889893, 0.0001
71
74
  end
72
75
 
73
76
  def test_javabin2_dat
@@ -75,7 +78,12 @@ class TestJavaBinParser < Test::Unit::TestCase
75
78
  assert_equal 19, result['response']['docs'].size
76
79
  end
77
80
 
78
-
81
+ def test_javabin_parse_and_ruby_eval_with_time
82
+ r = eval(open("fixtures/ruby.dat", READ_UTF8).read)
83
+ jb = @parser.parse(open("fixtures/javabin.dat", READ_ASCII).read)
84
+ assert_equal Time.xmlschema(r['response']['docs'][1]['incubationdate_dt']), jb['response']['docs'][1]['incubationdate_dt']
85
+ end
86
+
79
87
  TIMES = 5000
80
88
  def test_javabin_parse_and_ruby_eval
81
89
  r = open("fixtures/ruby.dat", READ_UTF8).read
@@ -135,6 +143,8 @@ class TestJavaBinParser < Test::Unit::TestCase
135
143
 
136
144
  def test_double
137
145
  assert_equal -1.0, @parser.parse([1, 5, -1.0].pack("C2G"))
146
+ assert_equal 1.0, @parser.parse([1, 5, 1.0].pack("C2G"))
147
+ assert_equal 0.0, @parser.parse([1, 5, 0.0].pack("C2G"))
138
148
  end
139
149
 
140
150
  def test_int
@@ -152,8 +162,10 @@ class TestJavaBinParser < Test::Unit::TestCase
152
162
  end
153
163
 
154
164
  def test_float
165
+ assert_equal 0.0, @parser.parse([1, 8, 0.0].pack("C2g"))
166
+ assert_equal 1.0, @parser.parse([1, 8, 1.0].pack("C2g"))
155
167
  assert_equal -1.0, @parser.parse([1, 8, -1.0].pack("C2g"))
156
- end
168
+ end
157
169
 
158
170
  def test_date
159
171
  t = Time.now
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: java_bin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ hash: 25
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 3
9
+ - 5
10
+ version: 0.3.5
5
11
  platform: ruby
6
12
  authors:
7
13
  - kennyj
@@ -9,7 +15,7 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-02-06 00:00:00 +09:00
18
+ date: 2010-05-22 00:00:00 +09:00
13
19
  default_executable:
14
20
  dependencies: []
15
21
 
@@ -40,6 +46,7 @@ files:
40
46
  - fixtures/json2.dat
41
47
  - fixtures/ruby.dat
42
48
  - fixtures/ruby2.dat
49
+ - how_to_release.txt
43
50
  - java_bin.gemspec
44
51
  - lib/java_bin.rb
45
52
  - lib/java_bin/ext.rb
@@ -63,25 +70,31 @@ require_paths:
63
70
  - lib
64
71
  - ext
65
72
  required_ruby_version: !ruby/object:Gem::Requirement
73
+ none: false
66
74
  requirements:
67
75
  - - ">="
68
76
  - !ruby/object:Gem::Version
77
+ hash: 3
78
+ segments:
79
+ - 0
69
80
  version: "0"
70
- version:
71
81
  required_rubygems_version: !ruby/object:Gem::Requirement
82
+ none: false
72
83
  requirements:
73
84
  - - ">="
74
85
  - !ruby/object:Gem::Version
86
+ hash: 3
87
+ segments:
88
+ - 0
75
89
  version: "0"
76
- version:
77
90
  requirements: []
78
91
 
79
92
  rubyforge_project:
80
- rubygems_version: 1.3.5
93
+ rubygems_version: 1.3.7
81
94
  signing_key:
82
95
  specification_version: 3
83
96
  summary: Apache Solr JavaBin format implementation for Ruby.
84
97
  test_files:
85
- - test/test_java_bin_parser.rb
86
- - test/xxx_performance.rb
87
98
  - test/helper.rb
99
+ - test/xxx_performance.rb
100
+ - test/test_java_bin_parser.rb