type_array 0.1
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.
- data/.gitignore +19 -0
- data/.travis.yml +18 -0
- data/CHANGELOG.rdoc +4 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +18 -0
- data/README.rdoc +140 -0
- data/Rakefile +47 -0
- data/ext/type_array/array_buffer.c +183 -0
- data/ext/type_array/array_buffer.h +19 -0
- data/ext/type_array/data_view.c +574 -0
- data/ext/type_array/data_view.h +35 -0
- data/ext/type_array/extconf.rb +14 -0
- data/ext/type_array/jruby.h +9 -0
- data/ext/type_array/prelude.h +25 -0
- data/ext/type_array/rubinius.h +19 -0
- data/ext/type_array/ruby18.h +15 -0
- data/ext/type_array/ruby19.h +12 -0
- data/ext/type_array/type_array.c +540 -0
- data/ext/type_array/type_array.h +38 -0
- data/ext/type_array/type_array_ext.c +25 -0
- data/ext/type_array/type_array_ext.h +71 -0
- data/lib/type_array/io.rb +28 -0
- data/lib/type_array/version.rb +3 -0
- data/lib/type_array.rb +14 -0
- data/test/helper.rb +23 -0
- data/test/test_array_buffer.rb +132 -0
- data/test/test_data_view.rb +218 -0
- data/test/test_float_32_array.rb +36 -0
- data/test/test_float_64_array.rb +38 -0
- data/test/test_int_16_array.rb +37 -0
- data/test/test_int_32_array.rb +43 -0
- data/test/test_int_8_array.rb +29 -0
- data/test/test_type_array.rb +155 -0
- data/test/test_uint_16_array.rb +35 -0
- data/test/test_uint_32_array.rb +35 -0
- data/test/test_uint_8_array.rb +33 -0
- data/type_array.gemspec +22 -0
- metadata +112 -0
@@ -0,0 +1,155 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
4
|
+
|
5
|
+
class TestTypeArray < TypeArrayTestCase
|
6
|
+
def test_type
|
7
|
+
assert_instance_of Class, TypeArray
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_direct_constructor
|
11
|
+
assert_raises TypeError do
|
12
|
+
TypeArray.new(100)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_unsupported_constructor
|
17
|
+
assert_raises TypeError do
|
18
|
+
Int32Array.new(:invalid)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_length_constructor
|
23
|
+
ary = Int32Array.new(100)
|
24
|
+
|
25
|
+
assert_instance_of Int32Array, ary
|
26
|
+
assert_instance_of ArrayBuffer, ary.buffer
|
27
|
+
assert_equal 100, ary.length
|
28
|
+
assert_equal 400, ary.byte_length
|
29
|
+
assert_equal 0, ary.byte_offset
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_string_constructor
|
33
|
+
str = "01234567"
|
34
|
+
ary = Int32Array.new(str)
|
35
|
+
|
36
|
+
assert_equal 8, ary.byte_length
|
37
|
+
assert_equal 2, ary.length
|
38
|
+
assert_equal str, ary.to_s
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_array_buf_constructor
|
42
|
+
buf = ArrayBuffer.new(100)
|
43
|
+
|
44
|
+
ary = Int32Array.new(buf)
|
45
|
+
assert_equal 25, ary.length
|
46
|
+
assert_equal 100, ary.byte_length
|
47
|
+
assert_equal 0, ary.byte_offset
|
48
|
+
assert_equal buf, ary.buffer
|
49
|
+
|
50
|
+
assert_raises TypeError do
|
51
|
+
Int32Array.new(buf, :symbol)
|
52
|
+
end
|
53
|
+
|
54
|
+
assert_raises RangeError do
|
55
|
+
Int32Array.new(buf, 13)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_offset_length_constructor
|
60
|
+
buf = ArrayBuffer.new(100)
|
61
|
+
|
62
|
+
ary = Int32Array.new(buf, 20)
|
63
|
+
assert_equal 20, ary.length
|
64
|
+
assert_equal 80, ary.byte_length
|
65
|
+
assert_equal 20, ary.byte_offset
|
66
|
+
|
67
|
+
ary = Int32Array.new(buf, 0, 20)
|
68
|
+
assert_equal 20, ary.length
|
69
|
+
assert_equal 80, ary.byte_length
|
70
|
+
assert_equal 0, ary.byte_offset
|
71
|
+
|
72
|
+
ary = Int32Array.new(buf, 20, 20)
|
73
|
+
assert_equal 20, ary.length
|
74
|
+
assert_equal 80, ary.byte_length
|
75
|
+
assert_equal 20, ary.byte_offset
|
76
|
+
|
77
|
+
assert_raises RangeError do
|
78
|
+
Int32Array.new(buf, 84, 20)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_type_array_constructor
|
83
|
+
buf = ArrayBuffer.new(100)
|
84
|
+
|
85
|
+
ary = Int16Array.new(buf)
|
86
|
+
ary[0] = 100
|
87
|
+
ary[1] = 200
|
88
|
+
ary[2] = 300
|
89
|
+
|
90
|
+
ary2 = Int8Array.new(ary)
|
91
|
+
assert_equal 100, ary2[0]
|
92
|
+
assert_equal -56, ary2[1]
|
93
|
+
assert_equal 44, ary2[2]
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_std_io
|
97
|
+
buf = ArrayBuffer.new(16)
|
98
|
+
|
99
|
+
f = File.open(file_name, File::CREAT | File::RDWR)
|
100
|
+
|
101
|
+
ary = Int32Array.new(buf)
|
102
|
+
ary[0] = 78
|
103
|
+
ary[1] = 43
|
104
|
+
ary[2] = 54
|
105
|
+
ary[3] = 12
|
106
|
+
|
107
|
+
ary.write(f)
|
108
|
+
|
109
|
+
f.flush
|
110
|
+
assert_equal 16, File.size(file_name)
|
111
|
+
|
112
|
+
f.rewind
|
113
|
+
|
114
|
+
ary = Int32Array.read(f, 16)
|
115
|
+
assert_equal 16, ary.byte_length
|
116
|
+
|
117
|
+
assert_equal 78, ary[0]
|
118
|
+
assert_equal 43, ary[1]
|
119
|
+
assert_equal 54, ary[2]
|
120
|
+
assert_equal 12, ary[3]
|
121
|
+
|
122
|
+
f.close
|
123
|
+
ensure
|
124
|
+
File.unlink(file_name) rescue nil
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_socket_io
|
128
|
+
buf = ArrayBuffer.new(16)
|
129
|
+
|
130
|
+
server = TCPServer.new("127.0.0.1", 0)
|
131
|
+
port = server.addr[1]
|
132
|
+
client = TCPSocket.new("127.0.0.1", port)
|
133
|
+
s = server.accept
|
134
|
+
|
135
|
+
ary = Int32Array.new(buf)
|
136
|
+
ary[0] = 78
|
137
|
+
ary[1] = 43
|
138
|
+
ary[2] = 54
|
139
|
+
ary[3] = 12
|
140
|
+
|
141
|
+
ary.write(client)
|
142
|
+
|
143
|
+
ary = Int32Array.read(s, 16)
|
144
|
+
assert_equal 16, ary.byte_length
|
145
|
+
|
146
|
+
assert_equal 78, ary[0]
|
147
|
+
assert_equal 43, ary[1]
|
148
|
+
assert_equal 54, ary[2]
|
149
|
+
assert_equal 12, ary[3]
|
150
|
+
|
151
|
+
s.close
|
152
|
+
ensure
|
153
|
+
s.close rescue nil
|
154
|
+
end
|
155
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
4
|
+
|
5
|
+
class TestUInt16Array < TypeArrayTestCase
|
6
|
+
def test_size
|
7
|
+
assert_equal 2, UInt16Array::BYTES_PER_ELEMENT
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_constructor
|
11
|
+
buf = ArrayBuffer.new(20)
|
12
|
+
|
13
|
+
assert_raises RangeError do
|
14
|
+
UInt16Array.new(buf, 3)
|
15
|
+
end
|
16
|
+
|
17
|
+
ary = UInt16Array.new(buf, 4)
|
18
|
+
assert_equal 8, ary.length
|
19
|
+
assert_equal 16, ary.byte_length
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_index
|
23
|
+
buf = ArrayBuffer.new(100)
|
24
|
+
|
25
|
+
ary = UInt16Array.new(buf)
|
26
|
+
ary[0] = 9
|
27
|
+
ary[2] = 19264
|
28
|
+
ary[3] = -8
|
29
|
+
assert_equal 9, ary[0]
|
30
|
+
assert_equal 0, ary[1]
|
31
|
+
assert_equal 0, ary[49]
|
32
|
+
assert_equal 65528, ary[3]
|
33
|
+
assert_equal 19264, ary[2]
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
4
|
+
|
5
|
+
class TestUInt32Array < TypeArrayTestCase
|
6
|
+
def test_size
|
7
|
+
assert_equal 4, UInt32Array::BYTES_PER_ELEMENT
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_constructor
|
11
|
+
buf = ArrayBuffer.new(20)
|
12
|
+
|
13
|
+
assert_raises RangeError do
|
14
|
+
UInt32Array.new(buf, 2)
|
15
|
+
end
|
16
|
+
|
17
|
+
ary = UInt32Array.new(buf, 4)
|
18
|
+
assert_equal 4, ary.length
|
19
|
+
assert_equal 16, ary.byte_length
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_index
|
23
|
+
buf = ArrayBuffer.new(100)
|
24
|
+
|
25
|
+
ary = UInt32Array.new(buf)
|
26
|
+
ary[0] = 77
|
27
|
+
ary[3] = -77
|
28
|
+
ary[2] = 80000000
|
29
|
+
assert_equal 77, ary[0]
|
30
|
+
assert_equal 0, ary[1]
|
31
|
+
assert_equal 0, ary[24]
|
32
|
+
assert_equal(4294967219, ary[3])
|
33
|
+
assert_equal 80000000, ary[2]
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
4
|
+
|
5
|
+
class TestUInt8Array < TypeArrayTestCase
|
6
|
+
def test_size
|
7
|
+
assert_equal 1, UInt8Array::BYTES_PER_ELEMENT
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_constructor
|
11
|
+
buf = ArrayBuffer.new(8)
|
12
|
+
|
13
|
+
assert_raises RangeError do
|
14
|
+
UInt32Array.new(buf, 1)
|
15
|
+
end
|
16
|
+
|
17
|
+
ary = UInt8Array.new(buf, 2)
|
18
|
+
assert_equal 6, ary.length
|
19
|
+
assert_equal 6, ary.byte_length
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_index
|
23
|
+
buf = ArrayBuffer.new(8)
|
24
|
+
|
25
|
+
ary = UInt8Array.new(buf)
|
26
|
+
ary[0] = 5
|
27
|
+
ary[3] = -5
|
28
|
+
assert_equal 5, ary[0]
|
29
|
+
assert_equal 0, ary[1]
|
30
|
+
assert_equal 0, ary[7]
|
31
|
+
assert_equal(-5, ary[3])
|
32
|
+
end
|
33
|
+
end
|
data/type_array.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.expand_path('../lib/type_array/version', __FILE__)
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "type_array"
|
7
|
+
s.version = TypeArray::VERSION
|
8
|
+
s.summary = "Typed Arrays for Ruby"
|
9
|
+
s.description = "TypeArray - Ruby implementation of the ECMAScript spec ( http://wiki.ecmascript.org/doku.php?id=strawman:typed_arrays )"
|
10
|
+
s.authors = ["Lourens Naudé"]
|
11
|
+
s.email = ["lourens@methodmissing.com"]
|
12
|
+
s.homepage = "http://github.com/methodmissing/type_array"
|
13
|
+
s.date = Time.now.utc.strftime('%Y-%m-%d')
|
14
|
+
s.platform = Gem::Platform::RUBY
|
15
|
+
s.extensions = "ext/type_array/extconf.rb"
|
16
|
+
s.has_rdoc = true
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files test`.split("\n")
|
19
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
s.add_development_dependency('rake-compiler', '~> 0.8.0')
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: type_array
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: "0.1"
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- "Lourens Naud\xC3\xA9"
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2012-07-12 00:00:00 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rake-compiler
|
17
|
+
prerelease: false
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
19
|
+
none: false
|
20
|
+
requirements:
|
21
|
+
- - ~>
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.8.0
|
24
|
+
type: :development
|
25
|
+
version_requirements: *id001
|
26
|
+
description: TypeArray - Ruby implementation of the ECMAScript spec ( http://wiki.ecmascript.org/doku.php?id=strawman:typed_arrays )
|
27
|
+
email:
|
28
|
+
- lourens@methodmissing.com
|
29
|
+
executables: []
|
30
|
+
|
31
|
+
extensions:
|
32
|
+
- ext/type_array/extconf.rb
|
33
|
+
extra_rdoc_files: []
|
34
|
+
|
35
|
+
files:
|
36
|
+
- .gitignore
|
37
|
+
- .travis.yml
|
38
|
+
- CHANGELOG.rdoc
|
39
|
+
- Gemfile
|
40
|
+
- Gemfile.lock
|
41
|
+
- README.rdoc
|
42
|
+
- Rakefile
|
43
|
+
- ext/type_array/array_buffer.c
|
44
|
+
- ext/type_array/array_buffer.h
|
45
|
+
- ext/type_array/data_view.c
|
46
|
+
- ext/type_array/data_view.h
|
47
|
+
- ext/type_array/extconf.rb
|
48
|
+
- ext/type_array/jruby.h
|
49
|
+
- ext/type_array/prelude.h
|
50
|
+
- ext/type_array/rubinius.h
|
51
|
+
- ext/type_array/ruby18.h
|
52
|
+
- ext/type_array/ruby19.h
|
53
|
+
- ext/type_array/type_array.c
|
54
|
+
- ext/type_array/type_array.h
|
55
|
+
- ext/type_array/type_array_ext.c
|
56
|
+
- ext/type_array/type_array_ext.h
|
57
|
+
- lib/type_array.rb
|
58
|
+
- lib/type_array/io.rb
|
59
|
+
- lib/type_array/version.rb
|
60
|
+
- test/helper.rb
|
61
|
+
- test/test_array_buffer.rb
|
62
|
+
- test/test_data_view.rb
|
63
|
+
- test/test_float_32_array.rb
|
64
|
+
- test/test_float_64_array.rb
|
65
|
+
- test/test_int_16_array.rb
|
66
|
+
- test/test_int_32_array.rb
|
67
|
+
- test/test_int_8_array.rb
|
68
|
+
- test/test_type_array.rb
|
69
|
+
- test/test_uint_16_array.rb
|
70
|
+
- test/test_uint_32_array.rb
|
71
|
+
- test/test_uint_8_array.rb
|
72
|
+
- type_array.gemspec
|
73
|
+
homepage: http://github.com/methodmissing/type_array
|
74
|
+
licenses: []
|
75
|
+
|
76
|
+
post_install_message:
|
77
|
+
rdoc_options:
|
78
|
+
- --charset=UTF-8
|
79
|
+
require_paths:
|
80
|
+
- lib
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: "0"
|
87
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
|
+
none: false
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: "0"
|
93
|
+
requirements: []
|
94
|
+
|
95
|
+
rubyforge_project:
|
96
|
+
rubygems_version: 1.8.9
|
97
|
+
signing_key:
|
98
|
+
specification_version: 3
|
99
|
+
summary: Typed Arrays for Ruby
|
100
|
+
test_files:
|
101
|
+
- test/helper.rb
|
102
|
+
- test/test_array_buffer.rb
|
103
|
+
- test/test_data_view.rb
|
104
|
+
- test/test_float_32_array.rb
|
105
|
+
- test/test_float_64_array.rb
|
106
|
+
- test/test_int_16_array.rb
|
107
|
+
- test/test_int_32_array.rb
|
108
|
+
- test/test_int_8_array.rb
|
109
|
+
- test/test_type_array.rb
|
110
|
+
- test/test_uint_16_array.rb
|
111
|
+
- test/test_uint_32_array.rb
|
112
|
+
- test/test_uint_8_array.rb
|