oj 3.16.9 → 3.16.10

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 (108) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/ext/oj/fast.c +3 -6
  4. data/ext/oj/mimic_json.c +3 -6
  5. data/ext/oj/oj.c +2 -4
  6. data/ext/oj/parse.c +15 -5
  7. data/ext/oj/parser.c +1 -1
  8. data/ext/oj/parser.h +2 -0
  9. data/ext/oj/rails.c +1 -2
  10. data/ext/oj/saj.c +3 -6
  11. data/ext/oj/scp.c +3 -6
  12. data/ext/oj/stream_writer.c +1 -7
  13. data/ext/oj/strict.c +2 -4
  14. data/ext/oj/string_writer.c +1 -3
  15. data/lib/oj/version.rb +1 -1
  16. metadata +3 -98
  17. data/test/_test_active.rb +0 -75
  18. data/test/_test_active_mimic.rb +0 -95
  19. data/test/_test_mimic_rails.rb +0 -123
  20. data/test/activerecord/result_test.rb +0 -31
  21. data/test/activesupport6/abstract_unit.rb +0 -44
  22. data/test/activesupport6/decoding_test.rb +0 -133
  23. data/test/activesupport6/encoding_test.rb +0 -542
  24. data/test/activesupport6/encoding_test_cases.rb +0 -98
  25. data/test/activesupport6/test_common.rb +0 -17
  26. data/test/activesupport6/test_helper.rb +0 -163
  27. data/test/activesupport6/time_zone_test_helpers.rb +0 -39
  28. data/test/activesupport7/abstract_unit.rb +0 -52
  29. data/test/activesupport7/decoding_test.rb +0 -125
  30. data/test/activesupport7/encoding_test.rb +0 -536
  31. data/test/activesupport7/encoding_test_cases.rb +0 -104
  32. data/test/activesupport7/time_zone_test_helpers.rb +0 -47
  33. data/test/files.rb +0 -29
  34. data/test/foo.rb +0 -26
  35. data/test/helper.rb +0 -39
  36. data/test/isolated/shared.rb +0 -309
  37. data/test/isolated/test_mimic_after.rb +0 -13
  38. data/test/isolated/test_mimic_alone.rb +0 -12
  39. data/test/isolated/test_mimic_as_json.rb +0 -45
  40. data/test/isolated/test_mimic_before.rb +0 -13
  41. data/test/isolated/test_mimic_define.rb +0 -28
  42. data/test/isolated/test_mimic_rails_after.rb +0 -22
  43. data/test/isolated/test_mimic_rails_before.rb +0 -21
  44. data/test/isolated/test_mimic_redefine.rb +0 -15
  45. data/test/json_gem/json_addition_test.rb +0 -216
  46. data/test/json_gem/json_common_interface_test.rb +0 -155
  47. data/test/json_gem/json_encoding_test.rb +0 -107
  48. data/test/json_gem/json_ext_parser_test.rb +0 -21
  49. data/test/json_gem/json_fixtures_test.rb +0 -36
  50. data/test/json_gem/json_generator_test.rb +0 -413
  51. data/test/json_gem/json_generic_object_test.rb +0 -90
  52. data/test/json_gem/json_parser_test.rb +0 -477
  53. data/test/json_gem/json_string_matching_test.rb +0 -42
  54. data/test/json_gem/test_helper.rb +0 -30
  55. data/test/mem.rb +0 -34
  56. data/test/perf.rb +0 -102
  57. data/test/perf_compat.rb +0 -128
  58. data/test/perf_dump.rb +0 -50
  59. data/test/perf_fast.rb +0 -162
  60. data/test/perf_file.rb +0 -62
  61. data/test/perf_object.rb +0 -134
  62. data/test/perf_once.rb +0 -59
  63. data/test/perf_parser.rb +0 -183
  64. data/test/perf_saj.rb +0 -101
  65. data/test/perf_scp.rb +0 -140
  66. data/test/perf_simple.rb +0 -289
  67. data/test/perf_strict.rb +0 -137
  68. data/test/perf_wab.rb +0 -129
  69. data/test/prec.rb +0 -23
  70. data/test/sample/change.rb +0 -13
  71. data/test/sample/dir.rb +0 -18
  72. data/test/sample/doc.rb +0 -35
  73. data/test/sample/file.rb +0 -47
  74. data/test/sample/group.rb +0 -15
  75. data/test/sample/hasprops.rb +0 -15
  76. data/test/sample/layer.rb +0 -11
  77. data/test/sample/line.rb +0 -20
  78. data/test/sample/oval.rb +0 -10
  79. data/test/sample/rect.rb +0 -9
  80. data/test/sample/shape.rb +0 -34
  81. data/test/sample/text.rb +0 -19
  82. data/test/sample.rb +0 -54
  83. data/test/sample_json.rb +0 -37
  84. data/test/test_compat.rb +0 -567
  85. data/test/test_custom.rb +0 -555
  86. data/test/test_debian.rb +0 -50
  87. data/test/test_fast.rb +0 -526
  88. data/test/test_file.rb +0 -250
  89. data/test/test_gc.rb +0 -60
  90. data/test/test_generate.rb +0 -21
  91. data/test/test_hash.rb +0 -39
  92. data/test/test_integer_range.rb +0 -72
  93. data/test/test_null.rb +0 -376
  94. data/test/test_object.rb +0 -1030
  95. data/test/test_parser.rb +0 -11
  96. data/test/test_parser_debug.rb +0 -27
  97. data/test/test_parser_saj.rb +0 -337
  98. data/test/test_parser_usual.rb +0 -255
  99. data/test/test_rails.rb +0 -35
  100. data/test/test_saj.rb +0 -188
  101. data/test/test_scp.rb +0 -431
  102. data/test/test_strict.rb +0 -441
  103. data/test/test_various.rb +0 -801
  104. data/test/test_wab.rb +0 -311
  105. data/test/test_writer.rb +0 -396
  106. data/test/tests.rb +0 -33
  107. data/test/tests_mimic.rb +0 -23
  108. data/test/tests_mimic_addition.rb +0 -16
