Skip to content

Instantly share code, notes, and snippets.

@yongbin
Created September 11, 2011 18:55
Show Gist options
  • Select an option

  • Save yongbin/1209961 to your computer and use it in GitHub Desktop.

Select an option

Save yongbin/1209961 to your computer and use it in GitHub Desktop.
@am0c++
#/usr/bin/env perl
use 5.010;
use utf8;
use Encode qw/encode_utf8 decode_utf8/;
use Test::More;
use Test::Differences;
use Mandatory qw/elem list/;
binmode STDOUT, ':encoding(utf-8)';
my $list = list(
elem('ADM_DAT'),
elem(
'ADM_STA' => [
list(
elem('ADMVIAER'),
elem('ER_DATE'),
elem('ER_ARRTH'),
elem('ER_ARRTM'),
elem('FIRSTHOP'),
elem('TX_PREVI'),
elem(
'ER_MED' => [
list( elem('ASPDOS'), elem('ASPMDOS'), ),
list( elem('CLODOS'), elem('CLOMDOS'), ),
list(
elem('THROMDAT'),
elem('THROMTH'),
elem('THROMTM'),
elem(
'THROMDRU' => [
list( elem('UK_UNIT') ),
list( elem('TPA_UNIT') ),
list( elem('THROMDOT') ),
]
),
elem('THROMDO'),
),
]
),
),
]
),
elem('CC'),
elem(
'CP_TYPCP' => [
list( elem('SA_1234') ),
list( elem('UA_123'), elem('UA_ABC'), elem('UA_24HR'), ),
list(
elem('NSTONDAT'), elem('NSTONTH'),
elem('NSTONTM'), elem('NSE_TYPE'),
elem('NST_24HR'),
),
list(
elem('STONDAT'), elem('STONTH'),
elem('STONTM'), elem('SE_TYPE'),
elem('ST_24HR'),
),
]
),
elem('TY_ATYP'),
elem(
'ECGTYPE' => [
list(),
list(),
list(),
list(),
list(),
list(),
list(),
list(),
list(),
list(),
list(
elem('E_RHOTSP')
),
]
),
elem(
'E_ABN' => [
list(
elem(
'ECG_ABNO' => [
list( elem('E_STEDUR'), elem('ST_ELEV'), ),
list( elem('E_STDDUR'), elem('ST_DEP'), ),
list(),
list(),
list(),
list(),
list( elem('E_ABOTSP'), ),
]
),
),
]
),
elem( 'CHF_STA' => [ list( elem('CHF_NYHA'), elem('CHF_KILL'), ), ] ),
elem('MENTAL'),
elem('HEIGHT'),
elem('WEIGHT'),
elem('BMI'),
elem('BSA'),
elem('HR'),
elem('BP_SYS'),
elem('BP_DIA'),
elem('ADMCOMT'),
);
{
my $title = encode_utf8 q{func(ADM_DAT => 1)};
my @expected = (
qw/
ADM_DAT
ADM_STA
CC
CP_TYPCP
TY_ATYP
ECGTYPE
E_ABN
CHF_STA
MENTAL
HEIGHT
WEIGHT
BMI
BSA
HR
BP_SYS
BP_DIA
ADMCOMT
/
);
my @result = $list->func( ADM_DAT => 1)->as_list;
eq_or_diff \@result, \@expected, $title;
}
{
my $title = encode_utf8 q{func(ADM_STA => 1)};
my @expected = (
qw/
ADM_DAT
ADM_STA
ADMVIAER
ER_DATE
ER_ARRTH
ER_ARRTM
FIRSTHOP
TX_PREVI
ER_MED
CC
CP_TYPCP
TY_ATYP
ECGTYPE
E_ABN
CHF_STA
MENTAL
HEIGHT
WEIGHT
BMI
BSA
HR
BP_SYS
BP_DIA
ADMCOMT
/
);
my @result = $list->func( ADM_STA => 1)->as_list;
eq_or_diff \@result, \@expected, $title;
}
{
my $title = encode_utf8 q{func(ADM_STA => 1, ER_MED => 1)};
my @expected = (
qw/
ADM_DAT
ADM_STA
ADMVIAER
ER_DATE
ER_ARRTH
ER_ARRTM
FIRSTHOP
TX_PREVI
ER_MED
ASPDOS
ASPMDOS
CC
CP_TYPCP
TY_ATYP
ECGTYPE
E_ABN
CHF_STA
MENTAL
HEIGHT
WEIGHT
BMI
BSA
HR
BP_SYS
BP_DIA
ADMCOMT
/
);
my @result = $list->func( ADM_STA => 1, ER_MED => 1 )->as_list;
eq_or_diff \@result, \@expected, $title;
}
{
my $title = encode_utf8 q{func(ADM_STA => 2, ER_MED => 1)};
my @expected = (
qw/
ADM_DAT
ADM_STA
CC
CP_TYPCP
TY_ATYP
ECGTYPE
E_ABN
CHF_STA
MENTAL
HEIGHT
WEIGHT
BMI
BSA
HR
BP_SYS
BP_DIA
ADMCOMT
/
);
my @result = $list->func( ADM_STA => 2, ER_MED => 1 )->as_list;
eq_or_diff \@result, \@expected, $title;
}
{
my $title = encode_utf8 q{func(ADM_STA => 2, ER_MED => 1)};
my @expected = (
qw/
ADM_DAT
ADM_STA
CC
CP_TYPCP
TY_ATYP
ECGTYPE
E_ABN
CHF_STA
MENTAL
HEIGHT
WEIGHT
BMI
BSA
HR
BP_SYS
BP_DIA
ADMCOMT
/
);
my @result = $list->func( ADM_STA => 2, ER_MED => 1 )->as_list;
eq_or_diff \@result, \@expected, $title;
}
{
my $title = encode_utf8 q{func(ADM_STA => 1, ER_MED => 2)};
my @expected = (
qw/
ADM_DAT
ADM_STA
ADMVIAER
ER_DATE
ER_ARRTH
ER_ARRTM
FIRSTHOP
TX_PREVI
ER_MED
CLODOS
CLOMDOS
CC
CP_TYPCP
TY_ATYP
ECGTYPE
E_ABN
CHF_STA
MENTAL
HEIGHT
WEIGHT
BMI
BSA
HR
BP_SYS
BP_DIA
ADMCOMT
/
);
my @result = $list->func( ADM_STA => 1, ER_MED => 2 )->as_list;
eq_or_diff \@result, \@expected, $title;
}
{
my $title = encode_utf8 q{func(ADM_STA => 2)};
my @expected = (
qw/
ADM_DAT
ADM_STA
CC
CP_TYPCP
TY_ATYP
ECGTYPE
E_ABN
CHF_STA
MENTAL
HEIGHT
WEIGHT
BMI
BSA
HR
BP_SYS
BP_DIA
ADMCOMT
/
);
my @result = $list->func( ADM_STA => 2 )->as_list;
eq_or_diff \@result, \@expected, $title;
}
{
my $title = encode_utf8 q{func(ADM_STA => 1, ER_MED => 3, THROMDRU => 1)};
my @expected = (
qw/
ADM_DAT
ADM_STA
ADMVIAER
ER_DATE
ER_ARRTH
ER_ARRTM
FIRSTHOP
TX_PREVI
ER_MED
THROMDAT
THROMTH
THROMTM
THROMDRU
UK_UNIT
THROMDO
CC
CP_TYPCP
TY_ATYP
ECGTYPE
E_ABN
CHF_STA
MENTAL
HEIGHT
WEIGHT
BMI
BSA
HR
BP_SYS
BP_DIA
ADMCOMT
/
);
my @result = $list->func( ADM_STA => 1, ER_MED => 3, THROMDRU => 1 )->as_list;
eq_or_diff \@result, \@expected, $title;
}
{
my $title = encode_utf8 q{func(ADM_STA => 1, ER_MED => 3, THROMDRU => 3)};
my @expected = (
qw/
ADM_DAT
ADM_STA
ADMVIAER
ER_DATE
ER_ARRTH
ER_ARRTM
FIRSTHOP
TX_PREVI
ER_MED
THROMDAT
THROMTH
THROMTM
THROMDRU
THROMDOT
THROMDO
CC
CP_TYPCP
TY_ATYP
ECGTYPE
E_ABN
CHF_STA
MENTAL
HEIGHT
WEIGHT
BMI
BSA
HR
BP_SYS
BP_DIA
ADMCOMT
/
);
my @result = $list->func( ADM_STA => 1, ER_MED => 3, THROMDRU => 3 )->as_list;
eq_or_diff \@result, \@expected, $title;
}
{
my $title = encode_utf8 q{func(ADM_STA => 1, ER_MED => 5, THROMDRU => 3)};
my @expected = (
qw/
ADM_DAT
ADM_STA
ADMVIAER
ER_DATE
ER_ARRTH
ER_ARRTM
FIRSTHOP
TX_PREVI
ER_MED
CC
CP_TYPCP
TY_ATYP
ECGTYPE
E_ABN
CHF_STA
MENTAL
HEIGHT
WEIGHT
BMI
BSA
HR
BP_SYS
BP_DIA
ADMCOMT
/
);
my @result = $list->func( ADM_STA => 1, ER_MED => 5, THROMDRU => 3 )->as_list;
eq_or_diff \@result, \@expected, $title;
}
{
my $title = encode_utf8 q{func(ER_MED => 1)};
my @expected = (
qw/
ADM_DAT
ADM_STA
CC
CP_TYPCP
TY_ATYP
ECGTYPE
E_ABN
CHF_STA
MENTAL
HEIGHT
WEIGHT
BMI
BSA
HR
BP_SYS
BP_DIA
ADMCOMT
/
);
my @result = $list->func( ER_MED => 1 )->as_list;
eq_or_diff \@result, \@expected, $title;
}
{
my $title = encode_utf8 q{func(ADM_STA => 2, ER_MED => 1)};
my @expected = (
qw/
ADM_DAT
ADM_STA
CC
CP_TYPCP
TY_ATYP
ECGTYPE
E_ABN
CHF_STA
MENTAL
HEIGHT
WEIGHT
BMI
BSA
HR
BP_SYS
BP_DIA
ADMCOMT
/
);
my @result = $list->func( ADM_STA => 2, ER_MED => 1 )->as_list;
eq_or_diff \@result, \@expected, $title;
}
done_testing;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment