void TSensorView::LineViewer(TDC& dc,PSHORTREAL pData) { m_xSize = m_nDimSize[0]-1; m_ySize = m_nDimSize[1]-1; m_yAdd = (int) (500L * m_ySize / m_xSize / 2); dc.SetWindowExt(TSize(m_xSize * 2 + m_ySize,500 + m_yAdd)); Grid3D(dc); if(m_nDimSize[1] == 1) for(int x = 0; x < m_nDimSize[0]; x++) { TPoint pt = Project2D(x,0,pData[x]); if (x) LINE(dc,pt); else MOVE(dc,pt); } else { TBrush br(SYSCOLOR(COLOR_BTNFACE)); dc.SelectObject(br); for (int y = 0; y < m_nDimSize[1]-1; y++) for (int x = 0; x < m_nDimSize[0]-1; x++) { TPoint pt[4] = { Project2D(x,y,pData[x + (LONGINT) m_nDimSize[0] * y]), Project2D(x+1,y,pData[x+1 + (LONGINT) m_nDimSize[0] * y]), Project2D(x+1,y+1,pData[x+1 + (LONGINT) m_nDimSize[0] * (y+1)]), Project2D(x,y+1,pData[x + (LONGINT) m_nDimSize[0] * (y+1)]) }; POLY(dc,pt,4); } } dc.RestorePen(); }
void TSensorView::ColumnViewer(TDC& dc,PSHORTREAL pData) { m_xSize = m_nDimSize[0]; m_ySize = m_nDimSize[1]; m_yAdd = (int) (500L * m_ySize / m_xSize / 2); dc.SetWindowExt(TSize(m_xSize * 2 + m_ySize,500 + m_yAdd)); Grid3D(dc); TBrush brGray(SYSCOLOR(COLOR_BTNFACE)), brWhite(SYSCOLOR(COLOR_BTNHIGHLIGHT)), brDark(SYSCOLOR(COLOR_BTNSHADOW)); for (int y = 0; y < m_nDimSize[1]; y++) for (int x = 0; x < m_nDimSize[0]; x++) { SHORTREAL r = pData[x + (LONGINT) m_nDimSize[0] * y]; TPoint pt[4] = { Project2D(x,y+1,r), Project2D(x+1,y+1,r), Project2D(x+1,y,r), Project2D(x,y,r) }; dc.SelectObject(brWhite); POLY(dc,pt,4); SHORTREAL r2 = y == m_nDimSize[1]-1 ? 0 : pData[x + (LONGINT) m_nDimSize[0] * (y+1)]; if(r2 < r) { pt[2] = Project2D(x+1,y+1,r2); pt[3] = Project2D(x,y+1,r2); dc.SelectObject(brGray); POLY(dc,pt,4); } r2 = x == m_nDimSize[0]-1 ? 0 : pData[x+1 + (LONGINT) m_nDimSize[0] * y]; if (r2 < r) { pt[0] = Project2D(x+1,y,r); pt[2] = Project2D(x+1,y+1,r2); pt[3] = Project2D(x+1,y,r2); dc.SelectObject(brDark); POLY(dc,pt,4); } } dc.RestoreBrush(); }
//! trigger all UserErrors // TODO: add more error checking TEST(Interface, connectDeath) { ::testing::FLAGS_gtest_death_test_style = "threadsafe"; CARLsim* sim = new CARLsim("Interface.connectDeath",CPU_MODE,SILENT,1,42); int g1=sim->createSpikeGeneratorGroup("excit", 10, EXCITATORY_NEURON); int g2=sim->createGroup("excit", Grid3D(2,3,4), EXCITATORY_NEURON); sim->setNeuronParameters(g2, 0.02f, 0.2f,-65.0f,8.0f); // regular connect call EXPECT_DEATH(sim->connect(g1,g1,"random",RangeWeight(0.1f),0.1f),""); // g-post cannot be PoissonGroup EXPECT_DEATH(sim->connect(g1,g2,"random",RangeWeight(-0.01f),0.1f),""); // weight cannot be negative EXPECT_DEATH(sim->connect(g1,g2,"random",RangeWeight(0.01f,0.1f,0.1f),0.1f),""); // wt.min>0 EXPECT_DEATH(sim->connect(g1,g2,"random",RangeWeight(0.0f,0.01f,0.1f),0.1f),""); // SYN_FIXED wt.init!=wt.max EXPECT_DEATH(sim->connect(g1,g2,"random",RangeWeight(0.0f,0.01f,0.1f),-0.1f),""); // prob<0 EXPECT_DEATH(sim->connect(g1,g2,"random",RangeWeight(0.0f,0.01f,0.1f),2.3f),""); // prob>1 EXPECT_DEATH(sim->connect(g1,g2,"one-to-one",RangeWeight(0.1f),0.1f,RangeDelay(1),RadiusRF(3,0,0)),""); // rad>0 EXPECT_DEATH(sim->connect(g1,g2,"random",RangeWeight(0.1f),0.1f,RangeDelay(1),RadiusRF(-1),SYN_FIXED,-1.0f,0.0f),""); // mulSynFast<0 EXPECT_DEATH(sim->connect(g1,g2,"random",RangeWeight(0.1f),0.1f,RangeDelay(1),RadiusRF(-1),SYN_FIXED,0.0f,-1.0f),""); // mulSynSlow<0 // custom ConnectionGenerator ConnectionGenerator* CGNULL = NULL; DummyCG* CG = new DummyCG; EXPECT_DEATH({sim->connect(g1,g2,CGNULL);},""); // CG=NULL