The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use Puppet::Tidy;
use Test::More tests=>4;

my (@output, $source);
my @should_be_output = << 'EOF';
  Exec['reboot']
EOF

###
# Double to single quotes.
###
$source = << 'EOF';
  Exec["reboot"]
EOF

Puppet::Tidy::puppettidy(source => $source, destination => \@output);
is_deeply(@output, @should_be_output, "double to single quotes");

###
# Double quotes to single quotes.
###
@should_be_output = << 'EOF';
  Exec[$reboot]
EOF

$source = << 'EOF';
  Exec['$reboot']
EOF

Puppet::Tidy::puppettidy(source => $source, destination => \@output);
is_deeply(@output, @should_be_output, "single quotes to double quotes");

###
# Standard resource type test.
###
@should_be_output = << 'EOF';
  Exec[$reboot]
EOF

$source = << 'EOF';
  Exec["$reboot"]
EOF

Puppet::Tidy::puppettidy(source => $source, destination => \@output);
is_deeply(@output, @should_be_output, "Handle standard resource types");

###
# Non-standard resource type test.
###
@should_be_output = << 'EOF';
  Host['localhost']
EOF

$source = << 'EOF';
  Host["localhost"]
EOF

Puppet::Tidy::puppettidy(source => $source, destination => \@output);
is_deeply(@output, @should_be_output, "Handle non-standard resource types");