jruby-openssl 0.9.4 → 0.14.0-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/History.md +652 -0
- data/LICENSE.txt +37 -0
- data/Mavenfile +163 -5
- data/README.md +75 -0
- data/Rakefile +52 -2
- data/lib/jopenssl/_compat23.rb +71 -0
- data/lib/jopenssl/load.rb +75 -16
- data/lib/jopenssl/version.rb +9 -4
- data/lib/jopenssl.jar +0 -0
- data/lib/openssl/bn.rb +40 -5
- data/lib/openssl/buffering.rb +477 -4
- data/lib/openssl/cipher.rb +67 -5
- data/lib/openssl/config.rb +500 -4
- data/lib/openssl/digest.rb +73 -5
- data/lib/openssl/hmac.rb +13 -0
- data/lib/openssl/marshal.rb +30 -0
- data/lib/openssl/pkcs12.rb +60 -99
- data/lib/openssl/pkcs5.rb +22 -0
- data/lib/openssl/pkey.rb +42 -0
- data/lib/openssl/ssl.rb +542 -4
- data/lib/openssl/x509.rb +368 -4
- data/lib/openssl.rb +3 -1
- data/lib/org/bouncycastle/bcpkix-jdk18on/1.71/bcpkix-jdk18on-1.71.jar +0 -0
- data/lib/org/bouncycastle/bcprov-jdk18on/1.71/bcprov-jdk18on-1.71.jar +0 -0
- data/lib/org/bouncycastle/bctls-jdk18on/1.71/bctls-jdk18on-1.71.jar +0 -0
- data/lib/org/bouncycastle/bcutil-jdk18on/1.71/bcutil-jdk18on-1.71.jar +0 -0
- data/pom.xml +772 -0
- metadata +40 -107
- data/History.txt +0 -218
- data/License.txt +0 -30
- data/README.txt +0 -13
- data/TODO-1_9-support.txt +0 -23
- data/lib/jopenssl18/openssl/bn.rb +0 -35
- data/lib/jopenssl18/openssl/buffering.rb +0 -241
- data/lib/jopenssl18/openssl/cipher.rb +0 -65
- data/lib/jopenssl18/openssl/config.rb +0 -316
- data/lib/jopenssl18/openssl/digest.rb +0 -61
- data/lib/jopenssl18/openssl/pkcs7.rb +0 -25
- data/lib/jopenssl18/openssl/ssl-internal.rb +0 -179
- data/lib/jopenssl18/openssl/ssl.rb +0 -1
- data/lib/jopenssl18/openssl/x509-internal.rb +0 -153
- data/lib/jopenssl18/openssl/x509.rb +0 -1
- data/lib/jopenssl18/openssl.rb +0 -67
- data/lib/jopenssl19/openssl/bn.rb +0 -35
- data/lib/jopenssl19/openssl/buffering.rb +0 -449
- data/lib/jopenssl19/openssl/cipher.rb +0 -65
- data/lib/jopenssl19/openssl/config.rb +0 -313
- data/lib/jopenssl19/openssl/digest.rb +0 -72
- data/lib/jopenssl19/openssl/ssl-internal.rb +0 -177
- data/lib/jopenssl19/openssl/ssl.rb +0 -2
- data/lib/jopenssl19/openssl/x509-internal.rb +0 -158
- data/lib/jopenssl19/openssl/x509.rb +0 -2
- data/lib/jopenssl19/openssl.rb +0 -23
- data/lib/openssl/pkcs7.rb +0 -5
- data/lib/openssl/ssl-internal.rb +0 -5
- data/lib/openssl/x509-internal.rb +0 -5
- data/test/java/pkcs7_mime_enveloped.message +0 -19
- data/test/java/pkcs7_mime_signed.message +0 -30
- data/test/java/pkcs7_multipart_signed.message +0 -45
- data/test/java/test_java_attribute.rb +0 -25
- data/test/java/test_java_bio.rb +0 -42
- data/test/java/test_java_mime.rb +0 -173
- data/test/java/test_java_pkcs7.rb +0 -772
- data/test/java/test_java_smime.rb +0 -177
- data/test/test_java.rb +0 -98
- data/test/ut_eof.rb +0 -128
@@ -1,177 +0,0 @@
|
|
1
|
-
module PKCS7Test
|
2
|
-
class TestJavaSMIME < Test::Unit::TestCase
|
3
|
-
def test_read_pkcs7_should_raise_error_when_parsing_headers_fails
|
4
|
-
bio = BIO.new
|
5
|
-
mime = Mime.new
|
6
|
-
mime.stubs(:parseHeaders).returns(nil)
|
7
|
-
|
8
|
-
begin
|
9
|
-
SMIME.new(mime).readPKCS7(bio, nil)
|
10
|
-
assert false
|
11
|
-
rescue PKCS7Exception => e
|
12
|
-
assert_equal PKCS7::F_SMIME_READ_PKCS7, e.cause.get_method
|
13
|
-
assert_equal PKCS7::R_MIME_PARSE_ERROR, e.cause.get_reason
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_read_pkcs7_should_raise_error_when_content_type_is_not_there
|
18
|
-
bio = BIO.new
|
19
|
-
mime = Mime.new
|
20
|
-
|
21
|
-
headers = ArrayList.new
|
22
|
-
mime.expects(:parseHeaders).with(bio).returns(headers)
|
23
|
-
mime.expects(:findHeader).with(headers, "content-type").returns(nil)
|
24
|
-
|
25
|
-
begin
|
26
|
-
SMIME.new(mime).readPKCS7(bio, nil)
|
27
|
-
assert false
|
28
|
-
rescue PKCS7Exception => e
|
29
|
-
assert_equal PKCS7::F_SMIME_READ_PKCS7, e.cause.get_method
|
30
|
-
assert_equal PKCS7::R_NO_CONTENT_TYPE, e.cause.get_reason
|
31
|
-
end
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
mime = Mime.new
|
37
|
-
mime.expects(:parseHeaders).with(bio).returns(headers)
|
38
|
-
mime.expects(:findHeader).with(headers, "content-type").returns(MimeHeader.new("content-type", nil))
|
39
|
-
|
40
|
-
begin
|
41
|
-
SMIME.new(mime).readPKCS7(bio, nil)
|
42
|
-
assert false
|
43
|
-
rescue PKCS7Exception => e
|
44
|
-
assert_equal PKCS7::F_SMIME_READ_PKCS7, e.cause.get_method
|
45
|
-
assert_equal PKCS7::R_NO_CONTENT_TYPE, e.cause.get_reason
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_read_pkcs7_should_set_the_second_arguments_contents_to_null_if_its_there
|
50
|
-
mime = Mime.new
|
51
|
-
mime.stubs(:parseHeaders).raises("getOutOfJailForFree")
|
52
|
-
|
53
|
-
bio2 = BIO.new
|
54
|
-
arr = [bio2].to_java BIO
|
55
|
-
|
56
|
-
begin
|
57
|
-
SMIME.new(mime).readPKCS7(nil, arr)
|
58
|
-
rescue
|
59
|
-
end
|
60
|
-
|
61
|
-
assert_nil arr[0]
|
62
|
-
|
63
|
-
|
64
|
-
arr = [bio2, bio2].to_java BIO
|
65
|
-
begin
|
66
|
-
SMIME.new(mime).readPKCS7(nil, arr)
|
67
|
-
rescue
|
68
|
-
end
|
69
|
-
|
70
|
-
assert_nil arr[0]
|
71
|
-
assert_equal bio2, arr[1]
|
72
|
-
end
|
73
|
-
|
74
|
-
def test_read_pkcs7_should_call_methods_on_mime
|
75
|
-
bio = BIO.new
|
76
|
-
mime = Mime.new
|
77
|
-
|
78
|
-
headers = ArrayList.new
|
79
|
-
mime.expects(:parseHeaders).with(bio).returns(headers)
|
80
|
-
mime.expects(:findHeader).with(headers, "content-type").returns(MimeHeader.new("content-type", "application/pkcs7-mime"))
|
81
|
-
|
82
|
-
begin
|
83
|
-
SMIME.new(mime).readPKCS7(bio, nil)
|
84
|
-
rescue java.lang.UnsupportedOperationException
|
85
|
-
# This error is expected, since the bio used is not a real one
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
def test_read_pkcs7_throws_correct_exception_if_wrong_content_type
|
90
|
-
bio = BIO.new
|
91
|
-
mime = Mime.new
|
92
|
-
|
93
|
-
headers = ArrayList.new
|
94
|
-
mime.expects(:parseHeaders).with(bio).returns(headers)
|
95
|
-
mime.expects(:findHeader).with(headers, "content-type").returns(MimeHeader.new("content-type", "foo"))
|
96
|
-
|
97
|
-
begin
|
98
|
-
SMIME.new(mime).readPKCS7(bio, nil)
|
99
|
-
assert false
|
100
|
-
rescue PKCS7Exception => e
|
101
|
-
assert_equal PKCS7::F_SMIME_READ_PKCS7, e.cause.get_method
|
102
|
-
assert_equal PKCS7::R_INVALID_MIME_TYPE, e.cause.get_reason
|
103
|
-
assert_equal "type: foo", e.cause.error_data
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
def test_read_pkcs7_with_multipart_should_fail_if_no_boundary_found
|
108
|
-
bio = BIO.new
|
109
|
-
mime = Mime.new
|
110
|
-
|
111
|
-
headers = ArrayList.new
|
112
|
-
hdr = MimeHeader.new("content-type", "multipart/signed")
|
113
|
-
mime.expects(:parseHeaders).with(bio).returns(headers)
|
114
|
-
mime.expects(:findHeader).with(headers, "content-type").returns(hdr)
|
115
|
-
|
116
|
-
mime.expects(:findParam).with(hdr, "boundary").returns(nil)
|
117
|
-
|
118
|
-
begin
|
119
|
-
SMIME.new(mime).readPKCS7(bio, nil)
|
120
|
-
assert false
|
121
|
-
rescue PKCS7Exception => e
|
122
|
-
assert_equal PKCS7::F_SMIME_READ_PKCS7, e.cause.get_method
|
123
|
-
assert_equal PKCS7::R_NO_MULTIPART_BOUNDARY, e.cause.get_reason
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
def test_read_pkcs7_with_multipart_should_fail_if_null_boundary_value
|
128
|
-
bio = BIO.new
|
129
|
-
mime = Mime.new
|
130
|
-
|
131
|
-
headers = ArrayList.new
|
132
|
-
hdr = MimeHeader.new("content-type", "multipart/signed")
|
133
|
-
mime.expects(:parseHeaders).with(bio).returns(headers)
|
134
|
-
mime.expects(:findHeader).with(headers, "content-type").returns(hdr)
|
135
|
-
|
136
|
-
mime.expects(:findParam).with(hdr, "boundary").returns(MimeParam.new("boundary", nil))
|
137
|
-
|
138
|
-
begin
|
139
|
-
SMIME.new(mime).readPKCS7(bio, nil)
|
140
|
-
assert false
|
141
|
-
rescue PKCS7Exception => e
|
142
|
-
assert_equal PKCS7::F_SMIME_READ_PKCS7, e.cause.get_method
|
143
|
-
assert_equal PKCS7::R_NO_MULTIPART_BOUNDARY, e.cause.get_reason
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
# TODO: redo this test to be an integration test
|
148
|
-
def _test_read_pkcs7_happy_path_without_multipart
|
149
|
-
bio = BIO.new
|
150
|
-
mime = Mime.new
|
151
|
-
|
152
|
-
headers = ArrayList.new
|
153
|
-
mime.expects(:parseHeaders).with(bio).returns(headers)
|
154
|
-
mime.expects(:findHeader).with(headers, "content-type").returns(MimeHeader.new("content-type", "application/pkcs7-mime"))
|
155
|
-
|
156
|
-
SMIME.new(mime).readPKCS7(bio, nil)
|
157
|
-
end
|
158
|
-
|
159
|
-
def test_read_pkcs7_happy_path_multipart
|
160
|
-
bio = BIO::from_string(MultipartSignedString)
|
161
|
-
mime = Mime::DEFAULT
|
162
|
-
p7 = SMIME.new(mime).readPKCS7(bio, nil)
|
163
|
-
end
|
164
|
-
|
165
|
-
def test_read_pkcs7_happy_path_without_multipart_enveloped
|
166
|
-
bio = BIO::from_string(MimeEnvelopedString)
|
167
|
-
mime = Mime::DEFAULT
|
168
|
-
p7 = SMIME.new(mime).readPKCS7(bio, nil)
|
169
|
-
end
|
170
|
-
|
171
|
-
def test_read_pkcs7_happy_path_without_multipart_signed
|
172
|
-
bio = BIO::from_string(MimeSignedString)
|
173
|
-
mime = Mime::DEFAULT
|
174
|
-
p7 = SMIME.new(mime).readPKCS7(bio, nil)
|
175
|
-
end
|
176
|
-
end
|
177
|
-
end
|
data/test/test_java.rb
DELETED
@@ -1,98 +0,0 @@
|
|
1
|
-
$:.unshift File.join(File.dirname(__FILE__), '..', 'build_lib', 'mocha', 'lib')
|
2
|
-
|
3
|
-
require "test/unit"
|
4
|
-
require 'mocha'
|
5
|
-
|
6
|
-
if defined?(JRUBY_VERSION)
|
7
|
-
require "java"
|
8
|
-
$CLASSPATH << 'pkg/classes'
|
9
|
-
$CLASSPATH << Dir["build_lib/bcprov-*"].first
|
10
|
-
|
11
|
-
module PKCS7Test
|
12
|
-
module ASN1
|
13
|
-
OctetString = org.bouncycastle.asn1.DEROctetString
|
14
|
-
end
|
15
|
-
|
16
|
-
PKCS7 = org.jruby.ext.openssl.impl.PKCS7 unless defined?(PKCS7)
|
17
|
-
Attribute = org.jruby.ext.openssl.impl.Attribute unless defined?(Attribute)
|
18
|
-
CipherSpec = org.jruby.ext.openssl.impl.CipherSpec unless defined?(CipherSpec)
|
19
|
-
Digest = org.jruby.ext.openssl.impl.Digest unless defined?(Digest)
|
20
|
-
EncContent = org.jruby.ext.openssl.impl.EncContent unless defined?(EncContent)
|
21
|
-
Encrypt = org.jruby.ext.openssl.impl.Encrypt unless defined?(Encrypt)
|
22
|
-
Envelope = org.jruby.ext.openssl.impl.Envelope unless defined?(Envelope)
|
23
|
-
IssuerAndSerial = org.jruby.ext.openssl.impl.IssuerAndSerial unless defined?(IssuerAndSerial)
|
24
|
-
RecipInfo = org.jruby.ext.openssl.impl.RecipInfo unless defined?(RecipInfo)
|
25
|
-
SignEnvelope = org.jruby.ext.openssl.impl.SignEnvelope unless defined?(SignEnvelope)
|
26
|
-
Signed = org.jruby.ext.openssl.impl.Signed unless defined?(Signed)
|
27
|
-
SMIME = org.jruby.ext.openssl.impl.SMIME unless defined?(SMIME)
|
28
|
-
Mime = org.jruby.ext.openssl.impl.Mime unless defined?(Mime)
|
29
|
-
MimeHeader = org.jruby.ext.openssl.impl.MimeHeader unless defined?(MimeHeader)
|
30
|
-
MimeParam = org.jruby.ext.openssl.impl.MimeParam unless defined?(MimeParam)
|
31
|
-
BIO = org.jruby.ext.openssl.impl.BIO unless defined?(BIO)
|
32
|
-
PKCS7Exception = org.jruby.ext.openssl.impl.PKCS7Exception unless defined?(PKCS7Exception)
|
33
|
-
ASN1Registry = org.jruby.ext.openssl.impl.ASN1Registry unless defined?(ASN1Registry)
|
34
|
-
AlgorithmIdentifier = org.bouncycastle.asn1.x509.AlgorithmIdentifier unless defined?(AlgorithmIdentifier)
|
35
|
-
SignerInfoWithPkey = org.jruby.ext.openssl.impl.SignerInfoWithPkey unless defined?(SignerInfoWithPkey)
|
36
|
-
IssuerAndSerialNumber = org.bouncycastle.asn1.pkcs.IssuerAndSerialNumber unless defined?(IssuerAndSerialNumber)
|
37
|
-
ASN1InputStream = org.bouncycastle.asn1.ASN1InputStream unless defined?(ASN1InputStream)
|
38
|
-
X509AuxCertificate = org.jruby.ext.openssl.x509store.X509AuxCertificate unless defined?(X509AuxCertificate)
|
39
|
-
|
40
|
-
ArrayList = java.util.ArrayList unless defined?(ArrayList)
|
41
|
-
CertificateFactory = java.security.cert.CertificateFactory unless defined?(CertificateFactory)
|
42
|
-
BCP = org.bouncycastle.jce.provider.BouncyCastleProvider unless defined?(BCP)
|
43
|
-
ByteArrayInputStream = java.io.ByteArrayInputStream unless defined?(ByteArrayInputStream)
|
44
|
-
BigInteger = java.math.BigInteger unless defined?(BigInteger)
|
45
|
-
Cipher = javax.crypto.Cipher unless defined?(Cipher)
|
46
|
-
|
47
|
-
ASN1Integer = org.bouncycastle.asn1.ASN1Integer
|
48
|
-
DERSet = org.bouncycastle.asn1.DERSet
|
49
|
-
DEROctetString = org.bouncycastle.asn1.DEROctetString
|
50
|
-
X500Name = org.bouncycastle.asn1.x500.X500Name
|
51
|
-
|
52
|
-
|
53
|
-
MimeEnvelopedString = File::read(File.join(File.dirname(__FILE__), 'java', 'pkcs7_mime_enveloped.message'))
|
54
|
-
MimeSignedString = File::read(File.join(File.dirname(__FILE__), 'java', 'pkcs7_mime_signed.message'))
|
55
|
-
MultipartSignedString = File::read(File.join(File.dirname(__FILE__), 'java', 'pkcs7_multipart_signed.message'))
|
56
|
-
|
57
|
-
X509CertString = <<CERT
|
58
|
-
-----BEGIN CERTIFICATE-----
|
59
|
-
MIICijCCAXKgAwIBAgIBAjANBgkqhkiG9w0BAQUFADA9MRMwEQYKCZImiZPyLGQB
|
60
|
-
GRYDb3JnMRkwFwYKCZImiZPyLGQBGRYJcnVieS1sYW5nMQswCQYDVQQDDAJDQTAe
|
61
|
-
Fw0wODA3MDgxOTE1NDZaFw0wODA3MDgxOTQ1NDZaMEQxEzARBgoJkiaJk/IsZAEZ
|
62
|
-
FgNvcmcxGTAXBgoJkiaJk/IsZAEZFglydWJ5LWxhbmcxEjAQBgNVBAMMCWxvY2Fs
|
63
|
-
aG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAy8LEsNRApz7U/j5DoB4X
|
64
|
-
BgO9Z8Atv5y/OVQRp0ag8Tqo1YewsWijxEWB7JOATwpBN267U4T1nPZIxxEEO7n/
|
65
|
-
WNa2ws9JWsjah8ssEBFSxZqdXKSLf0N4Hi7/GQ/aYoaMCiQ8jA4jegK2FJmXM71u
|
66
|
-
Pe+jFN/peeBOpRfyXxRFOYcCAwEAAaMSMBAwDgYDVR0PAQH/BAQDAgWgMA0GCSqG
|
67
|
-
SIb3DQEBBQUAA4IBAQCU879BALJIM9avHiuZ3WTjDy0UYP3ZG5wtuSqBSnD1k8pr
|
68
|
-
hXfRaga7mDj6EQaGUovImb+KrRi6mZc+zsx4rTxwBNJT9U8yiW2eYxmgcT9/qKrD
|
69
|
-
/1nz+e8NeUCCDY5UTUHGszZw5zLEDgDX2n3E/CDIZsoRSyq5vXq1jpfih/tSWanj
|
70
|
-
Y9uP/o8Dc7ZcRJOAX7NPu1bbZcbxEbZ8sMe5wZ5HNiAR6gnOrjz2Yyazb//PSskE
|
71
|
-
4flt/2h4pzGA0/ZHcnDjcoLdiLtInsqPOlVDLgqd/XqRYWtj84N4gw1iS9cHyrIZ
|
72
|
-
dqbS54IKvzElD+R0QVS2z6TIGJSpuSBnZ4yfuNuq
|
73
|
-
-----END CERTIFICATE-----
|
74
|
-
CERT
|
75
|
-
|
76
|
-
X509CRLString = <<CRL
|
77
|
-
----BEGIN X509 CRL-----
|
78
|
-
MIIBlTB/AgEBMA0GCSqGSIb3DQEBBQUAMD0xEzARBgoJkiaJk/IsZAEZFgNvcmcx
|
79
|
-
GTAXBgoJkiaJk/IsZAEZFglydWJ5LWxhbmcxCzAJBgNVBAMMAkNBFw0wODA3MTgx
|
80
|
-
NzQxMjhaFw0wODA3MTgxODA4MDhaoA4wDDAKBgNVHRQEAwIBATANBgkqhkiG9w0B
|
81
|
-
AQUFAAOCAQEASJaj1keN+tMmsF3QmjH2RhbW/9rZAl4gjv+uQQqrcS2ByfkXLU1d
|
82
|
-
l/8rCHeT/XMoeU6xhQNHPP3uZBwfuuETcp65BMBcZFOUhUR0U5AaGhvSDS/+6EsP
|
83
|
-
zFdQgAagmThFdN5ei9guTLqWwN0ZyqiaHyevFJuk+L9qbKavaSeKqfJbU7Sj/Z3J
|
84
|
-
WLKoixvyj3N6W7evygH80lTvjZugmxJ1/AjICVSYr1hpHHd6EWq0b0YFrGFmg27R
|
85
|
-
WmsAXd0QV5UChfAJ2+Cz5U1bPszvIJGrzfAIoLxHv5rI5rseQzqZdPaFSe4Oehln
|
86
|
-
9qEYmsK3PS6bYoQol0cgj97Ep4olS8CulA==
|
87
|
-
-----END X509 CRL-----
|
88
|
-
CRL
|
89
|
-
|
90
|
-
X509Cert = X509AuxCertificate.new(CertificateFactory.getInstance("X.509",BCP.new).generateCertificate(ByteArrayInputStream.new(X509CertString.to_java_bytes)))
|
91
|
-
X509CRL = CertificateFactory.getInstance("X.509",BCP.new).generateCRL(ByteArrayInputStream.new(X509CRLString.to_java_bytes))
|
92
|
-
end
|
93
|
-
|
94
|
-
files = File.join(File.dirname(__FILE__), 'java', 'test_*.rb')
|
95
|
-
Dir.glob(files).sort.each do |tc|
|
96
|
-
require tc
|
97
|
-
end
|
98
|
-
end
|
data/test/ut_eof.rb
DELETED
@@ -1,128 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
|
3
|
-
module TestEOF
|
4
|
-
def test_eof_0
|
5
|
-
open_file("") {|f|
|
6
|
-
assert_equal("", f.read(0))
|
7
|
-
assert_equal("", f.read(0))
|
8
|
-
assert_equal("", f.read)
|
9
|
-
assert_nil(f.read(0))
|
10
|
-
assert_nil(f.read(0))
|
11
|
-
}
|
12
|
-
open_file("") {|f|
|
13
|
-
assert_nil(f.read(1))
|
14
|
-
assert_equal("", f.read)
|
15
|
-
assert_nil(f.read(1))
|
16
|
-
}
|
17
|
-
open_file("") {|f|
|
18
|
-
s = "x"
|
19
|
-
assert_equal("", f.read(nil, s))
|
20
|
-
assert_equal("", s)
|
21
|
-
}
|
22
|
-
open_file("") {|f|
|
23
|
-
s = "x"
|
24
|
-
assert_nil(f.read(10, s))
|
25
|
-
assert_equal("", s)
|
26
|
-
}
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_eof_0_rw
|
30
|
-
return unless respond_to? :open_file_rw
|
31
|
-
open_file_rw("") {|f|
|
32
|
-
assert_equal("", f.read)
|
33
|
-
assert_equal("", f.read)
|
34
|
-
assert_equal(0, f.syswrite(""))
|
35
|
-
assert_equal("", f.read)
|
36
|
-
}
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_eof_1
|
40
|
-
open_file("a") {|f|
|
41
|
-
assert_equal("", f.read(0))
|
42
|
-
assert_equal("a", f.read(1))
|
43
|
-
assert_equal("" , f.read(0))
|
44
|
-
assert_equal("" , f.read(0))
|
45
|
-
assert_equal("", f.read)
|
46
|
-
assert_nil(f.read(0))
|
47
|
-
assert_nil(f.read(0))
|
48
|
-
}
|
49
|
-
open_file("a") {|f|
|
50
|
-
assert_equal("a", f.read(1))
|
51
|
-
assert_nil(f.read(1))
|
52
|
-
}
|
53
|
-
open_file("a") {|f|
|
54
|
-
assert_equal("a", f.read(2))
|
55
|
-
assert_nil(f.read(1))
|
56
|
-
assert_equal("", f.read)
|
57
|
-
assert_nil(f.read(1))
|
58
|
-
}
|
59
|
-
open_file("a") {|f|
|
60
|
-
assert_equal("a", f.read)
|
61
|
-
assert_nil(f.read(1))
|
62
|
-
assert_equal("", f.read)
|
63
|
-
assert_nil(f.read(1))
|
64
|
-
}
|
65
|
-
open_file("a") {|f|
|
66
|
-
assert_equal("a", f.read(2))
|
67
|
-
assert_equal("", f.read)
|
68
|
-
assert_equal("", f.read)
|
69
|
-
}
|
70
|
-
open_file("a") {|f|
|
71
|
-
assert_equal("a", f.read)
|
72
|
-
assert_nil(f.read(0))
|
73
|
-
}
|
74
|
-
open_file("a") {|f|
|
75
|
-
s = "x"
|
76
|
-
assert_equal("a", f.read(nil, s))
|
77
|
-
assert_equal("a", s)
|
78
|
-
}
|
79
|
-
open_file("a") {|f|
|
80
|
-
s = "x"
|
81
|
-
assert_equal("a", f.read(10, s))
|
82
|
-
assert_equal("a", s)
|
83
|
-
}
|
84
|
-
end
|
85
|
-
|
86
|
-
def test_eof_2
|
87
|
-
open_file("") {|f|
|
88
|
-
assert_equal("", f.read)
|
89
|
-
assert(f.eof?)
|
90
|
-
}
|
91
|
-
end
|
92
|
-
|
93
|
-
def test_eof_3
|
94
|
-
open_file("") {|f|
|
95
|
-
assert(f.eof?)
|
96
|
-
}
|
97
|
-
end
|
98
|
-
|
99
|
-
module Seek
|
100
|
-
def open_file_seek(content, pos)
|
101
|
-
open_file(content) do |f|
|
102
|
-
f.seek(pos)
|
103
|
-
yield f
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
def test_eof_0_seek
|
108
|
-
open_file_seek("", 10) {|f|
|
109
|
-
assert_equal(10, f.pos)
|
110
|
-
assert_equal("", f.read(0))
|
111
|
-
assert_equal("", f.read)
|
112
|
-
assert_nil(f.read(0))
|
113
|
-
assert_equal("", f.read)
|
114
|
-
}
|
115
|
-
end
|
116
|
-
|
117
|
-
def test_eof_1_seek
|
118
|
-
open_file_seek("a", 10) {|f|
|
119
|
-
assert_equal("", f.read)
|
120
|
-
assert_equal("", f.read)
|
121
|
-
}
|
122
|
-
open_file_seek("a", 1) {|f|
|
123
|
-
assert_equal("", f.read)
|
124
|
-
assert_equal("", f.read)
|
125
|
-
}
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|