rspec-encoding-matchers 0.1.0

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.
@@ -0,0 +1 @@
1
+ require "autotest/bundler"
@@ -0,0 +1,4 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
4
+ Gemfile.lock
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use 1.9.2
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in rspec-encoding-matchers.gemspec
4
+ gemspec
@@ -0,0 +1,210 @@
1
+ RSpec Encoding Matchers
2
+ =======================
3
+
4
+ Provides RSpec matchers for Ruby 1.9 string encoding.
5
+
6
+ Installation
7
+ ------------
8
+
9
+ `gem install rspec-encoding-matchers`
10
+
11
+ Then require the gem:
12
+
13
+ `require 'rspec_encoding_matchers'`
14
+
15
+ Configuration
16
+ -------------
17
+
18
+ To use the custom matchers, include the matcher module either in an example group:
19
+
20
+ describe "my group" do
21
+ include RspecEncodingMatchers
22
+ it "is encoded in UTF-8" do
23
+ hello.should be_encoded_as("UTF-8")
24
+ end
25
+ end
26
+
27
+ Or you can include the module in your RSpec configuration.
28
+
29
+ # spec_helper.rb
30
+ RSpec.configure do |config|
31
+ config.color_enabled = true
32
+ config.include RSpecEncodingMatchers
33
+ end
34
+
35
+ Usage
36
+ -----
37
+
38
+ RSpecEncodingMatchers provides two types of matchers. The first type, `be_encoded_as`, matches to see if the subject is the encoding passed in as a parameter.
39
+
40
+ "my string".should be_encoded_as("UTF-8")
41
+
42
+ RSpecEncodingMatchers also provides built in matchers for all known string encodings (and their alternate names) to Ruby. For example:
43
+
44
+ "my string".should be_iso_8859_1_encoded
45
+
46
+ Presently, the following built in encoding matchers are available.
47
+
48
+ * be\_ascii\_8bit\_encoded
49
+ * be\_binary\_encoded
50
+ * be\_utf\_8\_encoded
51
+ * be\_cp65001\_encoded
52
+ * be\_locale\_encoded
53
+ * be\_external\_encoded
54
+ * be\_filesystem\_encoded
55
+ * be\_us\_ascii\_encoded
56
+ * be\_ascii\_encoded
57
+ * be\_ansi\_x3.4\_1968\_encoded
58
+ * be\_646\_encoded
59
+ * be\_big5\_encoded
60
+ * be\_cp950\_encoded
61
+ * be\_big5\_hkscs\_encoded
62
+ * be\_cp951\_encoded
63
+ * be\_big5\_uao\_encoded
64
+ * be\_cp949\_encoded
65
+ * be\_emacs\_mule\_encoded
66
+ * be\_euc\_jp\_encoded
67
+ * be\_eucjp\_encoded
68
+ * be\_euc\_kr\_encoded
69
+ * be\_euckr\_encoded
70
+ * be\_euc\_tw\_encoded
71
+ * be\_euctw\_encoded
72
+ * be\_gb18030\_encoded
73
+ * be\_gbk\_encoded
74
+ * be\_cp936\_encoded
75
+ * be\_iso\_8859\_1\_encoded
76
+ * be\_iso8859\_1\_encoded
77
+ * be\_iso\_8859\_2\_encoded
78
+ * be\_iso8859\_2\_encoded
79
+ * be\_iso\_8859\_3\_encoded
80
+ * be\_iso8859\_3\_encoded
81
+ * be\_iso\_8859\_4\_encoded
82
+ * be\_iso8859\_4\_encoded
83
+ * be\_iso\_8859\_5\_encoded
84
+ * be\_iso8859\_5\_encoded
85
+ * be\_iso\_8859\_6\_encoded
86
+ * be\_iso8859\_6\_encoded
87
+ * be\_iso\_8859\_7\_encoded
88
+ * be\_iso8859\_7\_encoded
89
+ * be\_iso\_8859\_8\_encoded
90
+ * be\_iso8859\_8\_encoded
91
+ * be\_iso\_8859\_9\_encoded
92
+ * be\_iso8859\_9\_encoded
93
+ * be\_iso\_8859\_10\_encoded
94
+ * be\_iso8859\_10\_encoded
95
+ * be\_iso\_8859\_11\_encoded
96
+ * be\_iso8859\_11\_encoded
97
+ * be\_iso\_8859\_13\_encoded
98
+ * be\_iso8859\_13\_encoded
99
+ * be\_iso\_8859\_14\_encoded
100
+ * be\_iso8859\_14\_encoded
101
+ * be\_iso\_8859\_15\_encoded
102
+ * be\_iso8859\_15\_encoded
103
+ * be\_iso\_8859\_16\_encoded
104
+ * be\_iso8859\_16\_encoded
105
+ * be\_koi8\_r\_encoded
106
+ * be\_cp878\_encoded
107
+ * be\_koi8\_u\_encoded
108
+ * be\_shift\_jis\_encoded
109
+ * be\_sjis\_encoded
110
+ * be\_utf\_16be\_encoded
111
+ * be\_ucs\_2be\_encoded
112
+ * be\_utf\_16le\_encoded
113
+ * be\_utf\_32be\_encoded
114
+ * be\_ucs\_4be\_encoded
115
+ * be\_utf\_32le\_encoded
116
+ * be\_ucs\_4le\_encoded
117
+ * be\_windows\_1251\_encoded
118
+ * be\_cp1251\_encoded
119
+ * be\_ibm437\_encoded
120
+ * be\_cp437\_encoded
121
+ * be\_ibm737\_encoded
122
+ * be\_cp737\_encoded
123
+ * be\_ibm775\_encoded
124
+ * be\_cp775\_encoded
125
+ * be\_cp850\_encoded
126
+ * be\_ibm850\_encoded
127
+ * be\_ibm852\_encoded
128
+ * be\_cp852\_encoded
129
+ * be\_ibm855\_encoded
130
+ * be\_cp855\_encoded
131
+ * be\_ibm857\_encoded
132
+ * be\_cp857\_encoded
133
+ * be\_ibm860\_encoded
134
+ * be\_cp860\_encoded
135
+ * be\_ibm861\_encoded
136
+ * be\_cp861\_encoded
137
+ * be\_ibm862\_encoded
138
+ * be\_cp862\_encoded
139
+ * be\_ibm863\_encoded
140
+ * be\_cp863\_encoded
141
+ * be\_ibm864\_encoded
142
+ * be\_cp864\_encoded
143
+ * be\_ibm865\_encoded
144
+ * be\_cp865\_encoded
145
+ * be\_ibm866\_encoded
146
+ * be\_cp866\_encoded
147
+ * be\_ibm869\_encoded
148
+ * be\_cp869\_encoded
149
+ * be\_windows\_1258\_encoded
150
+ * be\_cp1258\_encoded
151
+ * be\_gb1988\_encoded
152
+ * be\_maccenteuro\_encoded
153
+ * be\_maccroatian\_encoded
154
+ * be\_maccyrillic\_encoded
155
+ * be\_macgreek\_encoded
156
+ * be\_maciceland\_encoded
157
+ * be\_macroman\_encoded
158
+ * be\_macromania\_encoded
159
+ * be\_macthai\_encoded
160
+ * be\_macturkish\_encoded
161
+ * be\_macukraine\_encoded
162
+ * be\_stateless\_iso\_2022\_jp\_encoded
163
+ * be\_eucjp\_ms\_encoded
164
+ * be\_euc\_jp\_ms\_encoded
165
+ * be\_cp51932\_encoded
166
+ * be\_gb2312\_encoded
167
+ * be\_euc\_cn\_encoded
168
+ * be\_euccn\_encoded
169
+ * be\_gb12345\_encoded
170
+ * be\_iso\_2022\_jp\_encoded
171
+ * be\_iso2022\_jp\_encoded
172
+ * be\_iso\_2022\_jp\_2\_encoded
173
+ * be\_iso2022\_jp2\_encoded
174
+ * be\_cp50220\_encoded
175
+ * be\_cp50221\_encoded
176
+ * be\_windows\_1252\_encoded
177
+ * be\_cp1252\_encoded
178
+ * be\_windows\_1250\_encoded
179
+ * be\_cp1250\_encoded
180
+ * be\_windows\_1256\_encoded
181
+ * be\_cp1256\_encoded
182
+ * be\_windows\_1253\_encoded
183
+ * be\_cp1253\_encoded
184
+ * be\_windows\_1255\_encoded
185
+ * be\_cp1255\_encoded
186
+ * be\_windows\_1254\_encoded
187
+ * be\_cp1254\_encoded
188
+ * be\_tis\_620\_encoded
189
+ * be\_windows\_874\_encoded
190
+ * be\_cp874\_encoded
191
+ * be\_windows\_1257\_encoded
192
+ * be\_cp1257\_encoded
193
+ * be\_windows\_31j\_encoded
194
+ * be\_cp932\_encoded
195
+ * be\_cswindows31j\_encoded
196
+ * be\_macjapanese\_encoded
197
+ * be\_macjapan\_encoded
198
+ * be\_utf\_7\_encoded
199
+ * be\_cp65000\_encoded
200
+ * be\_utf8\_mac\_encoded
201
+ * be\_utf\_8\_mac\_encoded
202
+ * be\_utf\_8\_hfs\_encoded
203
+ * be\_utf8\_docomo\_encoded
204
+ * be\_sjis\_docomo\_encoded
205
+ * be\_utf8\_kddi\_encoded
206
+ * be\_sjis\_kddi\_encoded
207
+ * be\_iso\_2022\_jp\_kddi\_encoded
208
+ * be\_stateless\_iso\_2022\_jp\_kddi\_encoded
209
+ * be\_utf8\_softbank\_encoded
210
+ * be\_sjis\_softbank\_encoded
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,20 @@
1
+ module RSpecEncodingMatchers
2
+ extend RSpec::Matchers::DSL
3
+
4
+ matcher :be_encoded_as do |expected|
5
+ match do |actual|
6
+ actual.encoding == Encoding.find(expected.to_s)
7
+ end
8
+ end
9
+
10
+ Encoding.list.each do |encoding|
11
+ encoding.names.each do |name|
12
+
13
+ matcher "be_#{name.gsub("-", "_").downcase}_encoded".to_sym do
14
+ match { |actual| actual.encoding == encoding }
15
+ end
16
+
17
+ end
18
+ end
19
+
20
+ end
@@ -0,0 +1,3 @@
1
+ module RSpecEncodingMatchers
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "rspec_encoding_matchers/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "rspec-encoding-matchers"
7
+ s.version = RSpecEncodingMatchers::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Jeff Pollard"]
10
+ s.email = ["jeff.pollard@gmail.com"]
11
+ s.homepage = ""
12
+ s.summary = %q{RSpec matchers for Ruby 1.9 string encodings.}
13
+ s.description = %q{RSpec matchers for Ruby 1.9 string encodings.}
14
+
15
+ s.rubyforge_project = "rspec-encoding-matchers"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_development_dependency 'rspec'
23
+ s.add_development_dependency 'rake'
24
+ s.add_development_dependency 'ZenTest'
25
+ end
@@ -0,0 +1,35 @@
1
+ # encoding: UTF-8
2
+
3
+ require "spec_helper"
4
+
5
+ describe "#be_encoded_as" do
6
+
7
+ it "matches encoding of strings with official names" do
8
+ "hello".should be_encoded_as("UTF-8")
9
+ end
10
+
11
+ it "matches encoding of strings alised to the actual encoding" do
12
+ "hello".should be_encoded_as("CP65001")
13
+ end
14
+
15
+ it "matches encodings found with symbols" do
16
+ "hello".should be_encoded_as(:CP65001)
17
+ end
18
+
19
+ end
20
+
21
+ Encoding.list.each do |encoding|
22
+ encoding.names.each do |name|
23
+
24
+ matcher_name = "be_#{name.gsub("-", "_").downcase}_encoded"
25
+
26
+ describe "##{matcher_name}" do
27
+
28
+ it "matches stings in the requested encoding" do
29
+ "hello".encode(encoding).should send(matcher_name) unless encoding.dummy?
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,9 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+
4
+ require "rspec_encoding_matchers"
5
+
6
+ RSpec.configure do |config|
7
+ config.color_enabled = true
8
+ config.include RSpecEncodingMatchers
9
+ end
metadata ADDED
@@ -0,0 +1,107 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rspec-encoding-matchers
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors:
8
+ - Jeff Pollard
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-02-21 00:00:00 -08:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rspec
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ type: :development
25
+ prerelease: false
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: ZenTest
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ type: :development
47
+ prerelease: false
48
+ version_requirements: *id003
49
+ description: RSpec matchers for Ruby 1.9 string encodings.
50
+ email:
51
+ - jeff.pollard@gmail.com
52
+ executables: []
53
+
54
+ extensions: []
55
+
56
+ extra_rdoc_files: []
57
+
58
+ files:
59
+ - .autotest
60
+ - .gitignore
61
+ - .rspec
62
+ - .rvmrc
63
+ - Gemfile
64
+ - README.md
65
+ - Rakefile
66
+ - lib/rspec_encoding_matchers.rb
67
+ - lib/rspec_encoding_matchers/version.rb
68
+ - rspec-encoding-matchers.gemspec
69
+ - spec/encoding_matcher_spec.rb
70
+ - spec/spec_helper.rb
71
+ has_rdoc: true
72
+ homepage: ""
73
+ licenses: []
74
+
75
+ post_install_message:
76
+ rdoc_options: []
77
+
78
+ require_paths:
79
+ - lib
80
+ required_ruby_version: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ hash: -2940195445060341523
86
+ segments:
87
+ - 0
88
+ version: "0"
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ hash: -2940195445060341523
95
+ segments:
96
+ - 0
97
+ version: "0"
98
+ requirements: []
99
+
100
+ rubyforge_project: rspec-encoding-matchers
101
+ rubygems_version: 1.5.2
102
+ signing_key:
103
+ specification_version: 3
104
+ summary: RSpec matchers for Ruby 1.9 string encodings.
105
+ test_files:
106
+ - spec/encoding_matcher_spec.rb
107
+ - spec/spec_helper.rb