data/test/perf_strict.rb DELETED
@@ -1,137 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- $LOAD_PATH << '.'
5
- $LOAD_PATH << File.join(__dir__, '../lib')
6
- $LOAD_PATH << File.join(__dir__, '../ext')
7
-
8
- require 'optparse'
9
- require 'perf'
10
- require 'oj'
11
-
12
- @verbose = false
13
- @indent = 0
14
- @iter = 20_000
15
- @with_bignum = false
16
- @with_nums = true
17
- @size = 0
18
- @symbolize = false
19
- @cache_keys = true
20
-
21
- opts = OptionParser.new
22
- opts.on('-v', 'verbose') { @verbose = true }
23
- opts.on('-c', '--count [Int]', Integer, 'iterations') { |i| @iter = i }
24
- opts.on('-i', '--indent [Int]', Integer, 'indentation') { |i| @indent = i }
25
- opts.on('-s', '--size [Int]', Integer, 'size (~Kbytes)') { |i| @size = i }
26
- opts.on('-b', 'with bignum') { @with_bignum = true }
27
- opts.on('-n', 'without numbers') { @with_nums = false }
28
- opts.on('-z', '--symbolize', 'symbolize keys') { @symbolize = true }
29
- opts.on('-k', '--no-cache', 'turn off key caching') { @cache_keys = false }
30
- opts.on('-h', '--help', 'Show this display') { puts opts; Process.exit!(0) }
31
- opts.parse(ARGV)
32
-
33
- if @with_nums
34
- @obj = {
35
- 'a' => 'Alpha', # string
36
- 'b' => true, # boolean
37
- 'c' => 12_345, # number
38
- 'd' => [ true, [false, [-123_456_789, nil], 3.9676, ['Something else.', false], nil]], # mix it up array
39
- 'e' => { 'zero' => nil, 'one' => 1, 'two' => 2, 'three' => [3], 'four' => [0, 1, 2, 3, 4] }, # hash
40
- 'f' => nil, # nil
41
- 'h' => { 'a' => { 'b' => { 'c' => { 'd' => {'e' => { 'f' => { 'g' => nil }}}}}}}, # deep hash, not that deep
42
- 'i' => [[[[[[[nil]]]]]]] # deep array, again, not that deep
43
- }
44
- @obj['g'] = 12_345_678_901_234_567_890_123_456_789 if @with_bignum
45
- else
46
- @obj = {
47
- 'a' => 'Alpha',
48
- 'b' => true,
49
- 'c' => '12345',
50
- 'd' => [ true, [false, ['12345', nil], '3.967', ['something', false], nil]],
51
- 'e' => { 'zero' => '0', 'one' => '1', 'two' => '2' },
52
- 'f' => nil,
53
- 'h' => { 'a' => { 'b' => { 'c' => { 'd' => {'e' => { 'f' => { 'g' => nil }}}}}}}, # deep hash, not that deep
54
- 'i' => [[[[[[[nil]]]]]]] # deep array, again, not that deep
55
- }
56
- end
57
-
58
- Oj.default_options = { :indent => @indent, :mode => :strict, cache_keys: @cache_keys, cache_str: 5 }
59
-
60
- if 0 < @size
61
- ob = @obj
62
- @obj = []
63
- (4 * @size).times do
64
- @obj << ob
65
- end
66
- end
67
-
68
- @json = Oj.dump(@obj)
69
- @failed = {} # key is same as String used in tests later
70
-
71
- def capture_error(tag, orig, load_key, dump_key, &blk)
72
- obj = blk.call(orig)
73
- raise "#{tag} #{dump_key} and #{load_key} did not return the same object as the original." unless orig == obj
74
- rescue Exception => e
75
- @failed[tag] = "#{e.class}: #{e.message}"
76
- end
77
-
78
- # Verify that all packages dump and load correctly and return the same Object as the original.
79
- capture_error('Oj:strict', @obj, 'load', 'dump') { |o|
80
- Oj.strict_load(Oj.dump(o))
81
- }
82
- capture_error('Yajl', @obj, 'encode', 'parse') { |o|
83
- require 'yajl'
84
- Yajl::Parser.parse(Yajl::Encoder.encode(o))
85
- }
86
- capture_error('JSON::Ext', @obj, 'generate', 'parse') { |o|
87
- require 'json'
88
- require 'json/ext'
89
- JSON.generator = JSON::Ext::Generator
90
- JSON.parser = JSON::Ext::Parser
91
- JSON.parse(JSON.generate(o))
92
- }
93
-
94
- Oj.default_options = { symbol_keys: @symbolize }
95
-
96
- if @verbose
97
- puts "json:\n#{@json}\n"
98
- puts "Oj loaded object:\n#{Oj.strict_load(@json)}\n"
99
- puts "Yajl loaded object:\n#{Yajl::Parser.parse(@json)}\n"
100
- puts "JSON loaded object:\n#{JSON::Ext::Parser.new(@json).parse}\n"
101
- end
102
-
103
- puts '-' * 80
104
- puts 'Strict Parse Performance'
105
- perf = Perf.new()
106
- unless @failed.key?('JSON::Ext')
107
- perf.add('JSON::Ext', 'parse') { JSON.parse(@json, symbolize_names: @symbolize) }
108
- perf.before('JSON::Ext') { JSON.parser = JSON::Ext::Parser }
109
- end
110
- unless @failed.key?('Oj:strict')
111
- perf.add('Oj:strict', 'strict_load') { Oj.strict_load(@json) }
112
- perf.add('Oj:wab', 'wab_load') { Oj.wab_load(@json) }
113
- end
114
- perf.add('Yajl', 'parse') { Yajl::Parser.parse(@json) } unless @failed.key?('Yajl')
115
- perf.run(@iter)
116
-
117
- puts '-' * 80
118
- puts 'Strict Dump Performance'
119
- perf = Perf.new()
120
- unless @failed.key?('JSON::Ext')
121
- perf.add('JSON::Ext', 'dump') { JSON.generate(@obj) }
122
- perf.before('JSON::Ext') { JSON.generator = JSON::Ext::Generator }
123
- end
124
- unless @failed.key?('Oj:strict')
125
- perf.add('Oj:strict', 'dump') { Oj.dump(@obj) }
126
- end
127
- perf.add('Yajl', 'encode') { Yajl::Encoder.encode(@obj) } unless @failed.key?('Yajl')
128
- perf.run(@iter)
129
-
130
- puts
131
- puts '-' * 80
132
- puts
133
-
134
- unless @failed.empty?
135
- puts 'The following packages were not included for the reason listed'
136
- @failed.each { |tag, msg| puts "***** #{tag}: #{msg}" }
137
- end
data/test/perf_wab.rb DELETED
@@ -1,129 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- $LOAD_PATH << '.'
5
- $LOAD_PATH << File.join(__dir__, '../lib')
6
- $LOAD_PATH << File.join(__dir__, '../ext')
7
-
8
- require 'optparse'
9
- require 'perf'
10
- require 'oj'
11
-
12
- @verbose = false
13
- @indent = 0
14
- @iter = 20_000
15
- @with_bignum = false
16
- @with_nums = true
17
- @size = 0
18
-
19
- opts = OptionParser.new
20
- opts.on('-v', 'verbose') { @verbose = true }
21
- opts.on('-c', '--count [Int]', Integer, 'iterations') { |i| @iter = i }
22
- opts.on('-i', '--indent [Int]', Integer, 'indentation') { |i| @indent = i }
23
- opts.on('-s', '--size [Int]', Integer, 'size (~Kbytes)') { |i| @size = i }
24
- opts.on('-b', 'with bignum') { @with_bignum = true }
25
- opts.on('-h', '--help', 'Show this display') { puts opts; Process.exit!(0) }
26
- opts.parse(ARGV)
27
-
28
- @obj = {
29
- a: 'Alpha', # string
30
- b: true, # boolean
31
- c: 12_345, # number
32
- d: [ true, [false, [-123_456_789, nil], 3.9676, ['Something else.', false], nil]], # mix it up array
33
- e: { zero: nil, one: 1, two: 2, three: [3], four: [0, 1, 2, 3, 4] }, # hash
34
- f: nil, # nil
35
- h: { a: { b: { c: { d: {e: { f: { g: nil }}}}}}}, # deep hash, not that deep
36
- i: [[[[[[[nil]]]]]]] # deep array, again, not that deep
37
- }
38
- @obj[:g] = 12_345_678_901_234_567_890_123_456_789 if @with_bignum
39
-
40
- Oj.default_options = { :indent => @indent, :mode => :wab }
41
-
42
- if 0 < @size
43
- ob = @obj
44
- @obj = []
45
- (4 * @size).times do
46
- @obj << ob
47
- end
48
- end
49
-
50
- @json = Oj.dump(@obj)
51
- @obj_json = Oj.dump(@obj, :mode => :object)
52
- # puts "*** size: #{@obj_json.size}"
53
- # puts "*** #{@obj_json}"
54
- @failed = {} # key is same as String used in tests later
55
-
56
- def capture_error(tag, orig, load_key, dump_key, &blk)
57
- obj = blk.call(orig)
58
- raise "#{tag} #{dump_key} and #{load_key} did not return the same object as the original." unless orig == obj
59
- rescue Exception => e
60
- @failed[tag] = "#{e.class}: #{e.message}"
61
- end
62
-
63
- # Verify that all packages dump and load correctly and return the same Object as the original.
64
- capture_error('Oj:wab', @obj, 'load', 'dump') { |o| Oj.wab_load(Oj.dump(o, :mode => :wab)) }
65
- capture_error('Yajl', @obj, 'encode', 'parse') { |o| require 'yajl'; Yajl::Parser.parse(Yajl::Encoder.encode(o)) }
66
- capture_error('JSON::Ext', @obj, 'generate', 'parse') { |o|
67
- require 'json'
68
- require 'json/ext'
69
- JSON.generator = JSON::Ext::Generator
70
- JSON.parser = JSON::Ext::Parser
71
- JSON.parse(JSON.generate(o))
72
- }
73
- capture_error('JSON::Pure', @obj, 'generate', 'parse') { |o|
74
- require 'json/pure'
75
- JSON.generator = JSON::Pure::Generator
76
- JSON.parser = JSON::Pure::Parser
77
- JSON.parse(JSON.generate(o))
78
- }
79
-
80
- if @verbose
81
- puts "json:\n#{@json}\n"
82
- puts "object json:\n#{@obj_json}\n"
83
- puts "Oj loaded object:\n#{Oj.wab_load(@json)}\n"
84
- puts "Yajl loaded object:\n#{Yajl::Parser.parse(@json)}\n"
85
- puts "JSON loaded object:\n#{JSON::Ext::Parser.new(@json).parse}\n"
86
- end
87
-
88
- puts '-' * 80
89
- puts 'Wab Parse Performance'
90
- perf = Perf.new()
91
- unless @failed.key?('JSON::Ext')
92
- perf.add('JSON::Ext', 'parse') { JSON.parse(@json) }
93
- perf.before('JSON::Ext') { JSON.parser = JSON::Ext::Parser }
94
- end
95
- unless @failed.key?('JSON::Pure')
96
- perf.add('JSON::Pure', 'parse') { JSON.parse(@json) }
97
- perf.before('JSON::Pure') { JSON.parser = JSON::Pure::Parser }
98
- end
99
- unless @failed.key?('Oj:wab')
100
- perf.add('Oj:wab', 'wab_load') { Oj.wab_load(@json) }
101
- end
102
- perf.add('Yajl', 'parse') { Yajl::Parser.parse(@json) } unless @failed.key?('Yajl')
103
- perf.run(@iter)
104
-
105
- puts '-' * 80
106
- puts 'Wab Dump Performance'
107
- perf = Perf.new()
108
- unless @failed.key?('JSON::Ext')
109
- perf.add('JSON::Ext', 'dump') { JSON.generate(@obj) }
110
- perf.before('JSON::Ext') { JSON.generator = JSON::Ext::Generator }
111
- end
112
- unless @failed.key?('JSON::Pure')
113
- perf.add('JSON::Pure', 'generate') { JSON.generate(@obj) }
114
- perf.before('JSON::Pure') { JSON.generator = JSON::Pure::Generator }
115
- end
116
- unless @failed.key?('Oj:wab')
117
- perf.add('Oj:wab', 'dump') { Oj.dump(@obj, :mode => :wab) }
118
- end
119
- perf.add('Yajl', 'encode') { Yajl::Encoder.encode(@obj) } unless @failed.key?('Yajl')
120
- perf.run(@iter)
121
-
122
- puts
123
- puts '-' * 80
124
- puts
125
-
126
- unless @failed.empty?
127
- puts 'The following packages were not included for the reason listed'
128
- @failed.each { |tag, msg| puts "***** #{tag}: #{msg}" }
129
- end
data/test/prec.rb DELETED
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'oj'
4
-
5
- extras = { 'locationLng' => -97.14690769100295 }
6
-
7
- Oj.default_options = { float_precision: 17 }
8
-
9
- encoded = Oj.dump(extras)
10
- puts encoded
11
- puts Oj.load(encoded)
12
-
13
- require 'active_record'
14
-
15
- Oj::Rails.set_encoder()
16
- Oj::Rails.set_decoder()
17
-
18
- Oj.default_options = { float_precision: 17 }
19
- # Using Oj rails encoder, gets the correct value: { 'locationLng':-97.14690769100295 }
20
- encoded = ActiveSupport::JSON.encode(extras)
21
- puts encoded
22
- puts ActiveSupport::JSON.decode(encoded)
23
- puts Oj.load(encoded)
@@ -1,13 +0,0 @@
1
- module Sample
2
- class Change
3
- attr_accessor :time
4
- attr_accessor :user
5
- attr_accessor :comment
6
-
7
- def initialize(comment=nil, time=nil, user=nil)
8
- @user = user || ENV['USER']
9
- @time = time || Time.now
10
- @comment = comment
11
- end
12
- end # Change
13
- end # Sample
data/test/sample/dir.rb DELETED
@@ -1,18 +0,0 @@
1
- require 'etc'
2
-
3
- module Sample
4
-
5
- class Dir < File
6
- attr_accessor :files
7
-
8
- def initialize(filename)
9
- super
10
- @files = []
11
- end
12
-
13
- def <<(f)
14
- @files << f
15
- end
16
-
17
- end # Dir
18
- end # Sample
data/test/sample/doc.rb DELETED
@@ -1,35 +0,0 @@
1
- require 'sample/hasprops'
2
- require 'sample/group'
3
- require 'sample/layer'
4
- require 'sample/line'
5
- require 'sample/shape'
6
- require 'sample/oval'
7
- require 'sample/rect'
8
- require 'sample/text'
9
- require 'sample/change'
10
-
11
- module Sample
12
- class Doc
13
- include HasProps
14
-
15
- attr_accessor :title
16
- attr_accessor :create_time
17
- attr_accessor :user
18
- # Hash of layers in the document indexed by layer name.
19
- attr_reader :layers
20
- attr_reader :change_history
21
-
22
- def initialize(title)
23
- @title = title
24
- @user = ENV['USER']
25
- @create_time = Time.now
26
- @layers = { }
27
- @change_history = []
28
- end
29
-
30
- def add_change(comment, time=nil, user=nil)
31
- @change_history << Change.new(comment, time, user)
32
- end
33
-
34
- end # Doc
35
- end # Sample
data/test/sample/file.rb DELETED
@@ -1,47 +0,0 @@
1
- require 'etc'
2
-
3
- module Sample
4
-
5
- class File
6
- attr_accessor :name, :ctime, :mtime, :size, :owner, :group, :permissions
7
-
8
- def initialize(filename)
9
- @name = ::File.basename(filename)
10
- stat = ::File.stat(filename)
11
- @ctime = stat.ctime
12
- @mtime = stat.mtime
13
- @size = stat.size
14
- @owner = Etc.getpwuid(stat.uid).name
15
- @group = Etc.getgrgid(stat.gid).name
16
- if false
17
- @permissions = {
18
- 'user' => {
19
- 'read' => (0 != (stat.mode & 0x0100)),
20
- 'write' => (0 != (stat.mode & 0x0080)),
21
- 'execute' => (0 != (stat.mode & 0x0040))},
22
- 'group' => {
23
- 'read' => (0 != (stat.mode & 0x0020)),
24
- 'write' => (0 != (stat.mode & 0x0010)),
25
- 'execute' => (0 != (stat.mode & 0x0008))},
26
- 'other' => {
27
- 'read' => (0 != (stat.mode & 0x0004)),
28
- 'write' => (0 != (stat.mode & 0x0002)),
29
- 'execute' => (0 != (stat.mode & 0x0001))}
30
- }
31
- else
32
- @permissions = {
33
- 'user' => [(0 != (stat.mode & 0x0100)) ? 'r' : '-',
34
- (0 != (stat.mode & 0x0080)) ? 'w' : '-',
35
- (0 != (stat.mode & 0x0040)) ? 'x' : '-'].join(''),
36
- 'group' => [(0 != (stat.mode & 0x0020)) ? 'r' : '-',
37
- (0 != (stat.mode & 0x0010)) ? 'w' : '-',
38
- (0 != (stat.mode & 0x0008)) ? 'x' : '-'].join(''),
39
- 'other' => [(0 != (stat.mode & 0x0004)) ? 'r' : '-',
40
- (0 != (stat.mode & 0x0002)) ? 'w' : '-',
41
- (0 != (stat.mode & 0x0001)) ? 'x' : '-'].join('')
42
- }
43
- end
44
- end
45
-
46
- end # File
47
- end # Sample
data/test/sample/group.rb DELETED
@@ -1,15 +0,0 @@
1
- module Sample
2
- class Group
3
- attr_reader :members
4
-
5
- def initialize()
6
- @members = []
7
- end
8
-
9
- def <<(member)
10
- @members << member
11
- end
12
-
13
- end # Group
14
- end # Sample
15
-
@@ -1,15 +0,0 @@
1
- module Sample
2
- module HasProps
3
-
4
- def add_prop(key, value)
5
- @props = { } unless self.instance_variable_defined?(:@props)
6
- @props[key] = value
7
- end
8
-
9
- def props
10
- @props = { } unless self.instance_variable_defined?(:@props)
11
- @props
12
- end
13
-
14
- end # HasProps
15
- end # Sample
data/test/sample/layer.rb DELETED
@@ -1,11 +0,0 @@
1
- module Sample
2
- class Layer < Group
3
- attr_accessor :name
4
-
5
- def initialize(name)
6
- super()
7
- @name = name
8
- end
9
-
10
- end # Layer
11
- end # Sample
data/test/sample/line.rb DELETED
@@ -1,20 +0,0 @@
1
- module Sample
2
-
3
- class Line
4
- include HasProps
5
-
6
- attr_accessor :x, :y, :dx, :dy
7
- attr_accessor :color
8
- attr_accessor :thick
9
-
10
- def initialize(x, y, dx, dy, thick, color)
11
- @x = x
12
- @y = y
13
- @dx = dx
14
- @dy = dy
15
- @thick = thick
16
- @color = color
17
- end
18
-
19
- end # Line
20
- end # Sample
data/test/sample/oval.rb DELETED
@@ -1,10 +0,0 @@
1
- module Sample
2
-
3
- class Oval < Shape
4
-
5
- def initialize(left, top, wide, high, color=nil)
6
- super
7
- end
8
-
9
- end # Oval
10
- end # Sample
data/test/sample/rect.rb DELETED
@@ -1,9 +0,0 @@
1
- module Sample
2
- class Rect < Shape
3
-
4
- def initialize(left, top, wide, high, color=nil)
5
- super
6
- end
7
-
8
- end # Rect
9
- end # Sample
data/test/sample/shape.rb DELETED
@@ -1,34 +0,0 @@
1
- module Sample
2
- class Shape
3
- include HasProps
4
-
5
- attr_accessor :bounds
6
- attr_accessor :color
7
- attr_accessor :border, :border_color
8
-
9
- def initialize(left, top, wide, high, color=nil)
10
- @bounds = [[left, top], [left + wide, top + high]]
11
- @color = color
12
- @border = 1
13
- @border_color = :black
14
- end
15
-
16
- def left
17
- @bounds[0][0]
18
- end
19
-
20
- def top
21
- @bounds[0][1]
22
- end
23
-
24
- def width
25
- @bounds[1][0] - @bounds[0][0]
26
- end
27
-
28
- def height
29
- @bounds[1][1] - @bounds[0][1]
30
- end
31
-
32
- end # Shape
33
- end # Sample
34
-
data/test/sample/text.rb DELETED
@@ -1,19 +0,0 @@
1
- module Sample
2
- class Text < Shape
3
- attr_accessor :text
4
- attr_accessor :font
5
- attr_accessor :font_size
6
- attr_accessor :just
7
- attr_accessor :text_color
8
-
9
- def initialize(text, left, top, wide, high, color=nil)
10
- super(left, top, wide, high, color)
11
- @text = text
12
- @font = 'helvetica'
13
- @font_size = 14
14
- @just = 'left'
15
- @text_color = 'black'
16
- end
17
-
18
- end # Text
19
- end # Sample
data/test/sample.rb DELETED
@@ -1,54 +0,0 @@
1
- #!/usr/bin/env ruby -wW2
2
- # frozen_string_literal: true
3
-
4
- if $PROGRAM_NAME == __FILE__
5
- $LOAD_PATH << '.'
6
- $LOAD_PATH << '..'
7
- $LOAD_PATH << '../lib'
8
- $LOAD_PATH << '../ext'
9
- end
10
-
11
- require 'sample/doc'
12
-
13
- def sample_doc(size=3)
14
- colors = [ :black, :gray, :white, :red, :blue, :yellow, :green, :purple, :orange ]
15
-
16
- d = Sample::Doc.new('Sample')
17
-
18
- # add some history
19
- (0..size * 10).each do |i|
20
- d.add_change("Changed at t+#{i}.")
21
- end
22
-
23
- # add some layers
24
- (1..size).each do |i|
25
- layer = Sample::Layer.new("Layer-#{i}")
26
- (1..size).each do |j|
27
- g = Sample::Group.new
28
- (1..size).each do |k|
29
- g2 = Sample::Group.new
30
- r = Sample::Rect.new((j * 40) + 10.0, i * 10.0,
31
- 10.123456 / k, 10.0 / k, colors[(i + j + k) % colors.size])
32
- r.add_prop(:part_of, layer.name)
33
- g2 << r
34
- g2 << Sample::Text.new("#{k} in #{j}", r.left, r.top, r.width, r.height)
35
- g << g2
36
- end
37
- g2 = Sample::Group.new
38
- (1..size).each do |k|
39
- o = Sample::Oval.new((j * 40) + 12.0, (i * 10.0) + 2.0,
40
- 6.0 / k, 6.0 / k, colors[(i + j + k) % colors.size])
41
- o.add_prop(:inside, true)
42
- g << o
43
- end
44
- g << g2
45
- layer << g
46
- end
47
- d.layers[layer.name] = layer
48
- end
49
-
50
- # some properties
51
- d.add_prop(:purpose, 'an example')
52
-
53
- d
54
- end
data/test/sample_json.rb DELETED
@@ -1,37 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- if $PROGRAM_NAME == __FILE__
5
- $LOAD_PATH << '.'
6
- $LOAD_PATH << '..'
7
- $LOAD_PATH << '../lib'
8
- $LOAD_PATH << '../ext'
9
- end
10
-
11
- require 'oj'
12
-
13
- def sample_json(size=3)
14
- colors = [ :black, :gray, :white, :red, :blue, :yellow, :green, :purple, :orange ]
15
- container = []
16
- size.times do |i|
17
- box = {
18
- 'color' => colors[i % colors.size],
19
- 'fragile' => (0 == (i % 2)),
20
- 'width' => i,
21
- 'height' => i,
22
- 'depth' => i,
23
- 'weight' => i * 1.3,
24
- 'address' => {
25
- 'street' => "#{i} Main Street",
26
- 'city' => 'Sity',
27
- 'state' => nil
28
- }
29
- }
30
- container << box
31
- end
32
- container
33
- end
34
-
35
- if $PROGRAM_NAME == __FILE__
36
- File.write('sample.json', Oj.dump(sample_json(3), :indent => 2))
37
- end