/
data_test.rb
142 lines (122 loc) · 3.75 KB
/
data_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# -*- encoding: utf-8 -*-
require 'test_helper'
describe GPGME::Data do
describe :new do
it "smartly creates an empty buffer if nothing passed" do
data = GPGME::Data.new
assert_instance_of GPGME::Data, data
assert_respond_to data, :read
assert_respond_to data, :write
end
it "doesn't create a new object if the object passed is a Data already" do
data = GPGME::Data.new
new_data = GPGME::Data.new(data)
assert_equal data, new_data
end
it "creates a data from strings" do
data = GPGME::Data.new("wadus")
assert_equal "wadus", data.read
end
it "creates a data from a file" do
# magic fromfile
data = GPGME::Data.new(File.open(__FILE__))
assert_match /magic fromfile/, data.read
end
it "creates a data from file descriptor" do
# magic filedescriptor
File.open(__FILE__) do |f|
data = GPGME::Data.new(f.fileno)
assert_match /magic filedescriptor/, data.read
end
end
end
describe :read do
it "allows to read only a length of the object" do
data = GPGME::Data.new("wadus")
assert_equal "wad", data.read(3)
end
it "returns nil if reading 0 length" do
data = GPGME::Data.new("wadus")
assert_nil data.read(0)
end
it "returns the full thing if reading without parameter" do
data = GPGME::Data.new("wadus")
assert_equal "wadus", data.read
end
end
##
# We consider seek tested by these ones, since we have to seek(0) before
# reading.
describe :write do
it "writes data to it" do
data = GPGME::Data.new
data.write("wadus")
data.seek(0)
assert_equal "wadus", data.read
end
it "writes data to it, specifying the length of the things to write" do
data = GPGME::Data.new
data.write("wadus", 5)
data.seek(0)
assert_equal "wadus", data.read
end
it "writes only a limited part if specified a small number" do
data = GPGME::Data.new
data.write("wadus", 3)
data.seek(0)
assert_equal "wad", data.read
end
# TODO: test doesn't pass, I believe there might be a security issue here,
# random crap is written to the buffer if a longer size is passed.
#
# it "writes only the full data passed even if the length is bigger" do
# data = GPGME::Data.new
# data.write("wadus", 100)
# data.seek(0)
# assert_equal "wadus", data.read
# end
end
describe :encoding do
it "has encoding 0 by default (DATA_ENCODING_NONE)" do
data = GPGME::Data.new("wadus")
assert_equal GPGME::DATA_ENCODING_NONE, data.encoding
end
it "can set encodings" do
data = GPGME::Data.new("wadus")
[ GPGME::DATA_ENCODING_ARMOR, GPGME::DATA_ENCODING_BASE64,
GPGME::DATA_ENCODING_BINARY,GPGME::DATA_ENCODING_NONE ].each do |encoding|
data.encoding = encoding
assert_equal encoding, data.encoding
end
end
it "breaks if not set a proper encoding value" do
data = GPGME::Data.new("wadus")
assert_raises GPGME::Error::InvalidValue do
data.encoding = 64
end
end
end
describe :file_name do
it "has no name by default" do
data = GPGME::Data.new("wadus")
assert_nil data.file_name
end
it "can set file_name" do
data = GPGME::Data.new("wadus")
[ "foo.bar", nil ].each do |file_name|
data.file_name = file_name
assert_equal file_name, data.file_name
end
end
end
describe :to_s do
it "returns the entire content of data" do
data = GPGME::Data.new("wadus")
data.read
old_pos = data.seek(0, IO::SEEK_CUR)
assert_equal "wadus", data.to_s
new_pos = data.seek(0, IO::SEEK_CUR)
assert_equal old_pos, new_pos
end
end
end