The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#! perl

BEGIN {
	use English qw(-no_match_vars);
	use warnings;
	use strict;
	use Test::More;
	$OUTPUT_AUTOFLUSH = 1;
}

plan tests => 5;

require WiX3::Traceable;
WiX3::Traceable->new(tracelevel => 0, testing => 1);

require WiX3::XML::RegistryKey;

my $rk_1 = WiX3::XML::RegistryKey->new(id => 'Test', root => 'HKCU', key => 'SOFTWARE', action => 'none');
ok( $rk_1, 'RegistryKey->new returns true' );

my $test2_output = $rk_1->as_string();
my $test2_string = "<RegistryKey Id='RK_Test' Root='HKCU' Key='SOFTWARE' Action='none'>\n\n</RegistryKey>\n";

is( $test2_output, $test2_string, 'RegistryKey stringifies correctly.' );

require WiX3::XML::RegistryValue;

my $rv_1 = WiX3::XML::RegistryValue->new(id => 'Test', key => 'TestKey', action => 'write', type => 'integer', value => 1,);
ok( $rv_1, 'RegistryValue->new returns true' );

my $test4_output = $rv_1->as_string();
my $test4_string = "<RegistryValue Id='RV_Test' Key='TestKey' Action='write' Type='integer' Value='1' />\n";

is( $test4_output, $test4_string, 'RegistryValue stringifies correctly.' );

$rk_1->add_child_tag($rv_1);

my $test5_output = $rk_1->as_string();
is( $test5_output, <<'TEST5_STRING', 'RegistryKey stringifies correctly when it has a child.' );
<RegistryKey Id='RK_Test' Root='HKCU' Key='SOFTWARE' Action='none'>
    <RegistryValue Id='RV_Test' Key='TestKey' Action='write' Type='integer' Value='1' />
</RegistryKey>
TEST5_STRING