]> git.donarmstrong.com Git - perltidy.git/blobdiff - t/test-eol.t
New upstream version 20190601
[perltidy.git] / t / test-eol.t
diff --git a/t/test-eol.t b/t/test-eol.t
new file mode 100644 (file)
index 0000000..65188cc
--- /dev/null
@@ -0,0 +1,131 @@
+use strict;
+use File::Temp;
+use Test;
+use Carp;
+BEGIN {plan tests => 4}
+use Perl::Tidy;
+
+
+#----------------------------------------------------------------------
+## test string->string
+#----------------------------------------------------------------------
+my $source_template = <<'EOM';
+%height=("letter",27.9, "legal",35.6, "arche",121.9, "archd",91.4, "archc",61,
+ "archb",45.7, "archa",30.5, "flsa",33, "flse",33, "halfletter",21.6,
+ "11x17",43.2, "ledger",27.9);
+%width=("letter",21.6, "legal",21.6, "arche",91.4, "archd",61, "archc",45.7,
+ "archb",30.5, "archa",22.9, "flsa",21.6, "flse",21.6, "halfletter",14,
+ "11x17",27.9, "ledger",43.2);
+EOM
+
+my $perltidyrc;
+
+my $expected_output_template=<<'EOM';
+%height = (
+           "letter",     27.9, "legal", 35.6, "arche",  121.9,
+           "archd",      91.4, "archc", 61,   "archb",  45.7,
+           "archa",      30.5, "flsa",  33,   "flse",   33,
+           "halfletter", 21.6, "11x17", 43.2, "ledger", 27.9
+          );
+%width = (
+          "letter",     21.6, "legal", 21.6, "arche",  91.4,
+          "archd",      61,   "archc", 45.7, "archb",  30.5,
+          "archa",      22.9, "flsa",  21.6, "flse",   21.6,
+          "halfletter", 14,   "11x17", 27.9, "ledger", 43.2
+         );
+EOM
+
+my $source;
+my $output;
+my $expected_output;
+
+my $CR = chr(015);
+my $LF = chr(012);
+
+$perltidyrc = <<'EOM';
+-gnu
+--output-line-ending="unix"     # use *nix LF EOLs
+EOM
+
+$source = $source_template;
+$source =~ s/\n/$CR$LF/gmsx;
+$expected_output = $expected_output_template;
+$expected_output =~ s/\n/$LF/gmsx;
+
+# my ($source_fh, $source_filename) = File::Temp::tempfile(); close $source_filename;
+my ($output_fh, $output_filename) = File::Temp::tempfile(); close $output_filename;
+
+# print STDERR "# source_filename = ", $source_filename, "\n";
+# print STDERR "# output_filename = ", $output_filename, "\n";
+
+# open $source_fh, ">", $source_filename;
+# binmode $source_fh, ":raw";
+# print $source_fh $source;
+# close $source_fh;
+
+# in-memory output (non-UTF8)
+
+Perl::Tidy::perltidy(
+    source      => \$source,
+    destination => \$output,
+    perltidyrc  => \$perltidyrc,
+    argv        => '',
+);
+
+ok($output, $expected_output, "in-memory EOLs (non-UTF8)");
+
+# file output (non-UTF8)
+Perl::Tidy::perltidy(
+    source      => \$source,
+    destination => $output_filename,
+    perltidyrc  => \$perltidyrc,
+    argv        => '',
+);
+
+{# slurp entire file
+    local $/ = undef;
+    open $output_fh, "<", $output_filename;
+    binmode $output_fh, ":raw";
+    $output = <$output_fh>;
+}
+
+ok($output, $expected_output, "output file EOLs (non-UTF8)");
+
+$perltidyrc = <<'EOM';
+-gnu
+--character-encoding="utf8"     # treat files as UTF-8 (decode and encode)
+--output-line-ending="unix"     # use *nix LF EOLs
+EOM
+
+# in-memory (UTF8)
+$source = $source_template;
+$source =~ s/\n/$CR$LF/gmsx;
+$expected_output = $expected_output_template;
+$expected_output =~ s/\n/$LF/gmsx;
+
+Perl::Tidy::perltidy(
+    source      => \$source,
+    destination => \$output,
+    perltidyrc  => \$perltidyrc,
+    argv        => '',
+);
+
+ok($output, $expected_output, "in-memory EOLs (UTF8)");
+
+# file output (UTF8)
+
+Perl::Tidy::perltidy(
+    source      => \$source,
+    destination => $output_filename,
+    perltidyrc  => \$perltidyrc,
+    argv        => '',
+);
+
+{# slurp entire file
+    local $/ = undef;
+    open $output_fh, "<", $output_filename;
+    binmode $output_fh, ":raw";
+    $output = <$output_fh>;
+}
+
+ok($output, $expected_output, "output file EOLs (UTF8)");