Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

166 lines (128 sloc) 4.734 kb
shared 'a driver supporting different encodings' do
before do
@connection = DataObjects::Connection.new(CONFIG.uri)
end
after do
@connection.close
end
it 'should respond to #character_set' do @connection.should.respond_to(:character_set) end
describe 'character_set' do
it 'uses utf8 by default' do
@connection.character_set.should == 'UTF-8'
end
describe 'sets the character set through the URI' do
before do
# @latin1_connection = DataObjects::Connection.new("#{CONFIG.uri}?encoding=latin1")
@latin1_connection = DataObjects::Connection.new("#{CONFIG.scheme}://#{CONFIG.user}:#{CONFIG.pass}@#{CONFIG.host}:#{CONFIG.port}#{CONFIG.database}?encoding=ISO-8859-1")
end
after { @latin1_connection.close }
it 'the character set should be ISO-8859-1' do
@latin1_connection.character_set.should == 'ISO-8859-1'
end
end
describe 'uses UTF-8 when an invalid encoding is given' do
before do
@latin1_connection = DataObjects::Connection.new("#{CONFIG.scheme}://#{CONFIG.user}:#{CONFIG.pass}@#{CONFIG.host}:#{CONFIG.port}#{CONFIG.database}?encoding=ISO-INVALID")
end
after { @latin1_connection.close }
it 'the character set should be UTF-8' do
@latin1_connection.character_set.should == 'UTF-8'
end
end
end
end
shared 'returning correctly encoded strings for the default database encoding' do
if defined?(::Encoding)
setup_test_environment
before do
@connection.close if @connection
@connection = DataObjects::Connection.new(CONFIG.uri)
end
after do
@connection.close
end
describe 'with encoded string support' do
describe 'reading a String' do
before do
@reader = @connection.create_command("SELECT name, whitepaper_text FROM widgets WHERE ad_description = ?").execute_reader('Buy this product now!')
@reader.next!
@values = @reader.values
end
after do
@reader.close
end
it 'should return UTF-8 encoded String' do
@values.first.should.be.kind_of(String)
@values.first.encoding.name.should == 'UTF-8'
@values.last.should.be.kind_of(String)
@values.last.encoding.name.should == 'UTF-8'
end
end
describe 'reading a ByteArray' do
before do
@command = @connection.create_command("SELECT ad_image FROM widgets WHERE ad_description = ?")
@command.set_types(Extlib::ByteArray)
@reader = @command.execute_reader('Buy this product now!')
@reader.next!
@values = @reader.values
end
after do
@reader.close
end
it 'should return ASCII-8BIT encoded ByteArray' do
@values.first.should.be.kind_of(::Extlib::ByteArray)
@values.first.encoding.name.should == 'ASCII-8BIT'
end
end
end
end
end
shared 'returning correctly encoded strings for the default internal encoding' do
if defined?(::Encoding)
setup_test_environment
before do
@connection.close if @connection
@encoding_before = Encoding.default_internal
Encoding.default_internal = 'ISO-8859-1'
@connection = DataObjects::Connection.new(CONFIG.uri)
end
after do
@connection.close
Encoding.default_internal = @encoding_before
end
describe 'with encoded string support' do
describe 'reading a String' do
before do
@reader = @connection.create_command("SELECT name, whitepaper_text FROM widgets WHERE ad_description = ?").execute_reader('Buy this product now!')
@reader.next!
@values = @reader.values
end
after do
@reader.close
end
it 'should return UTF-8 encoded String' do
@values.first.should.be.kind_of(String)
@values.first.encoding.name.should == 'ISO-8859-1'
@values.last.should.be.kind_of(String)
@values.last.encoding.name.should == 'ISO-8859-1'
end
end
describe 'reading a ByteArray' do
before do
@command = @connection.create_command("SELECT ad_image FROM widgets WHERE ad_description = ?")
@command.set_types(Extlib::ByteArray)
@reader = @command.execute_reader('Buy this product now!')
@reader.next!
@values = @reader.values
end
after do
@reader.close
end
it 'should return ASCII-8BIT encoded ByteArray' do
@values.first.should.be.kind_of(::Extlib::ByteArray)
@values.first.encoding.name.should == 'ASCII-8BIT'
end
end
end
end
end
Jump to Line
Something went wrong with that request. Please try again.