Chemistry-Harmonia

 view release on metacpan or  search on metacpan

t/02-good_formula.t  view on Meta::CPAN

use strict;
use warnings;

use Test::More 'no_plan';

BEGIN { use_ok('Chemistry::Harmonia') };
use Chemistry::Harmonia qw(:all);

##### Test good_formula() #####

my $dt = &datest;

for my $abracadabra ( keys %$dt ){
    is_deeply( [ sort @{ good_formula( $abracadabra ) } ],
		[ sort @{ $dt->{$abracadabra} }], "good formula test '$abracadabra'" );
}

$dt = { 'h20' => [ 'H20', 'H2O' ],
	'l1202' => ['Li202', 'Li2O2'],
	'a120' => [ 'Al20', 'Al2O' ],
	'a1203' => [ 'Al203', 'Al2O3' ],
	'Si204' => [ 'Si204', 'SI204', 'Si2O4', 'SI2O4' ],
	};

for my $abracadabra ( keys %$dt ){
    is_deeply( [ sort @{ good_formula( $abracadabra, { 'zero2oxi' => 1 } ) } ],
		[ sort @{ $dt->{$abracadabra} }], "good formula option 'zero2oxi'" );
}

exit;

sub datest{
    return {
	'H04' => [ 'Ho4', 'HO4' ],
	'H3P04' => [ 'H3Po4', 'H3PO4' ],
	'H2C03' => [ 'H2Co3', 'H2CO3' ],
	'HN03' => [ 'HNo3', 'HNO3' ],
	'H2SO4.' => [ 'H2SO4' ],
	'NACL' => [ 'NaCl' ],
	'ALCL3' => [ 'AlCl3' ],
	'Si204' => [ 'Si204', 'SI204' ],
	'o$' => [ 'Os', 'OS' ],
	'qsQsQ' =>  [ 'SOsO', 'SOSO' ],
	'aqhqmqrqsq' => [ 'AgHgMgRgSg' ],
	'a1203' => [ 'Al203' ],
	'1' => [ 'I' ],
	't|' => [ 'Tl' ],
	'l1' => [ 'Li' ],
	'b!' => [ 'BI', 'Bi' ],
	'!2' => [ 'I2' ],
	'|2' => [ 'I2' ],
	'12' => [ 'I2' ],
	'102' => [ 'IO2' ],
	'a1' => [ 'Al' ],
	'c1' => [ 'Cl' ],
	'Co' => [ 'Co' ],
	'Cc' => [ 'CC' ],
	'co' => [ 'CO','Co' ],
	'CO2' => [ 'CO2' ],
	'Co2' => [ 'Co2', 'CO2' ],
	'[{(na)}]' => [ 'Na' ],
	'0.3al2o3*1.5sio2' => [ '{Al2O3}{SIO2}5', '{Al2O3}{SiO2}5' ],
	'00O02' => [ 'OOOO2' ],
	'h20' => [ 'H20' ],
	'{[[([[CaO]])*((SiO2))]]}' => [ '{([[CaO]])}{((SiO2))}' ],
	'Irj(){}[]' => [ 'IrI' ],
	'..,,..mg0,,,,.*si0...s..,..' => [ '{MgO}{SIOS}', '{MgO}{SiOS}' ],
	'al2(so4)3*10h20' => [ '{Al2(SO4)3}{H20}10' ],
	'{[cr(c0(nh2)2)6]4[cr(cn)6{df}]3}' => [
		'[Cr(CO(NH2)2)6]4[Cr(CN)6{DF}]3',
		'[Cr(Co(NH2)2)6]4[Cr(CN)6{DF}]3',
		'[Cr(CO(NH2)2)6]4[Cr(Cn)6{DF}]3',
		'[Cr(Co(NH2)2)6]4[Cr(Cn)6{DF}]3'
		],
	'ggg[crr(cog(nhr2)2)6]4[qcr(rcn)5j]3rrrrr' => [
		'[Cr(CO(NH2)2)6]4[Cr(CN)5I]3',
		'[Cr(Co(NH2)2)6]4[Cr(CN)5I]3'
		],
'gggrrrgggknalllisrmgfeusoseurrrlllrrr' => [
		'RgKNAlLiSrMgFEuSOSEuLr',
		'RgKNAlLiSrMgFEuSOSeULr',
		'RgKNAlLiSrMgFEuSOsEuLr',
		'RgKNAlLiSrMgFeUSOSEuLr',
		'RgKNAlLiSrMgFeUSOSeULr',
		'RgKNAlLiSrMgFeUSOsEuLr'
		],
'genAal(so4)2cO2j(FfeueuCCCCoco)' => [



( run in 1.156 second using v1.01-cache-2.11-cpan-8dfa8b56332 )