class TestCase::IO::File {
use IO::File;
use StringList;
use Fn;
use Array;
static method flush : int ($file : string) {
my $io_file = IO::File->new($file, ">");
$io_file->print("He");
$io_file->flush;
$io_file->print("llo");
$io_file->flush;
return 1;
}
static method close : int ($file : string) {
my $io_file = IO::File->new($file, ">");
$io_file->print("He");
$io_file->print("llo");
$io_file->close;
return 1;
}
static method autoflush : int ($file : string) {
my $io_file = IO::File->new($file, ">");
unless ($io_file) {
return 0;
}
my $io_file_default = $io_file->autoflush;
unless ($io_file_default == 0) {
return 0;
}
$io_file->set_autoflush(1);
unless ($io_file->autoflush == 1) {
return 0;
}
$io_file->print("Hello");
return 1;
}
static method print : int ($file : string) {
my $io_file = IO::File->new($file, ">");
unless ($io_file) {
return 0;
}
$io_file->print("Hello");
return 1;
}
static method write : int ($file : string) {
my $io_file = IO::File->new($file, ">");
unless ($io_file) {
return 0;
}
$io_file->write("Hello");
return 1;
}
static method print_newline : int ($file : string) {
my $io_file = IO::File->new($file, ">");
unless ($io_file) {
return 0;
}
$io_file->print("\n");
return 1;
}
static method print_long_lines : int ($file : string) {
my $io_file = IO::File->new($file, ">");
unless ($io_file) {
return 0;
}
$io_file->print("AAAAAAAAAAAAA\nBBBBBBBBBBBBBBBBBBB\nCCCCCCCCCCCCCCCCCCCCCCCCCCC\nDDDDDDDDDDDDDDDDDDDDDDDDD\nEEEEEEEEEEEEEEEEEEEEEE\nFFFFFFFFFFFFFF\n");
return 1;
}
static method open : int ($file : string) {
{
my $io_file = IO::File->new($file, "<");
unless ($io_file) {
return 0;
}
}
{
eval {
IO::File->new($file, "ppp");
};
unless ($@) {
return 0;
}
$@ = undef;
}
return 1;
}
static method read : int ($file : string) {
{
my $io_file = IO::File->new($file, "<");
unless ($io_file) {
die "Can't open file $file";
}
my $buffer = (mutable string)new_string_len 5;
{
my $read_length = $io_file->read($buffer);
unless ((string)$buffer eq "abcd\n") {
return 0;
}
unless ($read_length == 5) {
return 0;
}
}
{
my $read_length = $io_file->read($buffer, length $buffer);
unless ((string)$buffer eq "fghi\n") {
return 0;
}
unless ($read_length == 5) {
return 0;
}
}
{
my $read_length = $io_file->read($buffer, length $buffer);
unless (Fn->substr($buffer, 0, 4) eq "klm\n") {
return 0;
}
unless ($read_length == 4) {
return 0;
}
}
}
return 1;
}
static method getline : int ($file : string) {
my $io_file = IO::File->new($file, "<");
unless ($io_file) {
die "Can't open file $file";
}
{
my $line = $io_file->getline;
unless ($line eq "abcd\n") {
return 0;
}
}
{
my $line = $io_file->getline;
unless ($line eq "fghi\n") {
return 0;
}
}
{
my $line = $io_file->getline;
unless ($line eq "klm\n") {
return 0;
}
}
{
my $line = $io_file->getline;
unless ($line == undef) {
return 0;
}
}
return 1;
}
static method getline_while : int ($file : string) {
my $io_file = IO::File->new($file, "<");
unless ($io_file) {
die "Can't open file $file";
}
my $lstrings = StringList->new((string[])undef);
while (my $line = $io_file->getline) {
$lstrings->push($line);
}
my $strings = $lstrings->to_array;
unless (Array->equals_string($strings, ["abcd\n", "fghi\n", "klm\n"])) {
return 0;
}
return 1;
}
static method getline_eof : int ($file : string) {
my $io_file = IO::File->new($file, "<");
unless ($io_file) {
die "Can't open file $file";
}
{
my $line = $io_file->getline;
unless ($line eq "abcd\n") {
return 0;
}
}
{
my $line = $io_file->getline;
unless ($line eq "fghi\n") {
return 0;
}
}
{
my $line = $io_file->getline;
unless ($line eq "\n") {
return 0;
}
}
{
my $line = $io_file->getline;
unless ($line eq "klm") {
return 0;
}
}
{
my $line = $io_file->getline;
unless ($line == undef) {
return 0;
}
}
return 1;
}
static method getline_long_line : int ($file : string) {
my $io_file = IO::File->new($file, "<");
unless ($io_file) {
die "Can't open file $file";
}
{
my $line = $io_file->getline;
unless ($line eq "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n") {
return 0;
}
}
{
my $line = $io_file->getline;
unless ($line eq "fghi\n") {
return 0;
}
}
{
my $line = $io_file->getline;
unless ($line eq "klm\n") {
return 0;
}
}
{
my $line = $io_file->getline;
unless ($line == undef) {
return 0;
}
}
return 1;
}
static method getline_chompr : int ($file : string) {
my $io_file = IO::File->new($file, "<");
unless ($io_file) {
die "Can't open file $file";
}
{
my $line = $io_file->getline;
$line = Fn->chompr($line);
unless ($line eq "abcd") {
return 0;
}
}
{
my $line = $io_file->getline;
$line = Fn->chompr($line);
unless ($line eq "fghi") {
return 0;
}
}
{
my $line = $io_file->getline;
$line = Fn->chompr($line);
unless ($line eq "klm") {
return 0;
}
}
{
my $line = $io_file->getline;
unless ($line == undef) {
return 0;
}
}
return 1;
}
static method getline_chompr_while : int ($file : string) {
my $io_file = IO::File->new($file, "<");
unless ($io_file) {
die "Can't open file $file";
}
my $lstrings = StringList->new((string[])undef);
while (my $line = $io_file->getline) {
$line = Fn->chompr($line);
$lstrings->push($line);
}
my $strings = $lstrings->to_array;
unless (Array->equals_string($strings, ["abcd", "fghi", "klm"])) {
return 0;
}
return 1;
}
static method getline_chompr_eof : int ($file : string) {
my $io_file = IO::File->new($file, "<");
unless ($io_file) {
die "Can't open file $file";
}
{
my $line = $io_file->getline;
$line = Fn->chompr($line);
unless ($line eq "abcd") {
return 0;
}
}
{
my $line = $io_file->getline;
$line = Fn->chompr($line);
unless ($line eq "fghi") {
return 0;
}
}
{
my $line = $io_file->getline;
$line = Fn->chompr($line);
unless ($line eq "") {
return 0;
}
}
{
my $line = $io_file->getline;
$line = Fn->chompr($line);
unless ($line eq "klm") {
return 0;
}
}
{
my $line = $io_file->getline;
unless ($line == undef) {
return 0;
}
}
return 1;
}
static method getline_chompr_long_line : int ($file : string) {
my $io_file = IO::File->new($file, "<");
unless ($io_file) {
die "Can't open file $file";
}
{
my $line = $io_file->getline;
$line = Fn->chompr($line);
unless ($line eq "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") {
return 0;
}
}
{
my $line = $io_file->getline;
$line = Fn->chompr($line);
unless ($line eq "fghi") {
return 0;
}
}
{
my $line = $io_file->getline;
$line = Fn->chompr($line);
unless ($line eq "klm") {
return 0;
}
}
{
my $line = $io_file->getline;
unless ($line == undef) {
return 0;
}
}
return 1;
}
static method getlines : int ($file : string) {
{
my $io_file = IO::File->new($file, "<");
my $string = $io_file->getlines;
unless ($string eq "abcd\nfghi\nklm\n") {
return 0;
}
}
return 1;
}
static method read_and_seek : int ($file : string) {
{
my $io_file = IO::File->new($file, "<");
unless ($io_file) {
die "Can't open file $file";
}
unless ($io_file->tell == 0) {
return 0;
}
$io_file->seek(1, Sys::IO::Constant->SEEK_SET);
unless ($io_file->tell == 1) {
return 0;
}
}
return 1;
}
}