oj 2.18.5 → 3.16.11

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 (166) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +1452 -0
  3. data/README.md +53 -221
  4. data/RELEASE_NOTES.md +61 -0
  5. data/ext/oj/buf.h +54 -72
  6. data/ext/oj/cache.c +329 -0
  7. data/ext/oj/cache.h +22 -0
  8. data/ext/oj/cache8.c +61 -63
  9. data/ext/oj/cache8.h +12 -39
  10. data/ext/oj/circarray.c +38 -67
  11. data/ext/oj/circarray.h +16 -42
  12. data/ext/oj/code.c +214 -0
  13. data/ext/oj/code.h +40 -0
  14. data/ext/oj/compat.c +194 -110
  15. data/ext/oj/custom.c +1074 -0
  16. data/ext/oj/debug.c +126 -0
  17. data/ext/oj/dump.c +1276 -2494
  18. data/ext/oj/dump.h +110 -0
  19. data/ext/oj/dump_compat.c +897 -0
  20. data/ext/oj/dump_leaf.c +162 -0
  21. data/ext/oj/dump_object.c +710 -0
  22. data/ext/oj/dump_strict.c +399 -0
  23. data/ext/oj/encode.h +7 -42
  24. data/ext/oj/encoder.c +43 -0
  25. data/ext/oj/err.c +28 -53
  26. data/ext/oj/err.h +49 -46
  27. data/ext/oj/extconf.rb +33 -32
  28. data/ext/oj/fast.c +1082 -1098
  29. data/ext/oj/intern.c +313 -0
  30. data/ext/oj/intern.h +22 -0
  31. data/ext/oj/mem.c +318 -0
  32. data/ext/oj/mem.h +53 -0
  33. data/ext/oj/mimic_json.c +919 -0
  34. data/ext/oj/object.c +545 -625
  35. data/ext/oj/odd.c +158 -168
  36. data/ext/oj/odd.h +32 -58
  37. data/ext/oj/oj.c +1727 -2080
  38. data/ext/oj/oj.h +334 -259
  39. data/ext/oj/parse.c +974 -753
  40. data/ext/oj/parse.h +97 -90
  41. data/ext/oj/parser.c +1600 -0
  42. data/ext/oj/parser.h +103 -0
  43. data/ext/oj/rails.c +1478 -0
  44. data/ext/oj/rails.h +18 -0
  45. data/ext/oj/reader.c +136 -163
  46. data/ext/oj/reader.h +76 -112
  47. data/ext/oj/resolve.c +45 -94
  48. data/ext/oj/resolve.h +7 -34
  49. data/ext/oj/rxclass.c +144 -0
  50. data/ext/oj/rxclass.h +26 -0
  51. data/ext/oj/saj.c +445 -511
  52. data/ext/oj/saj2.c +584 -0
  53. data/ext/oj/saj2.h +23 -0
  54. data/ext/oj/scp.c +82 -143
  55. data/ext/oj/simd.h +10 -0
  56. data/ext/oj/sparse.c +749 -644
  57. data/ext/oj/stream_writer.c +329 -0
  58. data/ext/oj/strict.c +114 -112
  59. data/ext/oj/string_writer.c +517 -0
  60. data/ext/oj/trace.c +72 -0
  61. data/ext/oj/trace.h +55 -0
  62. data/ext/oj/usual.c +1218 -0
  63. data/ext/oj/usual.h +69 -0
  64. data/ext/oj/util.c +136 -0
  65. data/ext/oj/util.h +20 -0
  66. data/ext/oj/val_stack.c +75 -72
  67. data/ext/oj/val_stack.h +94 -127
  68. data/ext/oj/validate.c +46 -0
  69. data/ext/oj/wab.c +586 -0
  70. data/lib/oj/active_support_helper.rb +1 -3
  71. data/lib/oj/bag.rb +8 -1
  72. data/lib/oj/easy_hash.rb +21 -13
  73. data/lib/oj/error.rb +10 -12
  74. data/lib/oj/json.rb +188 -0
  75. data/lib/oj/mimic.rb +165 -26
  76. data/lib/oj/saj.rb +20 -6
  77. data/lib/oj/schandler.rb +5 -4
  78. data/lib/oj/state.rb +135 -0
  79. data/lib/oj/version.rb +2 -3
  80. data/lib/oj.rb +3 -31
  81. data/pages/Advanced.md +22 -0
  82. data/pages/Compatibility.md +25 -0
  83. data/pages/Custom.md +23 -0
  84. data/pages/Encoding.md +65 -0
  85. data/pages/InstallOptions.md +20 -0
  86. data/pages/JsonGem.md +94 -0
  87. data/pages/Modes.md +161 -0
  88. data/pages/Options.md +337 -0
  89. data/pages/Parser.md +309 -0
  90. data/pages/Rails.md +167 -0
  91. data/pages/Security.md +20 -0
  92. data/pages/WAB.md +13 -0
  93. metadata +126 -163
  94. data/ext/oj/hash.c +0 -163
  95. data/ext/oj/hash.h +0 -46
  96. data/ext/oj/hash_test.c +0 -512
  97. data/test/_test_active.rb +0 -76
  98. data/test/_test_active_mimic.rb +0 -96
  99. data/test/_test_mimic_rails.rb +0 -126
  100. data/test/activesupport_datetime_test.rb +0 -23
  101. data/test/bug.rb +0 -51
  102. data/test/bug2.rb +0 -10
  103. data/test/bug3.rb +0 -46
  104. data/test/bug_fast.rb +0 -32
  105. data/test/bug_load.rb +0 -24
  106. data/test/crash.rb +0 -111
  107. data/test/curl/curl_oj.rb +0 -46
  108. data/test/curl/get_oj.rb +0 -24
  109. data/test/curl/just_curl.rb +0 -31
  110. data/test/curl/just_oj.rb +0 -51
  111. data/test/example.rb +0 -11
  112. data/test/files.rb +0 -29
  113. data/test/foo.rb +0 -24
  114. data/test/helper.rb +0 -27
  115. data/test/io.rb +0 -48
  116. data/test/isolated/shared.rb +0 -310
  117. data/test/isolated/test_mimic_after.rb +0 -13
  118. data/test/isolated/test_mimic_alone.rb +0 -12
  119. data/test/isolated/test_mimic_as_json.rb +0 -45
  120. data/test/isolated/test_mimic_before.rb +0 -13
  121. data/test/isolated/test_mimic_define.rb +0 -28
  122. data/test/isolated/test_mimic_rails_after.rb +0 -22
  123. data/test/isolated/test_mimic_rails_before.rb +0 -21
  124. data/test/isolated/test_mimic_rails_datetime.rb +0 -27
  125. data/test/isolated/test_mimic_redefine.rb +0 -15
  126. data/test/mod.rb +0 -16
  127. data/test/perf.rb +0 -107
  128. data/test/perf_compat.rb +0 -128
  129. data/test/perf_fast.rb +0 -164
  130. data/test/perf_file.rb +0 -64
  131. data/test/perf_object.rb +0 -138
  132. data/test/perf_saj.rb +0 -109
  133. data/test/perf_scp.rb +0 -151
  134. data/test/perf_simple.rb +0 -287
  135. data/test/perf_strict.rb +0 -128
  136. data/test/rails.rb +0 -50
  137. data/test/russian.rb +0 -18
  138. data/test/sample/change.rb +0 -14
  139. data/test/sample/dir.rb +0 -19
  140. data/test/sample/doc.rb +0 -36
  141. data/test/sample/file.rb +0 -48
  142. data/test/sample/group.rb +0 -16
  143. data/test/sample/hasprops.rb +0 -16
  144. data/test/sample/layer.rb +0 -12
  145. data/test/sample/line.rb +0 -20
  146. data/test/sample/oval.rb +0 -10
  147. data/test/sample/rect.rb +0 -10
  148. data/test/sample/shape.rb +0 -35
  149. data/test/sample/text.rb +0 -20
  150. data/test/sample.rb +0 -55
  151. data/test/sample_json.rb +0 -37
  152. data/test/struct.rb +0 -29
  153. data/test/test_compat.rb +0 -398
  154. data/test/test_debian.rb +0 -53
  155. data/test/test_fast.rb +0 -458
  156. data/test/test_file.rb +0 -245
  157. data/test/test_gc.rb +0 -49
  158. data/test/test_hash.rb +0 -29
  159. data/test/test_object.rb +0 -745
  160. data/test/test_saj.rb +0 -186
  161. data/test/test_scp.rb +0 -396
  162. data/test/test_serializer.rb +0 -59
  163. data/test/test_strict.rb +0 -254
  164. data/test/test_various.rb +0 -1383
  165. data/test/test_writer.rb +0 -308
  166. data/test/write_timebars.rb +0 -31
