package cz.cuni.lf1.lge.ThunderSTORM.colocalization;
import org.junit.Test;
import static org.junit.Assert.*;
public class CBCTest {
@Test
public void testSameAsMatlabImpl() {
double[][] first = new double[][]{
{9.58456967808668, 8.07427321148612},
{8.80085120635516, 10.6435089700042},
{8.41589936478319, 8.79974368438456},
{13.5723030231440, 9.52639834905543},
{12.3412271483373, 10.7817537048888},
{10.4349203931013, 11.4694960947218},
{8.22216616669611, 8.41942021629354},
{8.77604337338907, 11.7828406439625},
{9.75034306143236, 10.9335833831762},
{11.1192313278351, 9.90402361376197},
{8.11626128223505, 9.72391553426886},
{6.70507026973283, 9.69225814836899},
{7.95066695526932, 9.57134109102572},
{10.4716555433200, 10.0325914346153},
{10.5534575750726, 10.0725355168603},
{10.6387711600931, 11.1682292012890},
{9.81574967655225, 12.1594711398059},
{10.2597756106280, 10.6603167274131},
{9.32661794613244, 9.70342055264011},
{11.2190826541225, 10.8841526820582}};
double[][] second = new double[][]{
{11.2591224803331, 9.49497495823256},
{9.54368877379646, 13.2676310576875},
{12.3424023872861, 12.7460999947122},
{11.4342511305456, 10.6752591587683},
{11.1911662364100, 8.86996851953204},
{11.7286683556623, 10.3712013117723},
{11.3696843687692, 10.7794660723475},
{9.66853805393354, 11.3904194688506},
{10.7704198614367, 10.6306588301441},
{10.7934475552809, 11.6270932830824},
{10.2476222955802, 11.5542221059949},
{13.3788537168892, 9.23127292779214},
{9.76153168169238, 9.65938080703918},
{10.3157821944540, 9.95191771079212},
{9.99307351029408, 10.2818375331855},
{9.33941299574804, 10.5466377708013},
{10.7281322670719, 11.0176338874034},
{10.6124061637866, 6.71609632095298},
{13.1638493013129, 10.3536836966763},
{10.6478258317706, 12.7570873868666}};
double[] resultsFirstFromMatlab = new double[]{
-0.0196974753998052, 0.231590053934303,
-0.609177585258998, 0.326611738761676,
0.0794994189118908, 0.727377254229481,
-0.594369421066471, -0.0257352016441271,
0.440376139684379, 0.437876252597054,
-0.572242041445284, -0.428291294010059,
-0.616464209340207, 0.768687312256853,
0.644286378810337, 0.776961467309580,
0.194435782432457, 0.468868913049697,
0.256469023516148, 0.733161448072945};
double[] resultsSecondFromMatlab = new double[]{
0.394665156085757, -0.268360745969659,
0.0722135695320114, 0.599836140466854,
-0.110573650872330, 0.209869083113034,
0.711110781589293, 0.401463482731675,
0.414093758169841, 0.521157330105307,
0.723909295397084, 0.232367390681943,
0.399479357832148, 0.769212211902691,
0.459241860792328, 0.338719775218345,
0.775022276225687, -0.142869696342208,
-0.215252802988524, -0.0100791151852073};
CBC cbc = new CBC(first, second, 0.02, 250);
double[] resultsFirst = cbc.calculateFirstChannelCBC();
assertArrayEquals(resultsFirstFromMatlab, resultsFirst, 0.001);
double[] resultsSecond = cbc.calculateSecondChannelCBC();
assertArrayEquals(resultsSecondFromMatlab, resultsSecond, 0.001);
}
}