TEST_F(ReqSuite, deleteUpdateRollback) { buildSample(); mark1(); { MojDbReq req; // start transaction req.begin(&db, false); checkMarkWithUpdate(50ul, -1, req); checkMarkWithUpdate(0ul, -3, req); deleteMark(50ul, -1, req); checkMarkWithUpdate(0ul, -1, req); checkMarkWithUpdate(0ul, -3, req); mark3(req); checkMarkWithUpdate(0ul, -1, req); checkMarkWithUpdate(33ul, -3, req); } checkMarkWithUpdate(50ul, -1); checkMarkWithUpdate(0ul, -3); }
void SplineSeg<D> :: Partition (double h, double elto0, Mesh & mesh, Point3dTree & searchtree, int segnr) const { int i, j; double l, r1, r2, ra; double lold, dt, frac; int n = 100; Point<D> p, pold, mark, oldmark; ARRAY<double> curvepoints; double edgelength, edgelengthold; l = Length(); r1 = StartPI().refatpoint; r2 = EndPI().refatpoint; ra = reffak; // cout << "Partition, l = " << l << ", h = " << h << endl; CalcPartition (l, h, r1, r2, ra, elto0, curvepoints); // cout << "curvepoints = " << curvepoints << endl; dt = 1.0 / n; l = 0; j = 1; pold = GetPoint (0); lold = 0; oldmark = pold; edgelengthold = 0; ARRAY<int> locsearch; for (i = 1; i <= n; i++) { p = GetPoint (i*dt); l = lold + Dist (p, pold); while (j < curvepoints.Size() && (l >= curvepoints[j] || i == n)) { frac = (curvepoints[j]-lold) / (l-lold); mark = pold + frac * (p-pold); edgelength = i*dt + (frac-1)*dt; { PointIndex pi1 = -1, pi2 = -1; Point3d mark3(mark(0), mark(1), 0); Point3d oldmark3(oldmark(0), oldmark(1), 0); Vec<3> v (1e-4*h, 1e-4*h, 1e-4*h); searchtree.GetIntersecting (oldmark3 - v, oldmark3 + v, locsearch); if (locsearch.Size()) pi1 = locsearch[0]; searchtree.GetIntersecting (mark3 - v, mark3 + v, locsearch); if (locsearch.Size()) pi2 = locsearch[0]; /* for (PointIndex pk = PointIndex::BASE; pk < mesh.GetNP()+PointIndex::BASE; pk++) { if (Dist (mesh[pk], oldmark3) < 1e-4 * h) pi1 = pk; if (Dist (mesh[pk], mark3) < 1e-4 * h) pi2 = pk; } */ // cout << "pi1 = " << pi1 << endl; // cout << "pi2 = " << pi2 << endl; if (pi1 == -1) { pi1 = mesh.AddPoint(oldmark3); searchtree.Insert (oldmark3, pi1); } if (pi2 == -1) { pi2 = mesh.AddPoint(mark3); searchtree.Insert (mark3, pi2); } // cout << "pi1 = " << pi1 << endl; // cout << "pi2 = " << pi2 << endl; Segment seg; seg.edgenr = segnr; seg.si = bc; // segnr; seg.p1 = pi1; seg.p2 = pi2; seg.domin = leftdom; seg.domout = rightdom; seg.epgeominfo[0].edgenr = segnr; seg.epgeominfo[0].dist = edgelengthold; seg.epgeominfo[1].edgenr = segnr; seg.epgeominfo[1].dist = edgelength; seg.singedge_left = hpref_left; seg.singedge_right = hpref_right; mesh.AddSegment (seg); } oldmark = mark; edgelengthold = edgelength; j++; } pold = p; lold = l; } }