divine 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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