void TestBandDiv_B2(tmv::DivType dt) { const int N = 10; std::vector<tmv::BandMatrixView<T> > b; std::vector<tmv::BandMatrixView<std::complex<T> > > cb; MakeBandList(b,cb); tmv::Matrix<T> a1(N,N); for (int i=0; i<N; ++i) for (int j=0; j<N; ++j) a1(i,j) = T(3+i-2*j); a1.diag().addToAll(T(10)*N); a1 /= T(10); tmv::Matrix<std::complex<T> > ca1 = a1 * std::complex<T>(3,-4); a1.diag().addToAll(T(10)*N); ca1.diag().addToAll(T(10)*N); tmv::MatrixView<T> a1v = a1.view(); tmv::MatrixView<std::complex<T> > ca1v = ca1.view(); #if (XTEST & 2) tmv::Matrix<T> a3 = a1.colRange(0,N/2); tmv::Matrix<std::complex<T> > ca3 = ca1.colRange(0,N/2); tmv::Matrix<T> a4 = a1.rowRange(0,N/2); tmv::Matrix<std::complex<T> > ca4 = ca1.rowRange(0,N/2); tmv::Matrix<T> a5(2*N,N); a5.rowRange(0,N) = a1; a5.rowRange(N,2*N) = a1; tmv::Matrix<std::complex<T> > ca5(2*N,N); ca5.rowRange(0,N) = ca1; ca5.rowRange(N,2*N) = ca1; tmv::Matrix<T> a6 = a5.transpose(); tmv::Matrix<std::complex<T> > ca6 = ca5.transpose(); tmv::MatrixView<T> a3v = a3.view(); tmv::MatrixView<T> a4v = a4.view(); tmv::MatrixView<T> a5v = a5.view(); tmv::MatrixView<T> a6v = a6.view(); tmv::MatrixView<std::complex<T> > ca3v = ca3.view(); tmv::MatrixView<std::complex<T> > ca4v = ca4.view(); tmv::MatrixView<std::complex<T> > ca5v = ca5.view(); tmv::MatrixView<std::complex<T> > ca6v = ca6.view(); #endif for(size_t i=START;i<b.size();i++) { if (showstartdone) std::cout<<"Start B2 loop: i = "<<i<<"\nbi = "<<tmv::TMV_Text(b[i])<< " "<<b[i]<<std::endl; tmv::BandMatrixView<T> bi = b[i]; tmv::BandMatrixView<std::complex<T> > cbi = cb[i]; TestMatrixDivArith1(dt,a1v,bi,ca1v,cbi,"Band/SquareMatrix"); if (dt == tmv::LU) continue; #if (XTEST & 2) TestMatrixDivArith1(dt,a3v,bi,ca3v,cbi,"Band/NonSquareMatrix"); TestMatrixDivArith1(dt,a4v,bi,ca4v,cbi,"Band/NonSquareMatrix"); TestMatrixDivArith1(dt,a5v,bi,ca5v,cbi,"Band/NonSquareMatrix"); TestMatrixDivArith1(dt,a6v,bi,ca6v,cbi,"Band/NonSquareMatrix"); #endif } }
/* **************************************************************************** * * noPatternMultiEntityAttrs - * * Discover: (E1, E2) - (A3, A4, A5) * Result: (E1, E2) - A3 - http://cr1.com * E1 - A4 - http://cr2.com * E2 - A3 - http://cr3.com */ TEST(mongoContextProvidersUpdateRequest, noPatternMultiEntityAttrs) { HttpStatusCode ms; UpdateContextRequest req; UpdateContextResponse res; /* Prepare database */ utInit(); prepareDatabase(); /* Forge the request (from "inside" to "outside") */ ContextElement ce1, ce2; ce1.entityId.fill("E1", "T1", "false"); ce2.entityId.fill("E2", "T2", "false"); ContextAttribute ca1("A3", "TA3", "new_val"); ContextAttribute ca2("A4", "TA4", "new_val"); ContextAttribute ca3("A5", "TA5", "new_val"); ContextAttribute ca4("A3", "TA3", "new_val"); ContextAttribute ca5("A4", "TA4", "new_val"); ContextAttribute ca6("A5", "TA5", "new_val"); ce1.contextAttributeVector.push_back(&ca1); ce1.contextAttributeVector.push_back(&ca2); ce1.contextAttributeVector.push_back(&ca3); ce2.contextAttributeVector.push_back(&ca4); ce2.contextAttributeVector.push_back(&ca5); ce2.contextAttributeVector.push_back(&ca6); req.contextElementVector.push_back(&ce1); req.contextElementVector.push_back(&ce2); req.updateActionType.set("UPDATE"); /* Invoke the function in mongoBackend library */ ms = mongoUpdateContext(&req, &res, "", servicePathVector, uriParams); /* Check response is as expected */ EXPECT_EQ(SccOk, ms); EXPECT_EQ(SccNone, res.errorCode.code); EXPECT_EQ(0, res.errorCode.reasonPhrase.size()); EXPECT_EQ(0, res.errorCode.details.size()); ASSERT_EQ(2, res.contextElementResponseVector.size()); /* Context Element Response #1 */ EXPECT_EQ("E1", RES_CER(0).entityId.id); EXPECT_EQ("T1", RES_CER(0).entityId.type); EXPECT_EQ("false", RES_CER(0).entityId.isPattern); ASSERT_EQ(3, RES_CER(0).contextAttributeVector.size()); EXPECT_EQ("A3", RES_CER_ATTR(0, 0)->name); EXPECT_EQ("TA3", RES_CER_ATTR(0, 0)->type); EXPECT_EQ("A4", RES_CER_ATTR(0, 1)->name); EXPECT_EQ("TA4", RES_CER_ATTR(0, 1)->type); EXPECT_EQ("A5", RES_CER_ATTR(0, 2)->name); EXPECT_EQ("TA5", RES_CER_ATTR(0, 2)->type); EXPECT_EQ(SccFound, RES_CER_STATUS(0).code); EXPECT_EQ("Found", RES_CER_STATUS(0).reasonPhrase); EXPECT_EQ("http://cr1.com", RES_CER_STATUS(0).details); /* Context Element Response #2 */ EXPECT_EQ("E2", RES_CER(1).entityId.id); EXPECT_EQ("T2", RES_CER(1).entityId.type); EXPECT_EQ("false", RES_CER(1).entityId.isPattern); ASSERT_EQ(3, RES_CER(1).contextAttributeVector.size()); EXPECT_EQ("A3", RES_CER_ATTR(1, 0)->name); EXPECT_EQ("TA3", RES_CER_ATTR(1, 0)->type); EXPECT_EQ("A4", RES_CER_ATTR(1, 1)->name); EXPECT_EQ("TA4", RES_CER_ATTR(1, 1)->type); EXPECT_EQ("A5", RES_CER_ATTR(1, 2)->name); EXPECT_EQ("TA5", RES_CER_ATTR(1, 2)->type); EXPECT_EQ(SccFound, RES_CER_STATUS(1).code); EXPECT_EQ("Found", RES_CER_STATUS(1).reasonPhrase); EXPECT_EQ("http://cr1.com", RES_CER_STATUS(1).details); /* Release connection */ mongoDisconnect(); utExit(); }
void TestSymBandDiv_B2(tmv::DivType dt, PosDefCode pdc) { const int N = 10; std::vector<tmv::SymBandMatrixView<T> > sb; std::vector<tmv::SymBandMatrixView<std::complex<T> > > csb; MakeSymBandList(sb,csb,pdc); tmv::Matrix<T> a1(N,N); for (int i=0; i<N; ++i) for (int j=0; j<N; ++j) a1(i,j) = T(1-3*i+j); a1.diag().addToAll(T(10)*N); a1 /= T(10); tmv::Matrix<std::complex<T> > ca1 = a1 * std::complex<T>(3,-4); a1.diag().addToAll(T(10)*N); ca1.diag().addToAll(T(10)*N); tmv::MatrixView<T> a1v = a1.view(); tmv::MatrixView<std::complex<T> > ca1v = ca1.view(); #if (XTEST & 2) tmv::Matrix<T> a3 = a1.colRange(0,N/2); tmv::Matrix<std::complex<T> > ca3 = ca1.colRange(0,N/2); tmv::Matrix<T> a4 = a1.rowRange(0,N/2); tmv::Matrix<std::complex<T> > ca4 = ca1.rowRange(0,N/2); tmv::Matrix<T> a5(2*N,N); a5.rowRange(0,N) = a1; a5.rowRange(N,2*N) = a1; tmv::Matrix<std::complex<T> > ca5(2*N,N); ca5.rowRange(0,N) = ca1; ca5.rowRange(N,2*N) = ca1; tmv::Matrix<T> a6 = a5.transpose(); tmv::Matrix<std::complex<T> > ca6 = ca5.transpose(); tmv::MatrixView<T> a3v = a3.view(); tmv::MatrixView<T> a4v = a4.view(); tmv::MatrixView<T> a5v = a5.view(); tmv::MatrixView<T> a6v = a6.view(); tmv::MatrixView<std::complex<T> > ca3v = ca3.view(); tmv::MatrixView<std::complex<T> > ca4v = ca4.view(); tmv::MatrixView<std::complex<T> > ca5v = ca5.view(); tmv::MatrixView<std::complex<T> > ca6v = ca6.view(); #endif for(size_t i=START;i<sb.size();i++) { if (showstartdone) std::cout<<"Start loop: i = "<<i<<", si = "<<tmv::TMV_Text(sb[i])<< " "<<sb[i]<<std::endl; tmv::SymBandMatrixView<T> si = sb[i]; tmv::SymBandMatrixView<std::complex<T> > csi = csb[i]; si.saveDiv(); csi.saveDiv(); TestMatrixDivArith1(dt,a1v,si,ca1v,csi,"SymBand/SquareMatrix"); if (dt == tmv::LU) continue; #if (XTEST & 2) TestMatrixDivArith1(dt,a3v,si,ca3v,csi,"SymBand/NonSquareMatrix"); TestMatrixDivArith1(dt,a4v,si,ca4v,csi,"SymBand/NonSquareMatrix"); TestMatrixDivArith1(dt,a5v,si,ca5v,csi,"SymBand/NonSquareMatrix"); TestMatrixDivArith1(dt,a6v,si,ca6v,csi,"SymBand/NonSquareMatrix"); #endif } }