wavelength structured answer formatting and tests
parent
b37b525396
commit
602b89b6c5
|
@ -12,6 +12,13 @@ use constant MULTIPLIER => {
|
|||
ghz => 10**9,
|
||||
thz => 10**12
|
||||
};
|
||||
use constant FORMAT_UNITS => {
|
||||
hz => 'Hz',
|
||||
khz => 'kHz',
|
||||
mhz => 'MHz',
|
||||
ghz => 'GHz',
|
||||
thz => 'THz'
|
||||
};
|
||||
|
||||
zci answer_type => "wavelength";
|
||||
zci is_cached => 1;
|
||||
|
@ -32,7 +39,7 @@ triggers any => "λ", "wavelength", "lambda";
|
|||
|
||||
# Handle statement
|
||||
handle remainder => sub {
|
||||
my ($freq,$units) = m/([\d\.]+)\s*((k|m|g|t)?hz)/i;
|
||||
my ($freq,$units) = m/([\d\.]+)\s*((k|M|G|T)?hz)/i;
|
||||
return unless $freq and $units;
|
||||
|
||||
my $mul = MULTIPLIER->{lc($units)};
|
||||
|
@ -52,7 +59,14 @@ handle remainder => sub {
|
|||
}
|
||||
}
|
||||
|
||||
return "$freq $units λ = $output_value $output_units";
|
||||
my $output_text = "λ = $output_value $output_units";
|
||||
|
||||
return $output_text,
|
||||
structured_answer => {
|
||||
input => [$freq, FORMAT_UNITS->{lc($units)}],
|
||||
operation => "Wavelength",
|
||||
result => $output_text,
|
||||
};
|
||||
};
|
||||
|
||||
1;
|
||||
|
|
|
@ -9,15 +9,33 @@ use utf8;
|
|||
zci answer_type => "wavelength";
|
||||
zci is_cached => 1;
|
||||
|
||||
#input operation result
|
||||
ddg_goodie_test(
|
||||
[qw( DDG::Goodie::Wavelength )],
|
||||
'1Hz wavelength' => test_zci("1 Hz λ = 299792458 Meters"),
|
||||
'lambda 0.001kHz' => test_zci("0.001 kHz λ = 299792458 Meters"),
|
||||
"λ 2400MHz" => test_zci("2400 MHz λ = 12.4913524166667 Centimeters"),
|
||||
"λ 2.4GHz" => test_zci("2.4 GHz λ = 12.4913524166667 Centimeters"),
|
||||
'144.39 MHz wavelength' => test_zci('144.39 MHz λ = 2.0762688413325 Meters'),
|
||||
'lambda 1500kHz' => test_zci('1500 kHz λ = 199.861638666667 Meters'),
|
||||
'lambda lambda lambda' => undef,
|
||||
'1Hz wavelength' => test_zci(mk_test(1,299792458,'Hz')),
|
||||
'lambda 0.001kHz' => test_zci(mk_test(0.001,299792458,'kHz')),
|
||||
"λ 2400MHz" => test_zci(mk_test(2400,12.4913524166667,'MHz','Centimeters')),
|
||||
"λ 2.4GHz" => test_zci(mk_test(2.4,12.4913524166667,'GHz','Centimeters')),
|
||||
'144.39 MHz wavelength' => test_zci(mk_test(144.39,2.0762688413325)),
|
||||
'lambda 1500kHz' => test_zci(mk_test(1500,199.861638666667,'kHz')),
|
||||
'lambda lambda lambda' => undef,
|
||||
);
|
||||
|
||||
done_testing;
|
||||
|
||||
sub mk_test {
|
||||
my ($freq_value,$wave_value,$freq_units,$wave_units) = @_;
|
||||
|
||||
$freq_units ||= 'MHz';
|
||||
$wave_units ||= 'Meters';
|
||||
|
||||
my $expect = "λ = $wave_value $wave_units";
|
||||
return (
|
||||
$expect,
|
||||
structured_answer => {
|
||||
input => [$freq_value,$freq_units],
|
||||
operation => 'Wavelength',
|
||||
result => $expect,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue