TEST(AlphaBetaTest, FourSitesNoDisorder) {
	Parameters pars;
	pars.nmax = 3;
	pars.e0 = pars.t0 = pars.d0 = 1;
	pars.e0MaxDisorder = pars.t0MaxDisorder = pars.d0MaxDisorder = 0.0;
	pars.e0seed = pars.t0seed = pars.d0seed = 1;

	AlphaBeta ab(pars);
	int nsum = 1;
	complex_mkl z = {1.0, 0.1};
	ComplexMatrix alpha;
	ComplexMatrix beta;
	ab.FillAlphaBetaMatrix(nsum, z, alpha, beta);
	// testing the dimensions
	EXPECT_EQ(alpha.GetRows(),0);
	EXPECT_EQ(alpha.GetCols(),0);
	EXPECT_EQ(beta.GetRows(),1);
	EXPECT_EQ(beta.GetCols(),1);
	//testing matrix element
	dcomplex x = pars.t0/(convertToDcomplex(z)-pars.e0-pars.e0-pars.d0);
	EXPECT_DOUBLE_EQ(beta(0,0).real,x.real());
	EXPECT_DOUBLE_EQ(beta(0,0).imag,x.imag());

	nsum=2;
	ab.FillAlphaBetaMatrix(nsum, z, alpha, beta);
	// testing the dimensions
	EXPECT_EQ(alpha.GetRows(),1);
	EXPECT_EQ(alpha.GetCols(),1);
	EXPECT_EQ(beta.GetRows(),1);
	EXPECT_EQ(beta.GetCols(),2);
	//testing matrix element
	x = pars.t0/(convertToDcomplex(z)-pars.e0-pars.e0);
	EXPECT_DOUBLE_EQ(alpha(0,0).real,x.real());
	EXPECT_DOUBLE_EQ(alpha(0,0).imag,x.imag());
	EXPECT_DOUBLE_EQ(beta(0,0).real,x.real());
	EXPECT_DOUBLE_EQ(beta(0,0).imag,x.imag());
	EXPECT_DOUBLE_EQ(beta(0,1).real,x.real());
	EXPECT_DOUBLE_EQ(beta(0,1).imag,x.imag());

	nsum =3;
	ab.FillAlphaBetaMatrix(nsum, z, alpha, beta);
	// testing the dimensions
	EXPECT_EQ(alpha.GetRows(),2);
	EXPECT_EQ(alpha.GetCols(),1);
	EXPECT_EQ(beta.GetRows(),2);
	EXPECT_EQ(beta.GetCols(),1);
	//testing matrix element
	x = pars.t0/(convertToDcomplex(z)-pars.e0-pars.e0);
	EXPECT_DOUBLE_EQ(alpha(0,0).real,x.real());
	EXPECT_DOUBLE_EQ(alpha(0,0).imag,x.imag());
	x = pars.t0/(convertToDcomplex(z)-pars.e0-pars.e0-pars.d0);
	EXPECT_DOUBLE_EQ(alpha(1,0).real,x.real());
	EXPECT_DOUBLE_EQ(alpha(1,0).imag,x.imag());
	x = pars.t0/(convertToDcomplex(z)-pars.e0-pars.e0);
	EXPECT_DOUBLE_EQ(beta(0,0).real,x.real());
	EXPECT_DOUBLE_EQ(beta(0,0).imag,x.imag());
	x = pars.t0/(convertToDcomplex(z)-pars.e0-pars.e0-pars.d0);
	EXPECT_DOUBLE_EQ(beta(1,0).real,x.real());
	EXPECT_DOUBLE_EQ(beta(1,0).imag,x.imag());

	nsum =4;
	ab.FillAlphaBetaMatrix(nsum, z, alpha, beta);
	// testing the dimensions
	EXPECT_EQ(alpha.GetRows(),1);
	EXPECT_EQ(alpha.GetCols(),2);
	EXPECT_EQ(beta.GetRows(),1);
	EXPECT_EQ(beta.GetCols(),1);
	//testing matrix element
	x = pars.t0/(convertToDcomplex(z)-pars.e0-pars.e0);
	EXPECT_DOUBLE_EQ(alpha(0,0).real,x.real());
	EXPECT_DOUBLE_EQ(alpha(0,0).imag,x.imag());
	EXPECT_DOUBLE_EQ(alpha(0,1).real,x.real());
	EXPECT_DOUBLE_EQ(alpha(0,1).imag,x.imag());
	EXPECT_DOUBLE_EQ(beta(0,0).real,x.real());
	EXPECT_DOUBLE_EQ(beta(0,0).imag,x.imag());


	nsum = 5;
	ab.FillAlphaBetaMatrix(nsum, z, alpha, beta);
	// testing the dimensions
	EXPECT_EQ(alpha.GetRows(),1);
	EXPECT_EQ(alpha.GetCols(),1);
	EXPECT_EQ(beta.GetRows(),0);
	EXPECT_EQ(beta.GetCols(),0);
	//testing matrix element
	x = pars.t0/(convertToDcomplex(z)-pars.e0-pars.e0-pars.d0);
	EXPECT_DOUBLE_EQ(alpha(0,0).real,x.real());
	EXPECT_DOUBLE_EQ(alpha(0,0).imag,x.imag());


}