divine 0.0.2 → 0.0.3

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 (44) hide show
  1. data/.gitignore +30 -0
  2. data/README.md +57 -0
  3. data/Rakefile +45 -18
  4. data/lib/divine.rb +3 -3
  5. data/lib/divine/code_generators/code_generator.rb +112 -14
  6. data/lib/divine/code_generators/java.rb +144 -80
  7. data/lib/divine/code_generators/javascript.rb +192 -104
  8. data/lib/divine/code_generators/ruby.rb +133 -60
  9. data/lib/divine/dsl.rb +70 -12
  10. data/lib/divine/version.rb +1 -1
  11. data/test/basic_complex_test/js_test/js_testBasic.js +1 -1
  12. data/test/basic_complex_test/js_test/js_testComplex.js +1 -1
  13. data/test/basic_complex_test/ruby_test/ruby_test.rb +10 -10
  14. data/test/binaryTree_test/js_test/js_test.js +1 -1
  15. data/test/binaryTree_test/ruby_test/ruby_test.rb +4 -4
  16. data/test/complex_test/js_test/js_test.js +3 -2
  17. data/test/ipv6_test/java_test/JavaTest.java +4 -6
  18. data/test/ipv6_test/js_test/js_test.js +1 -1
  19. data/test/signed_float_test/ruby_test/ruby_test.rb +36 -0
  20. data/test/signed_float_test/signed_float_test.rb +14 -0
  21. data/test/signed_int_test/java_test/JavaTest.java +83 -0
  22. data/test/signed_int_test/js_test/js_test.js +55 -0
  23. data/test/signed_int_test/ruby_test/ruby_test.rb +37 -0
  24. data/test/signed_int_test/signed_int_test.rb +15 -0
  25. data/test/unify_test/unify_test.rb +24 -13
  26. metadata +14 -38
  27. data/test/basic_complex_test/java_test/test_babel.java +0 -368
  28. data/test/basic_complex_test/js_test/test_babel.js +0 -523
  29. data/test/basic_complex_test/ruby_test/test_babel.rb +0 -368
  30. data/test/binaryTree_test/java_test/test_binaryTree.java +0 -301
  31. data/test/binaryTree_test/js_test/test_binaryTree.js +0 -447
  32. data/test/binaryTree_test/ruby_test/test_binaryTree.rb +0 -303
  33. data/test/complex_test/java_test/test_complex.java +0 -331
  34. data/test/complex_test/js_test/test_complex.js +0 -478
  35. data/test/complex_test/ruby_test/test_complex.rb +0 -330
  36. data/test/ipv6_test/java_test/junit.jar +0 -0
  37. data/test/ipv6_test/java_test/test_ipv6.java +0 -270
  38. data/test/ipv6_test/js_test/test_ipv6.js +0 -409
  39. data/test/ipv6_test/ruby_test/test_ipv6.rb +0 -267
  40. data/test/unify_test/java_test/test_unify.java +0 -171
  41. data/test/unify_test/js_test/js_test.js +0 -56
  42. data/test/unify_test/js_test/test_unify.js +0 -326
  43. data/test/unify_test/ruby_test/ruby_test.rb +0 -35
  44. data/test/unify_test/ruby_test/test_unify.rb +0 -187
