0001 function ok= mk_stim_patterns_test
0002
0003
0004
0005
0006
0007 ok= 1;
0008
0009 pat= mk_stim_patterns(16,1,'{ad}','{ad}');
0010 ok= ok& test_adj(pat);
0011
0012 options= {'no_rotate_meas'};
0013 pat= mk_stim_patterns(16,1,'{ad}','{ad}', options);
0014 ok= ok& test_adj(pat);
0015
0016 options= {'no_rotate_meas', 'no_meas_current'};
0017 pat= mk_stim_patterns(16,1,'{ad}','{ad}', options);
0018 ok= ok& test_adj(pat);
0019
0020 options= {'no_rotate_meas', 'meas_current'};
0021 pat= mk_stim_patterns(16,1,'{ad}','{ad}', options);
0022 ok= ok& test_adj_full(pat);
0023
0024 options= {'meas_current'};
0025 pat= mk_stim_patterns(16,1,'{ad}','{ad}', options);
0026 ok= ok& test_adj_full(pat);
0027
0028 options= {'rotate_meas'};
0029 pat= mk_stim_patterns(16,1,'{ad}','{ad}', options);
0030 ok= ok& test_adj_rotate(pat);
0031
0032 options= {'rotate_meas', 'no_meas_current'};
0033 pat= mk_stim_patterns(16,1,'{ad}','{ad}', options);
0034 ok= ok& test_adj_rotate(pat);
0035
0036 options= {'rotate_meas','no_redundant', 'no_meas_current'};
0037 pat= mk_stim_patterns(16,1,'{ad}','{ad}', options);
0038 ok= ok& test_adj_no_redund(pat);
0039
0040
0041 function ok= test_adj(pat)
0042 eidors_msg('test adjacent current pattern',2);
0043
0044 ok=1;
0045 if length(pat) ~= 16
0046 ok=0; eidors_msg('Fail at pt#01',1); return; end
0047
0048 if ~strcmp( pat(1).stimulation, 'mA');
0049 ok=0; eidors_msg('Fail at pt#02',1); return; end
0050
0051
0052 if pat(1).stim_pattern ~= [-1;1;zeros(14,1)]
0053 ok=0; eidors_msg('Fail at pt#03',1); return; end
0054
0055 meas= pat(1).meas_pattern;
0056
0057 if any( size(meas)~= [13 16] )
0058 ok=0; eidors_msg('Fail at pt#04',1); return; end
0059
0060 if any( meas(1,:)~= [0,0,1,-1,zeros(1,12)] )
0061 ok=0; eidors_msg('Fail at pt#05',1); return; end
0062
0063 if any( meas(13,:)~= [zeros(1,14),1,-1] )
0064 ok=0; eidors_msg('Fail at pt#06',1); return; end
0065
0066
0067 if any( pat(10).stim_pattern ~= [zeros(9,1);-1;1;zeros(5,1)] )
0068 ok=0; eidors_msg('Fail at pt#07',1); return; end
0069
0070 meas= pat(10).meas_pattern;
0071
0072 if any( size(meas)~= [13 16] )
0073 ok=0; eidors_msg('Fail at pt#08',1); return; end
0074
0075 if any( meas(1,:)~= [1,-1,zeros(1,14)] )
0076 ok=0; eidors_msg('Fail at pt#09',1); return; end
0077
0078 if any( meas(13,:)~= [-1,zeros(1,14),1] )
0079 ok=0; eidors_msg('Fail at pt#10',1); return; end
0080
0081 function ok= test_adj_full(pat)
0082 eidors_msg('test adjacent current pattern (full)',2);
0083
0084 ok=1;
0085 if length(pat) ~= 16
0086 ok=0; eidors_msg('Fail at pt#11',1); return; end
0087
0088 if ~strcmp( pat(1).stimulation, 'mA');
0089 ok=0; eidors_msg('Fail at pt#12',1); return; end
0090
0091
0092 if pat(1).stim_pattern ~= [-1;1;zeros(14,1)]
0093 ok=0; eidors_msg('Fail at pt#13',1); return; end
0094
0095 meas= pat(1).meas_pattern;
0096
0097 if any( size(meas)~= [16 16] )
0098 ok=0; eidors_msg('Fail at pt#14',1); return; end
0099
0100 if any( meas(1,:)~= [1,-1,zeros(1,14)] )
0101 ok=0; eidors_msg('Fail at pt#15',1); return; end
0102
0103 if any( meas(13,:)~= [zeros(1,12),1,-1,0,0] )
0104 ok=0; eidors_msg('Fail at pt#16',1); return; end
0105
0106
0107 if any( pat(10).stim_pattern ~= [zeros(9,1);-1;1;zeros(5,1)] )
0108 ok=0; eidors_msg('Fail at pt#17',1); return; end
0109
0110 meas= pat(10).meas_pattern;
0111
0112 if any( size(meas)~= [16 16] )
0113 ok=0; eidors_msg('Fail at pt#18',1); return; end
0114
0115 if any( meas(1,:)~= [1,-1,zeros(1,14)] )
0116 ok=0; eidors_msg('Fail at pt#19',1); return; end
0117
0118 if any( meas(13,:)~= [zeros(1,12),1,-1,0,0] )
0119 ok=0; eidors_msg('Fail at pt#20',1); return; end
0120
0121
0122 function ok= test_adj_rotate(pat)
0123 eidors_msg('test adjacent current pattern (rotate)',2);
0124
0125 ok=1;
0126 if length(pat) ~= 16
0127 ok=0; eidors_msg('Fail at pt#21',1); return; end
0128
0129 if ~strcmp( pat(1).stimulation, 'mA');
0130 ok=0; eidors_msg('Fail at pt#22',1); return; end
0131
0132
0133 if pat(1).stim_pattern ~= [-1;1;zeros(14,1)]
0134 ok=0; eidors_msg('Fail at pt#23',1); return; end
0135
0136 meas= pat(1).meas_pattern;
0137
0138 if any( size(meas)~= [13 16] )
0139 ok=0; eidors_msg('Fail at pt#24',1); return; end
0140
0141 if any( meas(1,:)~= [0,0,1,-1,zeros(1,12)] )
0142 ok=0; eidors_msg('Fail at pt#25',1); return; end
0143
0144 if any( meas(13,:)~= [zeros(1,14),1,-1] )
0145 ok=0; eidors_msg('Fail at pt#26',1); return; end
0146
0147
0148 if any( pat(10).stim_pattern ~= [zeros(9,1);-1;1;zeros(5,1)] )
0149 ok=0; eidors_msg('Fail at pt#27',1); return; end
0150
0151 meas= pat(10).meas_pattern;
0152
0153 if any( size(meas)~= [13 16] )
0154 ok=0; eidors_msg('Fail at pt#28',1); return; end
0155
0156 if any( meas(1,:)~= [zeros(1,11),1,-1,zeros(1,3)] )
0157 ok=0; eidors_msg('Fail at pt#29',1); return; end
0158
0159 if any( meas(13,:)~= [zeros(1,7),1,-1,zeros(1,7)] )
0160 ok=0; eidors_msg('Fail at pt#30',1); return; end
0161
0162 function ok= test_adj_no_redund(pat)
0163 eidors_msg('test adjacent current pattern (rotate)',2);
0164
0165 ok=1;
0166 if length(pat) ~= 14
0167 ok=0; eidors_msg('Fail at pt#31',1); return; end
0168
0169 if ~strcmp( pat(1).stimulation, 'mA');
0170 ok=0; eidors_msg('Fail at pt#32',1); return; end
0171
0172
0173 if pat(1).stim_pattern ~= [-1;1;zeros(14,1)]
0174 ok=0; eidors_msg('Fail at pt#33',1); return; end
0175
0176 meas= pat(1).meas_pattern;
0177
0178 if any( size(meas)~= [13 16] )
0179 ok=0; eidors_msg('Fail at pt#34',1); return; end
0180
0181 if any( meas(1,:)~= [0,0,1,-1,zeros(1,12)] )
0182 ok=0; eidors_msg('Fail at pt#35',1); return; end
0183
0184 if any( meas(13,:)~= [zeros(1,14),1,-1] )
0185 ok=0; eidors_msg('Fail at pt#36',1); return; end
0186
0187
0188 if any( pat(10).stim_pattern ~= [zeros(9,1);-1;1;zeros(5,1)] )
0189 ok=0; eidors_msg('Fail at pt#37',1); return; end
0190
0191 meas= pat(10).meas_pattern;
0192
0193 if any( size(meas)~= [5 16] )
0194 ok=0; eidors_msg('Fail at pt#38',1); return; end
0195
0196 if any( meas(1,:)~= [zeros(1,11),1,-1,zeros(1,3)] )
0197 ok=0; eidors_msg('Fail at pt#39',1); return; end
0198
0199 if any( meas(5,:)~= [-1,zeros(1,14),1] )
0200 ok=0; eidors_msg('Fail at pt#40',1); return; end
0201