blob: b4dafb9ce12985cf2043519b8349fad23aba77a4 [file] [log] [blame]
<?php
/**
* 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
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
require_once('test_helper.php');
class StringIOTest extends PHPUnit\Framework\TestCase
{
public function test_write()
{
$strio = new AvroStringIO();
$this->assertEquals(0, $strio->tell());
$str = 'foo';
$strlen = strlen($str);
$this->assertEquals($strlen, $strio->write($str));
$this->assertEquals($strlen, $strio->tell());
}
public function test_seek()
{
$strio = new AvroStringIO('abcdefghijklmnopqrstuvwxyz');
$strio->seek(4, AvroIO::SEEK_SET);
$this->assertEquals('efgh', $strio->read(4));
$strio->seek(4, AvroIO::SEEK_CUR);
$this->assertEquals('mnop', $strio->read(4));
$strio->seek(-4, AvroIO::SEEK_END);
$this->assertEquals('wxyz', $strio->read(4));
}
public function test_tell()
{
$strio = new AvroStringIO('foobar');
$this->assertEquals(0, $strio->tell());
$strlen = 3;
$strio->read($strlen);
$this->assertEquals($strlen, $strio->tell());
}
public function test_read()
{
$str = 'foobar';
$strio = new AvroStringIO($str);
$strlen = 3;
$this->assertEquals(substr($str, 0, $strlen), $strio->read($strlen));
}
public function test_string_rep()
{
$writers_schema_json = '"null"';
$writers_schema = AvroSchema::parse($writers_schema_json);
$datum_writer = new AvroIODatumWriter($writers_schema);
$strio = new AvroStringIO();
$this->assertEquals('', $strio->string());
$dw = new AvroDataIOWriter($strio, $datum_writer, $writers_schema_json);
$dw->close();
$this->assertEquals(57, strlen($strio->string()),
AvroDebug::ascii_string($strio->string()));
$read_strio = new AvroStringIO($strio->string());
$datum_reader = new AvroIODatumReader();
$dr = new AvroDataIOReader($read_strio, $datum_reader);
$read_data = $dr->data();
$datum_count = count($read_data);
$this->assertEquals(0, $datum_count);
}
}