@@ -1,35 +0,0 @@
1
- require_relative 'test_unify.rb'
2
- require 'minitest/autorun'
3
-
4
- class TestBabelTestBasic < MiniTest::Unit::TestCase
5
-
6
- def test_unify
7
- obj_ser = BabelTest::UnifySer.new
8
- obj_ser.map1 = {2 => 15, 3 => 16}
9
- obj_ser.str = "What is This?"
10
- #ser = obj.serialize
11
- #serialize(ser)
12
- res = deserialize()
13
-
14
- obj_deser = BabelTest::UnifySer.new
15
- obj_deser.deserialize res
16
- compare(obj_ser, obj_deser)
17
-
18
- end
19
-
20
- def compare(obj_ser, obj_deser)
21
- puts obj_deser.str
22
- assert obj_ser.map1 == obj_deser.map1
23
- end
24
-
25
- def serialize(data)
26
- File.open("bin.babel.rb", "w+b") do |f|
27
- f.write(data)
28
- end
29
- end
30
-
31
- def deserialize()
32
- mem_buf = File.new('bin.babel.js').binmode
33
- end
34
-
35
- end
@@ -1,187 +0,0 @@
1
- module BabelTest
2
-
3
-
4
- class BabelBase < Object
5
- public
6
- def serialize
7
- out = []
8
- serialize_internal(out)
9
- out.flatten.pack("C*")
10
- end
11
-
12
- protected
13
- ### Read methods ###
14
- def read_int8(data)
15
- data.getbyte
16
- end
17
-
18
- def read_int16(data)
19
- (data.getbyte << 8) | read_int8(data)
20
- end
21
-
22
- def read_int24(data)
23
- (data.getbyte << 16) | read_int16(data)
24
- end
25
-
26
- def read_int32(data)
27
- (data.getbyte << 24) | read_int24(data)
28
- end
29
-
30
- def read_bool(data)
31
- read_int8(data) == 1
32
- end
33
-
34
- def read_string(data)
35
- data.read(read_int16(data)).force_encoding('UTF-8')
36
- end
37
-
38
- def read_binary(data)
39
- data.read(read_int32(data))
40
- end
41
-
42
- def read_short_binary(data)
43
- data.read(read_int8(data))
44
- end
45
-
46
- def read_ip_number(data)
47
- read_short_binary(data).bytes.to_a.join('.')
48
- end
49
-
50
- ### Write methods ###
51
- def write_int8(v, out)
52
- v = v.to_i
53
- raise_error "Too large int8 number: #{v}" if v > 0xFF # Max 255
54
- out << v
55
- end
56
-
57
- def write_int16(v, out)
58
- v = v.to_i
59
- raise_error "Too large int16 number: #{v}" if v > 0xFFFF # Max 65.535
60
- write_int8( v >> 8 & 0xFF, out)
61
- write_int8( v & 0xFF, out)
62
- end
63
-
64
- def write_int24(v, out)
65
- v = v.to_i
66
- raise_error "Too large int24 number: #{v}" if v > 0xFFFFFF # Max 16.777.215
67
- write_int8( v >> 16 & 0xFF, out)
68
- write_int16( v & 0xFFFF, out)
69
- end
70
-
71
- def write_int32(v, out)
72
- v = v.to_i
73
- raise_error "Too large int32 number: #{v}" if v > 0xFFFFFFFF # Max 4.294.967.295
74
- write_int8( v >> 24 & 0xFF, out)
75
- write_int24( v & 0xFFFFFF, out)
76
- end
77
-
78
- def write_bool(v, out)
79
- write_int8(v ? 1 : 0, out)
80
- end
81
-
82
- def write_string(v, out)
83
- s = force_to_utf8_string(v)
84
- raise_error "Too large string: #{s.bytesize} bytes" if s.bytesize > 0xFFFF
85
- write_int16(s.bytesize, out)
86
- out << s.bytes.to_a
87
- end
88
-
89
- def write_binary(v, out)
90
- if v.is_a?(Array)
91
- raise_error "Too large binary: #{v.size} (#{v.class.name})" unless v.size < 0xFFFFFFFF
92
- write_int32(v.size, out)
93
- v.each do |x|
94
- write_int8(x, out)
95
- end
96
- elsif v.is_a?(String)
97
- raise_error "Too large binary: #{v.size} (#{v.class.name})" unless v.size < 0xFFFFFFFF
98
- write_int32(v.size, out)
99
- out << v.bytes.to_a
100
- else
101
- raise_error "Unsupported binary 'nil'" if v == nil
102
- raise_error "Unsupported binary of type '#{v.class.name}'"
103
- end
104
- end
105
-
106
- def write_short_binary(v, out)
107
- if v.is_a?(Array)
108
- raise_error "Too large short_binary: #{v.size} (#{v.class.name})" unless v.size < 0xFF
109
- write_int8(v.size, out)
110
- v.each do |x|
111
- write_int8(x, out)
112
- end
113
- elsif v.is_a?(String)
114
- raise_error "To large short_binary: #{v.size} (#{v.class.name})" unless v.size < 0xFF
115
- write_int8(v.size, out)
116
- out << v.bytes.to_a
117
- else
118
- raise_error "Unsupported binary 'nil'" if v == nil
119
- raise_error "Unsupported binary of type '#{v.class.name}'"
120
- end
121
- end
122
-
123
- def write_ip_number(v, out)
124
- if v.is_a?(Array)
125
- raise_error "Unknown IP v4 number #{v}" unless v.size == 0 || v.size == 4 # Only IPv4 for now
126
- write_short_binary(v, out)
127
- elsif v.is_a?(String)
128
- ss = v.split(/\./).map do |s|
129
- s.to_i
130
- end
131
- write_ip_number(ss, out)
132
- else
133
- raise_error "Unknown IP number '#{v}'"
134
- end
135
- end
136
-
137
- private
138
- def raise_error(msg)
139
- raise "[#{self.class.name}] #{msg}"
140
- end
141
-
142
- def force_to_utf8_string(string)
143
- if string.encoding != Encoding::UTF_8
144
- string = string.encode(Encoding::UTF_8)
145
- end
146
- return string
147
- end
148
- end
149
-
150
-
151
-
152
- class UnifySer < BabelBase
153
- attr_accessor :str, :map1
154
-
155
- def initialize()
156
- super
157
- @str ||= ""
158
- @map1 ||= {}
159
- end
160
-
161
- def serialize_internal(out)
162
- print "+"
163
- write_string(str, out)
164
- # Serialize map 'map1'
165
- write_int32(map1.size, out)
166
- map1.each_pair do |var_100, var_101|
167
- write_int8(var_100, out)
168
- write_int32(var_101, out)
169
- end
170
- end
171
-
172
- def deserialize(data)
173
- print "-"
174
- @str = read_string(data)
175
- # Deserialize map 'map1'
176
- @map1 = {}
177
- var_102 = read_int32(data)
178
- (1..var_102).each do
179
- var_103 = read_int8(data)
180
- var_104 = read_int32(data)
181
- @map1[var_103] = var_104
182
- end
183
- end
184
- end
185
-
186
-
187
- end