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
@@ -8,7 +8,7 @@ var ca = binaryTree_ser.serialize();
8
8
  serialize(ca);
9
9
  var read = deserialize();
10
10
  var binaryTree_deser = new BinaryTree();
11
- binaryTree_deser.deserialize(new BabelDataReader(read));
11
+ binaryTree_deser.deserialize(new DivineDataReader(read));
12
12
  compareBinaryTree(binaryTree_ser, binaryTree_deser);
13
13
 
14
14
 
@@ -49,10 +49,10 @@ class TestBabelTestBasic < MiniTest::Unit::TestCase
49
49
  end
50
50
 
51
51
  def compareBinaryTree(bt1, bt2)
52
- assert bt1.root_node.length == bt2.root_node.length
53
- assert bt1.root_node[0].i32 == bt2.root_node[0].i32
54
- assert bt1.root_node[0].next_node.length == bt2.root_node[0].next_node.length
55
- assert bt1.root_node[0].next_node[0].next_node[0].i32 == bt2.root_node[0].next_node[0].next_node[0].i32
52
+ assert_equal bt1.root_node.length, bt2.root_node.length
53
+ assert_equal bt1.root_node[0].i32, bt2.root_node[0].i32
54
+ assert_equal bt1.root_node[0].next_node.length, bt2.root_node[0].next_node.length
55
+ assert_equal bt1.root_node[0].next_node[0].next_node[0].i32, bt2.root_node[0].next_node[0].next_node[0].i32
56
56
  end
57
57
 
58
58
  def serialize(data)
@@ -11,14 +11,15 @@ serialize(ca);
11
11
  var read = deserialize();
12
12
 
13
13
  var com_deser = new Complex();
14
- com_deser.deserialize(new BabelDataReader(read));
14
+ com_deser.deserialize(new DivineDataReader(read));
15
15
  compare(com_ser, com_deser);
16
16
 
