test/test_io.rb in avro-1.10.2 vs test/test_io.rb in avro-1.11.0
- old
+ new
@@ -1,5 +1,6 @@
+# frozen_string_literal: true
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
@@ -215,11 +216,11 @@
[2, '04'],
[-64, '7f'],
[64, '80 01'],
[8192, '80 80 01'],
[-8193, '81 80 01'],
- ]
+ ].freeze
def avro_hexlify(reader)
bytes = []
current_byte = reader.read(1)
bytes << hexlify(current_byte)
@@ -264,50 +265,50 @@
end
end
def test_utf8_string_encoding
[
- "\xC3".force_encoding('ISO-8859-1'),
- "\xC3\x83".force_encoding('UTF-8')
+ String.new("\xC3", encoding: 'ISO-8859-1'),
+ String.new("\xC3\x83", encoding: 'UTF-8')
].each do |value|
- output = ''.force_encoding('BINARY')
+ output = String.new('', encoding: 'BINARY')
encoder = Avro::IO::BinaryEncoder.new(StringIO.new(output))
datum_writer = Avro::IO::DatumWriter.new(Avro::Schema.parse('"string"'))
datum_writer.write(value, encoder)
- assert_equal "\x04\xc3\x83".force_encoding('BINARY'), output
+ assert_equal String.new("\x04\xc3\x83", encoding: 'BINARY'), output
end
end
def test_bytes_encoding
[
- "\xC3\x83".force_encoding('BINARY'),
- "\xC3\x83".force_encoding('ISO-8859-1'),
- "\xC3\x83".force_encoding('UTF-8')
+ String.new("\xC3\x83", encoding: 'BINARY'),
+ String.new("\xC3\x83", encoding: 'ISO-8859-1'),
+ String.new("\xC3\x83", encoding: 'UTF-8')
].each do |value|
- output = ''.force_encoding('BINARY')
+ output = String.new('', encoding: 'BINARY')
encoder = Avro::IO::BinaryEncoder.new(StringIO.new(output))
datum_writer = Avro::IO::DatumWriter.new(Avro::Schema.parse('"bytes"'))
datum_writer.write(value, encoder)
- assert_equal "\x04\xc3\x83".force_encoding('BINARY'), output
+ assert_equal String.new("\x04\xc3\x83", encoding: 'BINARY'), output
end
end
def test_fixed_encoding
[
- "\xC3\x83".force_encoding('BINARY'),
- "\xC3\x83".force_encoding('ISO-8859-1'),
- "\xC3\x83".force_encoding('UTF-8')
+ String.new("\xC3\x83", encoding: 'BINARY'),
+ String.new("\xC3\x83", encoding: 'ISO-8859-1'),
+ String.new("\xC3\x83", encoding: 'UTF-8')
].each do |value|
- output = ''.force_encoding('BINARY')
+ output = String.new('', encoding: 'BINARY')
encoder = Avro::IO::BinaryEncoder.new(StringIO.new(output))
schema = '{"type": "fixed", "name": "TwoBytes", "size": 2}'
datum_writer = Avro::IO::DatumWriter.new(Avro::Schema.parse(schema))
datum_writer.write(value, encoder)
- assert_equal "\xc3\x83".force_encoding('BINARY'), output
+ assert_equal String.new("\xC3\x83", encoding: 'BINARY'), output
end
end
def test_skip_long
for value_to_skip, _hex_encoding in BINARY_INT_ENCODINGS
@@ -487,10 +488,24 @@
writer, * = write_datum({ 'field1' => 1 }, writers_schema)
datum_read = read_datum(writer, writers_schema, readers_schema)
assert_equal(datum_read, { 'field2' => 1 })
end
+ def test_big_decimal_datum_for_float
+ writers_schema = Avro::Schema.parse('"float"')
+ writer, * = write_datum(BigDecimal('1.2'), writers_schema)
+ datum_read = read_datum(writer, writers_schema)
+ assert_in_delta(1.2, datum_read)
+ end
+
+ def test_big_decimal_datum_for_double
+ writers_schema = Avro::Schema.parse('"double"')
+ writer, * = write_datum(BigDecimal("1.2"), writers_schema)
+ datum_read = read_datum(writer, writers_schema)
+ assert_in_delta(1.2, datum_read)
+ end
+
def test_snappy_backward_compat
# a snappy-compressed block payload without the checksum
# this has no back-references, just one literal so the last 9
# bytes are the uncompressed payload.
old_snappy_bytes = "\x09\x20\x02\x06\x02\x0a\x67\x72\x65\x65\x6e"
@@ -565,10 +580,10 @@
def checkser(schm, randomdata)
datum = randomdata.next
assert validate(schm, datum), 'datum is not valid for schema'
w = Avro::IO::DatumWriter.new(schm)
- writer = StringIO.new "", "w"
+ writer = StringIO.new(+"", "w")
w.write(datum, Avro::IO::BinaryEncoder.new(writer))
r = datum_reader(schm)
reader = StringIO.new(writer.string)
ob = r.read(Avro::IO::BinaryDecoder.new(reader))
assert_equal(datum, ob) # FIXME check on assertdata conditional