| | 169 | char b[64] = {BIT0, BIT0, BIT0, BIT0, |
| | 170 | BIT0, BIT0, BIT0, BIT1, |
| | 171 | BIT0, BIT0, BIT1, BIT0, |
| | 172 | BIT0, BIT0, BIT1, BIT1, |
| | 173 | BIT0, BIT1, BIT0, BIT0, |
| | 174 | BIT0, BIT1, BIT0, BIT1, |
| | 175 | BIT0, BIT1, BIT1, BIT0, |
| | 176 | BIT0, BIT1, BIT1, BIT1, |
| | 177 | BIT1, BIT0, BIT0, BIT0, |
| | 178 | BIT1, BIT0, BIT0, BIT1, |
| | 179 | BIT1, BIT0, BIT1, BIT0, |
| | 180 | BIT1, BIT0, BIT1, BIT1, |
| | 181 | BIT1, BIT1, BIT0, BIT0, |
| | 182 | BIT1, BIT1, BIT0, BIT1, |
| | 183 | BIT1, BIT1, BIT1, BIT0, |
| | 184 | BIT1, BIT1, BIT1, BIT1}; |
| | 185 | |
| | 186 | short * I_out = new short[16]; |
| | 187 | short * Q_out = new short[16]; |
| | 188 | |
| | 189 | SetModulationScheme( SigProc::QAM16 ); |
| | 190 | ModulateSequence(b, 64, I_out, Q_out); |
| | 191 | |
| | 192 | TS_ASSERT_EQUALS( I_out[0], -QAM16_LEVEL_2 ); |
| | 193 | TS_ASSERT_EQUALS( Q_out[0], QAM16_LEVEL_2 ); |
| | 194 | |
| | 195 | TS_ASSERT_EQUALS( I_out[1], -QAM16_LEVEL_2 ); |
| | 196 | TS_ASSERT_EQUALS( Q_out[1], QAM16_LEVEL_1 ); |
| | 197 | |
| | 198 | TS_ASSERT_EQUALS( I_out[2], -QAM16_LEVEL_2 ); |
| | 199 | TS_ASSERT_EQUALS( Q_out[2], -QAM16_LEVEL_2 ); |
| | 200 | |
| | 201 | TS_ASSERT_EQUALS( I_out[3], -QAM16_LEVEL_2 ); |
| | 202 | TS_ASSERT_EQUALS( Q_out[3], -QAM16_LEVEL_1 ); |
| | 203 | |
| | 204 | TS_ASSERT_EQUALS( I_out[4], -QAM16_LEVEL_1 ); |
| | 205 | TS_ASSERT_EQUALS( Q_out[4], QAM16_LEVEL_2 ); |
| | 206 | |
| | 207 | TS_ASSERT_EQUALS( I_out[5], -QAM16_LEVEL_1 ); |
| | 208 | TS_ASSERT_EQUALS( Q_out[5], QAM16_LEVEL_1 ); |
| | 209 | |
| | 210 | TS_ASSERT_EQUALS( I_out[6], -QAM16_LEVEL_1 ); |
| | 211 | TS_ASSERT_EQUALS( Q_out[6], -QAM16_LEVEL_2 ); |
| | 212 | |
| | 213 | TS_ASSERT_EQUALS( I_out[7], -QAM16_LEVEL_1 ); |
| | 214 | TS_ASSERT_EQUALS( Q_out[7], -QAM16_LEVEL_1 ); |
| | 215 | |
| | 216 | TS_ASSERT_EQUALS( I_out[8], QAM16_LEVEL_2 ); |
| | 217 | TS_ASSERT_EQUALS( Q_out[8], QAM16_LEVEL_2 ); |
| | 218 | |
| | 219 | TS_ASSERT_EQUALS( I_out[9], QAM16_LEVEL_2 ); |
| | 220 | TS_ASSERT_EQUALS( Q_out[9], QAM16_LEVEL_1 ); |
| | 221 | |
| | 222 | TS_ASSERT_EQUALS( I_out[10], QAM16_LEVEL_2 ); |
| | 223 | TS_ASSERT_EQUALS( Q_out[10], -QAM16_LEVEL_2 ); |
| | 224 | |
| | 225 | TS_ASSERT_EQUALS( I_out[11], QAM16_LEVEL_2 ); |
| | 226 | TS_ASSERT_EQUALS( Q_out[11], -QAM16_LEVEL_1 ); |
| | 227 | |
| | 228 | TS_ASSERT_EQUALS( I_out[12], QAM16_LEVEL_1 ); |
| | 229 | TS_ASSERT_EQUALS( Q_out[12], QAM16_LEVEL_2 ); |
| | 230 | |
| | 231 | TS_ASSERT_EQUALS( I_out[13], QAM16_LEVEL_1 ); |
| | 232 | TS_ASSERT_EQUALS( Q_out[13], QAM16_LEVEL_1 ); |
| | 233 | |
| | 234 | TS_ASSERT_EQUALS( I_out[14], QAM16_LEVEL_1 ); |
| | 235 | TS_ASSERT_EQUALS( Q_out[14], -QAM16_LEVEL_2 ); |
| | 236 | |
| | 237 | TS_ASSERT_EQUALS( I_out[15], QAM16_LEVEL_1 ); |
| | 238 | TS_ASSERT_EQUALS( Q_out[15], -QAM16_LEVEL_1 ); |
| | 239 | |
| | 240 | delete [] I_out; |
| | 241 | delete [] Q_out; |
| | 245 | char b[8] = {BIT0, BIT0, |
| | 246 | BIT0, BIT1, |
| | 247 | BIT1, BIT0, |
| | 248 | BIT1, BIT1}; |
| | 249 | |
| | 250 | short * I_out = new short[4]; |
| | 251 | short * Q_out = new short[4]; |
| | 252 | |
| | 253 | SetModulationScheme( SigProc::PAM4 ); |
| | 254 | ModulateSequence( b, 8, I_out, Q_out ); |
| | 255 | |
| | 256 | TS_ASSERT_EQUALS( I_out[0], PAM4_LEVEL_2 ); |
| | 257 | TS_ASSERT_EQUALS( Q_out[0], 0 ); |
| | 258 | |
| | 259 | TS_ASSERT_EQUALS( I_out[1], PAM4_LEVEL_1 ); |
| | 260 | TS_ASSERT_EQUALS( Q_out[1], 0 ); |
| | 261 | |
| | 262 | TS_ASSERT_EQUALS( I_out[2], -PAM4_LEVEL_2 ); |
| | 263 | TS_ASSERT_EQUALS( Q_out[2], 0 ); |
| | 264 | |
| | 265 | TS_ASSERT_EQUALS( I_out[3], -PAM4_LEVEL_1 ); |
| | 266 | TS_ASSERT_EQUALS( Q_out[3], 0 ); |
| | 267 | |
| | 268 | delete [] I_out; |
| | 269 | delete [] Q_out; |