17
17
  function buildObject(){
18
18
  var ipList_1 = new IPList();
19
- ipList_1.list1 = ["10.2.2.1","127.0.0.1","129.36.58.15"];
19
+ ipList_1.list1 = ["10.2.2.1","127.0.0.1","129.36.58.15"]
20
20
  ipList_1.list2 = ["2001:db8::ff00:1:8329","ff:ac:12::5f","1::"]
21
21
 
22
+
22
23
  var ipList_2 = new IPList();
23
24
  ipList_2.list1 = ["100.20.20.10","17.10.10.1","12.36.68.105"];
24
25
  ipList_2.list2 = ["ff:fabf:faf:f15f:f1ff:f2f:1f:f2", "2001:db8::ff00:1:8329","::1"]
@@ -30,14 +30,12 @@ public class JavaTest {
30
30
  obj.list1 = new ArrayList<String>(){{
31
31
  add("255.102.0.25");
32
32
  add("ff:fabf:faf:f15f:f1ff:f2f:1f:f2");
33
+ add("2001:db8::ff00:1:8329");
34
+ add("f::");
35
+ add("::1");
36
+ add("");
33
37
  }};
34
38
 
35
- // Should Success
36
- // obj.ip = "2001:db8::ff00:1:8329";
37
- // obj.ip = "F::";
38
- // obj.ip = "::1";
39
- // obj.ip = "";
40
-
41
39
  // Should Fail or raise error
42
40
  // obj.ip = "2001:0db8:0000:0000:0000:ff00:0042:8329";
43
41
  // obj.ip = "2001:db8:::ff00:42:8329";
@@ -11,7 +11,7 @@ serialize(ca);
11
11
  var read = deserialize();
12
12
 
13
13
  var obj_deser = new IPV6();
14
- obj_deser.deserialize(new BabelDataReader(read));
14
+ obj_deser.deserialize(new DivineDataReader(read));
15
15
  compare_list(obj_ser.list1, obj_deser.list1);
16
16
 
17
17
  function buildObject(){
@@ -0,0 +1,36 @@
1
+ require_relative 'test_signed_float.rb'
2
+ require 'minitest/autorun'
3
+
4
+ class TestBabelTestBasic < MiniTest::Unit::TestCase
5
+
6
+ def test_signedFloat
7
+ puts "Test Signed Int"
8
+ obj_ser = BabelTest::SignedFloat.new
9
+ obj_ser.list1 = [-1093.0802e+4]
10
+
11
+ ser = obj_ser.serialize
12
+ serialize(ser)
13
+ res = deserialize()
14
+
15
+ obj_deser = BabelTest::SignedFloat.new
16
+ obj_deser.deserialize res
17
+ compare(obj_ser, obj_deser)
18
+
19
+ end
20
+
21
+ def compare(obj_ser, obj_deser)
22
+ puts "Ser = #{obj_ser.list1}, Deser = #{obj_deser.list1}"
23
+ assert_equal obj_ser.list1, obj_deser.list1
24
+ end
25
+
26
+ def serialize(data)
27
+ File.open("test/signed_float_test/ruby_test/bin.babel.rb", "w+b") do |f|
28
+ f.write(data)
29
+ end
30
+ end
31
+
32
+ def deserialize()
33
+ mem_buf = File.new('test/signed_float_test/ruby_test/bin.babel.rb').binmode
34
+ end
35
+
36
+ end
@@ -0,0 +1,14 @@
1
+
2
+ require 'divine'
3
+
4
+ struct 'SignedFloat' do
5
+ list :list1, :float32
6
+ end
7
+
8
+ if ARGV[0] == "ruby"
9
+ Divine::CodeGenerator.new.generate(:ruby, file: 'test_signed_float.rb', module: 'BabelTest', parent_class: "Object", target_dir: "test/signed_float_test/ruby_test")
10
+ elsif ARGV[0] == "js"
11
+ Divine::CodeGenerator.new.generate(:javascript, file: 'test_signed_float.js', target_dir: "test/signed_float_test/js_test")
12
+ elsif ARGV[0] == "java"
13
+ Divine::CodeGenerator.new.generate(:java, file: 'test_signed_float.java', target_dir: "test/signed_float_test/java_test")
14
+ end
@@ -0,0 +1,83 @@
1
+
2
+ import java.io.ByteArrayInputStream;
3
+ import java.io.File;
4
+ import java.io.FileInputStream;
5
+ import java.io.FileOutputStream;
6
+ import java.io.IOException;
7
+ import java.util.ArrayList;
8
+ import java.util.Collections;
9
+ import java.util.HashMap;
10
+ import org.junit.*;
11
+
12
+ public class JavaTest {
13
+
14
+ @Test
15
+ public void testSignedInt() throws IOException {
16
+ System.out.println("Test Signed Int32");
17
+ SignedInt ser = buildObj();
18
+
19
+ serialize(ser);
20
+ byte[] res = deserialize();
21
+
22
+ SignedInt deser = new SignedInt();
23
+ deser.deserialize(new ByteArrayInputStream(res));
24
+
25
+ compare(ser, deser);
26
+ }
27
+
28
+ public SignedInt buildObj() {
29
+ SignedInt obj = new SignedInt();
30
+ obj.list1 = new ArrayList<Integer>(){{
31
+ add(-1);
32
+ add(-2);
33
+ add(-3);
34
+ add(Integer.MAX_VALUE);
35
+ add(Integer.MIN_VALUE);
36
+ }};
37
+
38
+ obj.list2 = new ArrayList<Long>(){{
39
+ add(-1L);
40
+ add(-2L);
41
+ add(-3L);
42
+ add( (long)Math.pow(2, 54-1)-1 );
43
+ add( (long)(Math.pow(2, (54-1)) - Math.pow(2, 54)) );
44
+ //add(Long.MAX_VALUE);
45
+ //add(Long.MIN_VALUE);
46
+ }};
47
+
48
+ return obj;
49
+ }
50
+
51
+ public void compare(SignedInt obj1, SignedInt obj2) {
52
+ for (int i = 0; i < obj1.list2.size(); i++){
53
+ //System.out.println("Ser = " + obj1.list2.get(i) + ", Deser = " + obj2.list2.get(i));
54
+ org.junit.Assert.assertEquals(obj1.list2.get(i), obj2.list2.get(i));
55
+ }
56
+ for (int i = 0; i < obj1.list1.size(); i++){
57
+ //System.out.println("Ser = " + obj1.list1.get(i) + ", Deser = " + obj2.list1.get(i));
58
+ org.junit.Assert.assertEquals(obj1.list1.get(i), obj2.list1.get(i));
59
+ }
60
+ }
61
+
62
+ public void serialize(BabelBase obj) throws IOException {
63
+ byte[] data = obj.serialize();
64
+ File file = new File("test/signed_int_test/java_test/bin.babel");
65
+ try {
66
+ new FileOutputStream(file).write(data);
67
+ } catch (Exception e) {
68
+ e.printStackTrace();
69
+ }
70
+ }
71
+
72
+ public byte[] deserialize() throws IOException{
73
+ File file = new File("test/signed_int_test/java_test/bin.babel");
74
+ byte[] data = new byte[(int) file.length()];
75
+ try {
76
+ new FileInputStream(file).read(data);
77
+ } catch (Exception e) {
78
+ e.printStackTrace();
79
+ }
80
+ return data;
81
+ }
82
+
83
+ }
@@ -0,0 +1,55 @@
1
+ eval(require('fs').readFileSync('test/signed_int_test/js_test/test_signed_int.js', 'utf8'));
2
+ var fs = require('fs');
3
+ var assert = require('assert');
4
+
5
+ console.log("Test Signed Int");
6
+
7
+ var obj_ser = buildObject();
8
+
9
+ var ca = obj_ser.serialize();
10
+ serialize(ca);
11
+ var read = deserialize();
12
+
13
+ var obj_deser = new SignedInt();
14
+ obj_deser.deserialize(new DivineDataReader(read));
15
+ //compare_list(obj_ser.list1, obj_deser.list1);
16
+ compare_list(obj_ser.list2, obj_deser.list2);
17
+
18
+ function buildObject(){
19
+ var obj = new SignedInt();
20
+ obj.list1 = [-1, -2, -3, Math.pow(2, 31)-1, Math.pow(2, 32-1) - Math.pow(2, 32)];
21
+ obj.list2 = [-1, -2, -3, Math.pow(2, 54-1)-1, Math.pow(2, (54-1)) - Math.pow(2, 54)];
22
+ return obj;
23
+ }
24
+
25
+ function compare_list(lst_1, lst_2){
26
+ assert.equal(lst_1.length, lst_2.length)
27
+ for (var i = 0; i < lst_1.length; i++){
28
+ //console.log("Ser = " + lst_1[i] + ", Deser = " + lst_2[i]);
29
+ assert.equal(lst_1[i], lst_2[i]);
30
+ }
31
+ }
32
+
33
+ function serialize(obj){
34
+ var bBuffer = new Buffer(obj);
35
+ fs.writeFileSync(__dirname + '/bin.babel.js', bBuffer, function (err) {
36
+ if (err) {
37
+ return console.log(err);
38
+ }
39
+ });
40
+ }
41
+
42
+ function deserialize(){
43
+ var data = fs.readFileSync(__dirname + '/bin.babel.js');
44
+ data = toArray(data);
45
+ return data;
46
+
47
+ }
48
+
49
+ function toArray(buffer) {
50
+ var view = new Uint8Array(buffer.length);
51
+ for (var i = 0; i < buffer.length; ++i) {
52
+ view[i] = buffer[i];
53
+ }
54
+ return view;
55
+ }
@@ -0,0 +1,37 @@
1
+ require_relative 'test_signed_int.rb'
2
+ require 'minitest/autorun'
3
+
4
+ class TestBabelTestBasic < MiniTest::Unit::TestCase
5
+
6
+ def test_signedInt
7
+ puts "Test Signed Int"
8
+ obj_ser = BabelTest::SignedInt.new
9
+ obj_ser.list1 = [-1, -2, -3, 2** (32-1)-1, 2** (32-1) - 2** 32]
10
+ obj_ser.list2 = [-1, -2, -3, 2** (54-1)-1, 2** (54-1) - 2** 54]
11
+
12
+ ser = obj_ser.serialize
13
+ serialize(ser)
14
+ res = deserialize()
15
+
16
+ obj_deser = BabelTest::SignedInt.new
17
+ obj_deser.deserialize res
18
+ compare(obj_ser, obj_deser)
19
+
20
+ end
21
+
22
+ def compare(obj_ser, obj_deser)
23
+ #puts "Ser = #{obj_ser.list1}, Deser = #{obj_deser.list1}"
24
+ assert_equal obj_ser.list1, obj_deser.list1
25
+ end
26
+
27
+ def serialize(data)
28
+ File.open("test/signed_int_test/ruby_test/bin.babel.rb", "w+b") do |f|
29
+ f.write(data)
30
+ end
31
+ end
32
+
33
+ def deserialize()
34
+ mem_buf = File.new('test/signed_int_test/ruby_test/bin.babel.rb').binmode
35
+ end
36
+
37
+ end
@@ -0,0 +1,15 @@
1
+
2
+ require 'divine'
3
+
4
+ struct 'SignedInt' do
5
+ list :list1, :sint32
6
+ list :list2, :sint64
7
+ end
8
+
9
+ if ARGV[0] == "ruby"
10
+ Divine::CodeGenerator.new.generate(:ruby, file: 'test_signed_int.rb', module: 'BabelTest', parent_class: "Object", target_dir: "test/signed_int_test/ruby_test")
11
+ elsif ARGV[0] == "js"
12
+ Divine::CodeGenerator.new.generate(:javascript, file: 'test_signed_int.js', target_dir: "test/signed_int_test/js_test")
13
+ elsif ARGV[0] == "java"
14
+ Divine::CodeGenerator.new.generate(:java, file: 'test_signed_int.java', target_dir: "test/signed_int_test/java_test")
15
+ end
@@ -1,17 +1,28 @@
1
+ require 'minitest/autorun'
1
2
 
2
- require 'divine'
3
+ class TestUnify < MiniTest::Unit::TestCase
3
4
 
4
- struct 'UnifySer' do
5
- #int8 :i8
6
- #int32 :i32
7
- #int16 :i16
8
- string :str
9
- #ip_number :ip
10
- #binary :guid
11
- map :map1, :int8, :int32
12
- end
5
+ def test_unify
6
+ puts "Unify Test: Compare the produced binary files"
7
+ paths = [
8
+ "test/binaryTree_test/",
9
+ "test/complex_test/",
10
+ "test/ipv6_test/",
11
+ "test/signed_int_test/"
12
+ ]
13
+ paths.each do |path|
14
+ ruby = readFile("#{path}ruby_test/bin.babel.rb")
15
+ js = readFile("#{path}js_test/bin.babel.js")
16
+ java = readFile("#{path}java_test/bin.babel")
17
+
18
+ assert_equal ruby, js
19
+ assert_equal ruby, java
20
+ end
21
+ end
13
22
 
14
- Divine::CodeGenerator.new.generate(:ruby, file: 'test_unify.rb', module: 'BabelTest', parent_class: "Object")
15
- Divine::CodeGenerator.new.generate(:javascript, file: 'test_unify.js')
16
- Divine::CodeGenerator.new.generate(:java, file: 'test_unify.java')
23
+ def readFile(file)
24
+ data = File.new(file).binmode
25
+ data.read(data.size).each_byte.to_a
26
+ end
17
27
 
28
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: divine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-20 00:00:00.000000000 Z
12
+ date: 2012-12-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: docile
@@ -65,40 +65,28 @@ files:
65
65
  - lib/divine/version.rb
66
66
  - test/basic_complex_test/basic_complex_test.rb
67
67
  - test/basic_complex_test/java_test/JavaTest.java
68
- - test/basic_complex_test/java_test/test_babel.java
69
68
  - test/basic_complex_test/js_test/js_testBasic.js
70
69
  - test/basic_complex_test/js_test/js_testComplex.js
71
- - test/basic_complex_test/js_test/test_babel.js
72
70
  - test/basic_complex_test/ruby_test/ruby_test.rb
73
- - test/basic_complex_test/ruby_test/test_babel.rb
74
71
  - test/binaryTree_test/binaryTree_test.rb
75
72
  - test/binaryTree_test/java_test/JavaTest.java
76
- - test/binaryTree_test/java_test/test_binaryTree.java
77
73
  - test/binaryTree_test/js_test/js_test.js
78
- - test/binaryTree_test/js_test/test_binaryTree.js
79
74
  - test/binaryTree_test/ruby_test/ruby_test.rb
80
- - test/binaryTree_test/ruby_test/test_binaryTree.rb
81
75
  - test/complex_test/complex_test.rb
82
76
  - test/complex_test/java_test/JavaTest.java
83
- - test/complex_test/java_test/test_complex.java
84
77
  - test/complex_test/js_test/js_test.js
85
- - test/complex_test/js_test/test_complex.js
86
78
  - test/complex_test/ruby_test/ruby_test.rb
87
- - test/complex_test/ruby_test/test_complex.rb
88
79
  - test/ipv6_test/ipv6_test.rb
89
80
  - test/ipv6_test/java_test/JavaTest.java
90
- - test/ipv6_test/java_test/junit.jar
91
- - test/ipv6_test/java_test/test_ipv6.java
92
81
  - test/ipv6_test/js_test/js_test.js
93
- - test/ipv6_test/js_test/test_ipv6.js
94
82
  - test/ipv6_test/ruby_test/ruby_test.rb
95
- - test/ipv6_test/ruby_test/test_ipv6.rb
96
83
  - test/java_lib/junit.jar
97
- - test/unify_test/java_test/test_unify.java
98
- - test/unify_test/js_test/js_test.js
99
- - test/unify_test/js_test/test_unify.js
100
- - test/unify_test/ruby_test/ruby_test.rb
101
- - test/unify_test/ruby_test/test_unify.rb
84
+ - test/signed_float_test/ruby_test/ruby_test.rb
85
+ - test/signed_float_test/signed_float_test.rb
86
+ - test/signed_int_test/java_test/JavaTest.java
87
+ - test/signed_int_test/js_test/js_test.js
88
+ - test/signed_int_test/ruby_test/ruby_test.rb
89
+ - test/signed_int_test/signed_int_test.rb
102
90
  - test/unify_test/unify_test.rb
103
91
  homepage: https://github.com/franzen/babelphish
104
92
  licenses: []
@@ -127,38 +115,26 @@ summary: A simple data serialization generator for java, ruby and javascript
127
115
  test_files:
128
116
  - test/basic_complex_test/basic_complex_test.rb
129
117
  - test/basic_complex_test/java_test/JavaTest.java
130
- - test/basic_complex_test/java_test/test_babel.java
131
118
  - test/basic_complex_test/js_test/js_testBasic.js
132
119
  - test/basic_complex_test/js_test/js_testComplex.js
133
- - test/basic_complex_test/js_test/test_babel.js
134
120
  - test/basic_complex_test/ruby_test/ruby_test.rb
135
- - test/basic_complex_test/ruby_test/test_babel.rb
136
121
  - test/binaryTree_test/binaryTree_test.rb
137
122
  - test/binaryTree_test/java_test/JavaTest.java
138
- - test/binaryTree_test/java_test/test_binaryTree.java
139
123
  - test/binaryTree_test/js_test/js_test.js
140
- - test/binaryTree_test/js_test/test_binaryTree.js
141
124
  - test/binaryTree_test/ruby_test/ruby_test.rb
142
- - test/binaryTree_test/ruby_test/test_binaryTree.rb
143
125
  - test/complex_test/complex_test.rb
144
126
  - test/complex_test/java_test/JavaTest.java
145
- - test/complex_test/java_test/test_complex.java
146
127
  - test/complex_test/js_test/js_test.js
147
- - test/complex_test/js_test/test_complex.js
148
128
  - test/complex_test/ruby_test/ruby_test.rb
149
- - test/complex_test/ruby_test/test_complex.rb
150
129
  - test/ipv6_test/ipv6_test.rb
151
130
  - test/ipv6_test/java_test/JavaTest.java
152
- - test/ipv6_test/java_test/junit.jar
153
- - test/ipv6_test/java_test/test_ipv6.java
154
131
  - test/ipv6_test/js_test/js_test.js
155
- - test/ipv6_test/js_test/test_ipv6.js
156
132
  - test/ipv6_test/ruby_test/ruby_test.rb
157
- - test/ipv6_test/ruby_test/test_ipv6.rb
158
133
  - test/java_lib/junit.jar
159
- - test/unify_test/java_test/test_unify.java
160
- - test/unify_test/js_test/js_test.js
161
- - test/unify_test/js_test/test_unify.js
162
- - test/unify_test/ruby_test/ruby_test.rb
163
- - test/unify_test/ruby_test/test_unify.rb
134
+ - test/signed_float_test/ruby_test/ruby_test.rb
135
+ - test/signed_float_test/signed_float_test.rb
136
+ - test/signed_int_test/java_test/JavaTest.java
137
+ - test/signed_int_test/js_test/js_test.js
138
+ - test/signed_int_test/ruby_test/ruby_test.rb
139
+ - test/signed_int_test/signed_int_test.rb
164
140
  - test/unify_test/unify_test.rb