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