#!/usr/bin/env perl
#
# Test writing of mbox folders.
#
use strict;
use warnings;
use lib qw(. .. tests);
use Tools;
use Test::More tests => 5;
use File::Compare;
use File::Copy;
use Mail::Box::Mbox;
#
# We will work with a copy of the original to avoid that we write
# over our test file.
#
unlink $cpy;
copy $src, $cpy
or die "Cannot create test folder: $!\n";
my $folder = new Mail::Box::Mbox
( folder => "=$cpyfn"
, folderdir => 'folders'
, lock_type => 'NONE'
, extract => 'ALWAYS'
, access => 'rw'
);
die "Couldn't read $cpy: $!\n"
unless $folder;
#
# None of the messages should be modified.
#
my $modified = 0;
$modified ||= $_->modified foreach $folder->messages;
ok(!$modified);
#
# Write unmodified folder to different file.
# Because file-to-file copy of unmodified messages, the result must be
# the same.
#
$folder->modified(1); # force write
ok($folder->write(policy => 'REPLACE'));
# Try to read it back
my $copy = new Mail::Box::Mbox
( folder => "=$cpyfn"
, folderdir => 'folders'
, lock_type => 'NONE'
, extract => 'ALWAYS'
);
ok($copy);
cmp_ok($folder->messages, "==", $copy->messages);
# Check also if the subjects are the same.
my @folder_subjects = sort map {$_->head->get('subject')||''} $folder->messages;
my @copy_subjects = sort map {$_->head->get('subject')||''} $copy->messages;
while(@folder_subjects)
{ last unless shift(@folder_subjects) eq shift(@copy_subjects);
}
ok(!@folder_subjects);