@@ -1,126 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- $: << File.dirname(__FILE__)
5
-
6
- require 'helper'
7
- #Oj.mimic_JSON
8
- require 'rails/all'
9
-
10
- require 'active_model'
11
- require 'active_model_serializers'
12
- require 'active_support/json'
13
- require 'active_support/time'
14
- require 'active_support/all'
15
-
16
- require 'oj/active_support_helper'
17
-
18
- Oj.mimic_JSON
19
-
20
- class Category
21
- include ActiveModel::Model
22
- include ActiveModel::SerializerSupport
23
-
24
- attr_accessor :id, :name
25
-
26
- def initialize(id, name)
27
- @id = id
28
- @name = name
29
- end
30
- end
31
-
32
- class CategorySerializer < ActiveModel::Serializer
33
- attributes :id, :name
34
- end
35
-
36
- class MimicRails < Minitest::Test
37
-
38
- def test_mimic_exception
39
- begin
40
- ActiveSupport::JSON.decode("{")
41
- puts "Failed"
42
- rescue ActiveSupport::JSON.parse_error
43
- assert(true)
44
- rescue Exception
45
- assert(false, 'Expected a JSON::ParserError')
46
- end
47
- end
48
-
49
- def test_dump_string
50
- Oj.default_options= {:indent => 2}
51
- json = ActiveSupport::JSON.encode([1, true, nil])
52
- assert_equal(%{[
53
- 1,
54
- true,
55
- null
56
- ]
57
- }, json)
58
- end
59
-
60
- def test_dump_rational
61
- Oj.default_options= {:indent => 2}
62
- json = ActiveSupport::JSON.encode([1, true, Rational(1)])
63
- assert_equal(%{[
64
- 1,
65
- true,
66
- "1/1"
67
- ]
68
- }, json)
69
- end
70
-
71
- def test_dump_range
72
- Oj.default_options= {:indent => 2}
73
- json = ActiveSupport::JSON.encode([1, true, '01'..'12'])
74
- assert_equal(%{[
75
- 1,
76
- true,
77
- "01..12"
78
- ]
79
- }, json)
80
- end
81
-
82
- def test_dump_object
83
- Oj.default_options= {:indent => 2}
84
- category = Category.new(1, 'test')
85
- serializer = CategorySerializer.new(category)
86
-
87
- json = serializer.to_json()
88
- puts "*** serializer.to_json() #{serializer.to_json()}"
89
- json = serializer.as_json()
90
- puts "*** serializer.as_json() #{serializer.as_json()}"
91
- json = JSON.dump(serializer)
92
- puts "*** JSON.dump(serializer) #{JSON.dump(serializer)}"
93
-
94
- puts "*** category.to_json() #{category.to_json()}"
95
- puts "*** category.as_json() #{category.as_json()}"
96
- puts "*** JSON.dump(serializer) #{JSON.dump(category)}"
97
- puts "*** Oj.dump(serializer) #{Oj.dump(category)}"
98
-
99
- end
100
-
101
- def test_dump_object_array
102
- Oj.default_options= {:indent => 2}
103
- cat1 = Category.new(1, 'test')
104
- cat2 = Category.new(2, 'test')
105
- a = Array.wrap([cat1, cat2])
106
-
107
- #serializer = CategorySerializer.new(a)
108
-
109
- puts "*** a.to_json() #{a.to_json()}"
110
- puts "*** a.as_json() #{a.as_json()}"
111
- puts "*** JSON.dump(a) #{JSON.dump(a)}"
112
- puts "*** Oj.dump(a) #{Oj.dump(a)}"
113
- end
114
-
115
- def test_dump_time
116
- Oj.default_options= {:indent => 2}
117
- now = ActiveSupport::TimeZone['America/Chicago'].parse("2014-11-01 13:20:47")
118
- json = Oj.dump(now, mode: :object, time_format: :xmlschema)
119
- #puts "*** json: #{json}"
120
-
121
- oj_dump = Oj.load(json, mode: :object, time_format: :xmlschema)
122
- #puts "Now: #{now}\n Oj: #{oj_dump}"
123
- assert_equal("2014-11-01T13:20:47-05:00", oj_dump.xmlschema)
124
- end
125
-
126
- end # MimicRails
@@ -1,23 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- $: << File.dirname(__FILE__)
5
-
6
- require 'helper'
7
-
8
- require "active_support" # v5.0.0
9
- require "oj" #v2.17.1
10
-
11
- puts "ActiveSupport + OJ.dump(DateTime.now)"
12
- puts
13
- puts Oj.dump(DateTime.now)
14
- puts
15
-
16
- require "oj/active_support_helper"
17
- #require 'active_support/time'
18
-
19
- puts "ActiveSupport + OJ + active_support_helper dump(DateTime.now)"
20
- puts
21
- puts Oj.dump(DateTime.now)
22
- puts
23
-
data/test/bug.rb DELETED
@@ -1,51 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- $: << File.dirname(__FILE__)
5
-
6
- require 'helper'
7
-
8
- class Handler
9
- def initialize
10
- @state = []
11
- end
12
-
13
- def hash_start
14
- @state << {}
15
- @state.last
16
- end
17
-
18
- def hash_end
19
- @state.pop
20
- end
21
-
22
- def hash_set(h,k,v)
23
- h.store(k,v)
24
- end
25
-
26
- def array_start
27
- @state << []
28
- @state.last
29
- end
30
-
31
-
32
- def array_end
33
- @state.pop
34
- end
35
-
36
- def array_append(a,v)
37
- a << v
38
- end
39
-
40
- def add_value(v)
41
- p v
42
- end
43
-
44
- def error(message, line, column); p "ERROR: #{message}" end
45
- end
46
-
47
- $handler = Handler.new
48
-
49
- IO.popen("cat tst") { |p| puts Oj.sc_parse($handler, p) }
50
-
51
- #File.open('tst', 'r') { |file| Oj.sc_parse($handler, file) }
data/test/bug2.rb DELETED
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- #!/usr/bin/env ruby
4
- # encoding: UTF-8
5
-
6
- $: << File.dirname(__FILE__)
7
-
8
- require 'helper'
9
-
10
-
data/test/bug3.rb DELETED
@@ -1,46 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- #!/usr/bin/env ruby
4
- # encoding: UTF-8
5
-
6
- $: << File.dirname(__FILE__)
7
- %w(lib ext test).each do |dir|
8
- $LOAD_PATH.unshift File.expand_path("../../#{dir}", __FILE__)
9
- end
10
-
11
- require 'oj'
12
- require 'stringio'
13
-
14
- class Parser < Oj::Saj
15
-
16
- def parse(json)
17
- Oj.saj_parse(self, StringIO.new(json))
18
- end
19
-
20
- def hash_start(key)
21
- puts "START: #{key}"
22
- end
23
-
24
- def error(message, line, column)
25
- puts "Error callback: #{message}"
26
- end
27
-
28
- end
29
-
30
- parser = Parser.new
31
-
32
- begin
33
- # truncated JSON, Oj.saj_parse raises, #error not called
34
- parser.parse('{"foo{"bar":')
35
- rescue Exception => e
36
- puts "*** #{e.class}: #{e.message}"
37
- end
38
-
39
- puts "\n\n"
40
-
41
- begin
42
- # invalid JSON, doesn't raise an error
43
- parser.parse('{"foo":{"bar":}')
44
- rescue Exception => e
45
- puts "*** #{e.class}: #{e.message}"
46
- end
data/test/bug_fast.rb DELETED
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- %w(lib ext test).each do |dir|
5
- $LOAD_PATH.unshift File.expand_path("../../#{dir}", __FILE__)
6
- end
7
-
8
- require 'oj'
9
-
10
- def create_item(doc)
11
- #puts "#{doc.fetch('/id')}: #{doc.fetch('/labels/it/value')} - #{doc.fetch('/descriptions/it/value')}"
12
- doc.fetch('/id')
13
- doc.fetch('/labels/it/value')
14
- doc.fetch('/descriptions/it/value')
15
- end
16
-
17
- 100.times { |i|
18
- File.open('dump_10k.json') { |f|
19
- f.each { |line|
20
- #Oj::Doc.open(line) { |doc|
21
- doc = Oj::Doc.open(line)
22
- begin
23
- create_item(doc) if doc.fetch('/type') == 'item'
24
- rescue Exception => e
25
- puts "*** #{e.class}: #{e.message}"
26
- end
27
- doc.close
28
- #}
29
- }
30
- }
31
- puts i
32
- }
data/test/bug_load.rb DELETED
@@ -1,24 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- %w(lib ext test).each do |dir|
5
- $LOAD_PATH.unshift File.expand_path("../../#{dir}", __FILE__)
6
- end
7
-
8
- require 'oj'
9
-
10
- def create_item(doc)
11
- item_id = doc['source']
12
- # ...
13
- puts item_id
14
- end
15
-
16
- File.open('log.json') { |f|
17
- Oj::load(f, mode: :compat) { |doc|
18
- begin
19
- create_item(doc) if doc['msgType'] == 1
20
- rescue Exception => e
21
- puts "*** #{e.class}: #{e.message}"
22
- end
23
- }
24
- }
data/test/crash.rb DELETED
@@ -1,111 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- $VERBOSE = true
5
-
6
- %w(lib ext test).each do |dir|
7
- $LOAD_PATH.unshift File.expand_path("../../#{dir}", __FILE__)
8
- end
9
-
10
- require 'sqlite3'
11
- require 'active_record'
12
- require 'oj'
13
- require 'representable'
14
- require 'representable/json'
15
- require 'multi_json'
16
- MultiJson.use(:oj)
17
- Oj.default_options = {mode: :object, indent: 2}
18
-
19
- #ActiveRecord::Base.logger = Logger.new(STDERR)
20
-
21
- ActiveRecord::Base.establish_connection(
22
- :adapter => "sqlite3",
23
- :database => ":memory:"
24
- )
25
-
26
- ActiveRecord::Schema.define do
27
- create_table :users do |t|
28
- t.string "first_name"
29
- t.string "last_name"
30
- t.string "picture"
31
- t.integer "state", null: false
32
- t.integer "visible", default: 1, null: false
33
- t.integer "role", null: false
34
- t.string "position"
35
- t.integer "responded", default: 0
36
- t.string "slug"
37
- end
38
- end
39
-
40
- class User < ActiveRecord::Base
41
- end
42
- User.find_or_create_by(first_name: "John", last_name: "Smith",role:1,id:1,state: 0)
43
- User.find_or_create_by(first_name: "John", last_name: "Smith",role:1,id:2,state: 0)
44
-
45
-
46
- class PersonDecorator < Representable::Decorator
47
- include Representable::JSON
48
- include Representable::Hash
49
-
50
- property :id
51
-
52
- property :first_name
53
-
54
- property :last_name,
55
- default: nil
56
-
57
- property :name,
58
- getter: ->(_){ "#{first_name} #{last_name}".strip },
59
- writeable: false
60
-
61
- property :visible,
62
- render_filter: lambda{ |value, _| !value.zero? },
63
- parse_filter: lambda{ |value, _| value ? 1 : 0 },
64
- default: 1
65
-
66
- property :role,
67
- render_filter: lambda{ |value, _| { 1 => 'staff', 2 => 'manager' }[value].to_s },
68
- writeable: false
69
-
70
- property :position
71
-
72
- nested :image, skip_render: lambda{ |options| options[:represented].picture.nil? } do
73
- property :picture, as: :url, writeable: false
74
- end
75
-
76
- end
77
-
78
- class PersonViewModel
79
-
80
- def initialize(person, organization)
81
- @users = User.all
82
- @person = person
83
- @organization = organization
84
- end
85
-
86
- def to_json(options={})
87
- PersonDecorator.represent(@users.to_a)
88
- end
89
-
90
- def json_with_decorator(options={})
91
- PersonDecorator.new(person).to_json
92
- end
93
-
94
- def person
95
- @person
96
- end
97
- end
98
-
99
- class EmployeeViewModel < PersonViewModel
100
-
101
- end
102
-
103
- employee = User.find(1)
104
- emp_json = EmployeeViewModel.new(employee,nil)
105
- puts emp_json.to_json.to_json
106
- puts emp_json.json_with_decorator
107
- Oj.mimic_JSON
108
- # when i use Oj.mimic_JSON script crash
109
- # when i dont use Oj.mimic_JSON then dont use correct decorator
110
- puts Oj.dump(emp_json)
111
- puts Oj.dump(emp_json.to_json)
data/test/curl/curl_oj.rb DELETED
@@ -1,46 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- #$VERBOSE = true
5
-
6
- $: << File.dirname(__FILE__)
7
- $: << File.expand_path("../../ext")
8
- $: << File.expand_path("../../lib")
9
- $: << File.expand_path("../../../curb/ext")
10
- $: << File.expand_path("../../../curb/lib")
11
-
12
- require 'curb'
13
- require 'oj'
14
-
15
- $cnt = 0
16
-
17
- $url = "localhost:7660/data.json"
18
-
19
- begin
20
- while true
21
- before = GC.count
22
- curl = Curl::Easy.new($url)
23
- curl.ssl_verify_host = false
24
- curl.http_get
25
- if before != GC.count
26
- puts " did a GC in curl #{GC.count}"
27
- before = GC.count
28
- end
29
- =begin
30
- data = Oj.load(curl.body, symbol_keys: true, mode: :strict)
31
- puts " did a GC in Oj #{GC.count}" if before != GC.count
32
-
33
- if data[:data].nil? or data[:data].any? { |e| e.empty? }
34
- puts "body: #{curl.body}"
35
- raise "FAILED"
36
- end
37
- =end
38
- $cnt += 1
39
- print "\r #{$cnt}"
40
- end
41
- rescue Exception => e
42
- puts "#{e.class}: #{e.message}"
43
- puts "url: #{$url}"
44
- #puts "data: #{data}"
45
- #puts "data[data]: #{data[:data]}"
46
- end
data/test/curl/get_oj.rb DELETED
@@ -1,24 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- $VERBOSE = true
5
-
6
- $: << File.dirname(__FILE__)
7
- $: << File.expand_path("../../ext")
8
- $: << File.expand_path("../../lib")
9
-
10
- require 'net/http'
11
- require 'uri'
12
- require 'oj'
13
-
14
- $url = URI.parse("http://localhost:7660/data.json")
15
-
16
- $cnt = 0
17
-
18
- while true
19
- response = Net::HTTP.get_response($url)
20
- data = Oj.load(response.body, symbol_keys: true, mode: :strict)
21
- raise "FAILED" if data[:data].any? { |e| e.empty? }
22
- $cnt += 1
23
- print "\r #{$cnt}"
24
- end
@@ -1,31 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- #$VERBOSE = true
5
-
6
- $: << File.dirname(__FILE__)
7
- #$: << File.expand_path("../../../curb/ext")
8
- #$: << File.expand_path("../../../curb/lib")
9
-
10
- require 'curb'
11
-
12
- $cnt = 0
13
- $url = "localhost:7660/data.json"
14
-
15
- begin
16
- while true
17
- before = GC.count
18
- curl = Curl::Easy.new($url)
19
- curl.ssl_verify_host = false
20
- curl.http_get
21
- if before != GC.count
22
- puts " did a GC in curl #{GC.count}"
23
- before = GC.count
24
- end
25
- $cnt += 1
26
- print "\r #{$cnt}"
27
- end
28
- rescue Exception => e
29
- puts "#{e.class}: #{e.message}"
30
- puts "url: #{$url}"
31
- end
data/test/curl/just_oj.rb DELETED
@@ -1,51 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- $VERBOSE = true
5
-
6
- $: << File.dirname(__FILE__)
7
- $: << File.expand_path("../../ext")
8
- $: << File.expand_path("../../lib")
9
-
10
- require 'oj'
11
-
12
- $json = %|
13
- {
14
- "data" : [ {
15
- "action" : "login",
16
- "event" : "user",
17
- "field" : "login",
18
- "value" : "foobar",
19
- "info" : "Authenticated \\"Foo Bar\\"",
20
- "id" : "585929918297f2740ed9f5f0",
21
- "_metadata" : {
22
- "version" : "1"
23
- },
24
- "timestamp" : "2016-12-20T07:52:33",
25
- "key_id" : "4"
26
- } ],
27
- "info" : {
28
- "view" : "partial",
29
- "limit" : 500,
30
- "offset" : 2000,
31
- "results" : 500,
32
- "ordering" : "timestamp desc,id",
33
- "previous" : "https://api.server.com/some/path/event?calculate_total=false&draft=base&order_by=timestamp_desc&order_by=id&subdraft=none&offset=1500&limit=500",
34
- "next" : "https://api.server.com/some/path/event?calculate_total=false&draft=base&order_by=timestamp_desc&order_by=id&subdraft=none&offset=2500&limit=500",
35
- "draft" : "base",
36
- "subdraft" : "none",
37
- "total_results" : 100000
38
- }
39
- }
40
- |
41
-
42
- $cnt = 0
43
-
44
- while true
45
- before = GC.count
46
- data = Oj.load($json, symbol_keys: true, mode: :strict)
47
- puts " did a GC in Oj #{GC.count} - #{$cnt}" if before != GC.count
48
- raise "FAILED" if data[:data].any? { |e| e.empty? }
49
- $cnt += 1
50
- print "\r #{$cnt}" if 0 == ($cnt % 10000)
51
- end
data/test/example.rb DELETED
@@ -1,11 +0,0 @@
1
- %w(lib ext test).each do |dir|
2
- $LOAD_PATH.unshift File.expand_path("../../#{dir}", __FILE__)
3
- end
4
- require 'oj'
5
- require 'json'
6
-
7
- Oj::Doc.open([{:name => "T-Shirt"}].to_json) do |doc|
8
- doc.each_child do |child|
9
- p child.fetch("name")
10
- end
11
- end
data/test/files.rb DELETED
@@ -1,29 +0,0 @@
1
- #!/usr/bin/env ruby -wW2
2
-
3
- if $0 == __FILE__
4
- $: << '.'
5
- $: << '..'
6
- $: << '../lib'
7
- $: << '../ext'
8
- end
9
-
10
- require 'pp'
11
- require 'sample/file'
12
- require 'sample/dir'
13
-
14
- def files(dir)
15
- d = ::Sample::Dir.new(dir)
16
- Dir.new(dir).each do |fn|
17
- next if fn.start_with?('.')
18
- filename = File.join(dir, fn)
19
- #filename = '.' == dir ? fn : File.join(dir, fn)
20
- if File.directory?(filename)
21
- d << files(filename)
22
- else
23
- d << ::Sample::File.new(filename)
24
- end
25
- end
26
- #pp d
27
- d
28
- end
29
-
data/test/foo.rb DELETED
@@ -1,24 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- $VERBOSE = true
5
-
6
- here = File.expand_path(File.dirname(__FILE__))
7
- $: << File.dirname(__FILE__)
8
- $: << File.join(File.dirname(here), 'ext')
9
- $: << File.join(File.dirname(here), 'lib')
10
-
11
- require 'oj'
12
-
13
- Oj.mimic_JSON()
14
-
15
- class Foo
16
- def as_json
17
- { foo: 'bar' }
18
- end
19
- end
20
-
21
- opts = {}
22
-
23
- puts Foo.new.to_json
24
- puts Foo.new.to_json(opts)
data/test/helper.rb DELETED
@@ -1,27 +0,0 @@
1
- # Ubuntu does not accept arguments to ruby when called using env. To get warnings to show up the -w options is
2
- # required. That can be set in the RUBYOPT environment variable.
3
- # export RUBYOPT=-w
4
-
5
- $VERBOSE = true
6
-
7
- %w(lib ext test).each do |dir|
8
- $LOAD_PATH.unshift File.expand_path("../../#{dir}", __FILE__)
9
- end
10
-
11
- require 'rubygems' if RUBY_VERSION.start_with?('1.8.')
12
- require 'minitest'
13
- require 'minitest/autorun'
14
- require 'stringio'
15
- require 'date'
16
- require 'bigdecimal'
17
- require 'pp'
18
- require 'oj'
19
-
20
- $ruby = RUBY_DESCRIPTION.split(' ')[0]
21
- $ruby = 'ree' if 'ruby' == $ruby && RUBY_DESCRIPTION.include?('Ruby Enterprise Edition')
22
-
23
- class Range
24
- def to_hash()
25
- { 'begin' => self.begin, 'end' => self.end, 'exclude_end' => self.exclude_end? }
26
- end
27
- end