bool TestMouseManager::testSimple() { Handle<Layer> rootLayer(new Layer()); Handle<Renderable> target1(new Renderable()); rootLayer->addChild(target1); rootLayer->setInteractive(true); target1->setInteractive(true); target1->setSize(50, 50); target1->setPosition(50, 50); TestListener targetListener; target1->addEventListener(MOUSE_DOWN, &targetListener); TestListener layerListener; rootLayer->addEventListener(MOUSE_DOWN, &layerListener); MouseManager *manager = MouseManager::getManager(); manager->setRootLayer(rootLayer); manager->onMouseDown(LEFT_BUTTON, 0, 0); assert(NULL == targetListener.lastEvent.get()); assert(NULL == layerListener.lastEvent.get()); manager->onMouseDown(LEFT_BUTTON, 51, 52); assert(NULL != targetListener.lastEvent.get()); am_equals(1, targetListener.lastEvent->getLocalMouseX()); am_equals(2, targetListener.lastEvent->getLocalMouseY()); assert(NULL != layerListener.lastEvent.get()); assert(layerListener.lastEvent->getEventTarget() == target1); am_equals(1, layerListener.lastEvent->getLocalMouseX()); am_equals(2, layerListener.lastEvent->getLocalMouseY()); return true; }
JNIEXPORT void JNICALL Java_org_apache_subversion_javahl_SVNClient_diff__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2Ljava_io_OutputStream_2Lorg_apache_subversion_javahl_types_Depth_2Ljava_util_Collection_2ZZZZZ (JNIEnv *env, jobject jthis, jstring jtarget1, jobject jrevision1, jstring jtarget2, jobject jrevision2, jstring jrelativeToDir, jobject jstream, jobject jdepth, jobject jchangelists, jboolean jignoreAncestry, jboolean jnoDiffDeleted, jboolean jforce, jboolean jcopiesAsAdds, jboolean jignoreProps) { JNIEntry(SVNClient, diff); SVNClient *cl = SVNClient::getCppObject(jthis); if (cl == NULL) { JNIUtil::throwError(_("bad C++ this")); return; } JNIStringHolder target1(jtarget1); if (JNIUtil::isExceptionThrown()) return; Revision revision1(jrevision1); if (JNIUtil::isExceptionThrown()) return; JNIStringHolder target2(jtarget2); if (JNIUtil::isExceptionThrown()) return; Revision revision2(jrevision2); if (JNIUtil::isExceptionThrown()) return; JNIStringHolder relativeToDir(jrelativeToDir); if (JNIUtil::isExceptionThrown()) return; OutputStream dataOut(jstream); if (JNIUtil::isExceptionThrown()) return; StringArray changelists(jchangelists); if (JNIUtil::isExceptionThrown()) return; cl->diff(target1, revision1, target2, revision2, relativeToDir, dataOut, EnumMapper::toDepth(jdepth), changelists, jignoreAncestry ? true:false, jnoDiffDeleted ? true:false, jforce ? true:false, jcopiesAsAdds ? true:false, jignoreProps ? true:false); }
JNIEXPORT void JNICALL Java_org_apache_subversion_javahl_SVNClient_diffSummarize__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Lorg_apache_subversion_javahl_types_Depth_2Ljava_util_Collection_2ZLorg_apache_subversion_javahl_callback_DiffSummaryCallback_2 (JNIEnv *env, jobject jthis, jstring jtarget1, jobject jrevision1, jstring jtarget2, jobject jrevision2, jobject jdepth, jobject jchangelists, jboolean jignoreAncestry, jobject jdiffSummaryReceiver) { JNIEntry(SVNClient, diffSummarize); SVNClient *cl = SVNClient::getCppObject(jthis); if (cl == NULL) { JNIUtil::throwError(_("bad C++ this")); return; } JNIStringHolder target1(jtarget1); if (JNIUtil::isExceptionThrown()) return; Revision revision1(jrevision1); if (JNIUtil::isExceptionThrown()) return; JNIStringHolder target2(jtarget2); if (JNIUtil::isExceptionThrown()) return; Revision revision2(jrevision2); if (JNIUtil::isExceptionThrown()) return; DiffSummaryReceiver receiver(jdiffSummaryReceiver); if (JNIUtil::isExceptionThrown()) return; StringArray changelists(jchangelists); if (JNIUtil::isExceptionThrown()) return; cl->diffSummarize(target1, revision1, target2, revision2, EnumMapper::toDepth(jdepth), changelists, jignoreAncestry ? true: false, receiver); }
void julianOperatorTest() { JulianDate target1(2006, 3, 6); JulianDate target2(2006, 3, 7); JulianDate target1_(2006, 3, 6); CPPUNIT_ASSERT(!(target1 == target2)); CPPUNIT_ASSERT(target1 == target1_); CPPUNIT_ASSERT(target1 != target2); CPPUNIT_ASSERT(!(target1 != target1_)); CPPUNIT_ASSERT(target1 < target2); CPPUNIT_ASSERT(!(target1 < target1_)); CPPUNIT_ASSERT(target1 <= target1_); CPPUNIT_ASSERT(target1 <= target2); CPPUNIT_ASSERT(!(target2 <= target1)); CPPUNIT_ASSERT(target2 > target1); CPPUNIT_ASSERT(!(target1 > target2)); CPPUNIT_ASSERT(target1 >= target1_); CPPUNIT_ASSERT(target2 >= target1_); CPPUNIT_ASSERT(!(target1 >= target2)); }
size_t BVH4MB::rotate(Base* nodeID, size_t depth) { /*! nothing to rotate if we reached a leaf node. */ if (nodeID->isLeaf()) return 0; Node* parent = nodeID->node(); /*! rotate all children first */ ssei cdepth; for (size_t c=0; c<4; c++) cdepth[c] = (int)rotate(parent->child[c],depth+1); /* compute current area of all children */ ssef sizeX = parent->upper_x-parent->lower_x; ssef sizeY = parent->upper_y-parent->lower_y; ssef sizeZ = parent->upper_z-parent->lower_z; ssef childArea = sizeX*(sizeY + sizeZ) + sizeY*sizeZ; /*! transpose node bounds */ ssef plower0,plower1,plower2,plower3; transpose(parent->lower_x,parent->lower_y,parent->lower_z,ssef(zero),plower0,plower1,plower2,plower3); ssef pupper0,pupper1,pupper2,pupper3; transpose(parent->upper_x,parent->upper_y,parent->upper_z,ssef(zero),pupper0,pupper1,pupper2,pupper3); BBox<ssef> other0(plower0,pupper0), other1(plower1,pupper1), other2(plower2,pupper2), other3(plower3,pupper3); /*! Find best rotation. We pick a target child of a first child, and swap this with an other child. We perform the best such swap. */ float bestCost = pos_inf; int bestChild = -1, bestTarget = -1, bestOther = -1; for (size_t c=0; c<4; c++) { /*! ignore leaf nodes as we cannot descent into */ if (parent->child[c]->isLeaf()) continue; Node* child = parent->child[c]->node(); /*! transpose child bounds */ ssef clower0,clower1,clower2,clower3; transpose(child->lower_x,child->lower_y,child->lower_z,ssef(zero),clower0,clower1,clower2,clower3); ssef cupper0,cupper1,cupper2,cupper3; transpose(child->upper_x,child->upper_y,child->upper_z,ssef(zero),cupper0,cupper1,cupper2,cupper3); BBox<ssef> target0(clower0,cupper0), target1(clower1,cupper1), target2(clower2,cupper2), target3(clower3,cupper3); /*! put other0 at each target position */ float cost00 = halfArea3f(merge(other0 ,target1,target2,target3)); float cost01 = halfArea3f(merge(target0,other0 ,target2,target3)); float cost02 = halfArea3f(merge(target0,target1,other0 ,target3)); float cost03 = halfArea3f(merge(target0,target1,target2,other0 )); ssef cost0 = ssef(cost00,cost01,cost02,cost03); ssef min0 = vreduce_min(cost0); int pos0 = (int)__bsf(movemask(min0 == cost0)); /*! put other1 at each target position */ float cost10 = halfArea3f(merge(other1 ,target1,target2,target3)); float cost11 = halfArea3f(merge(target0,other1 ,target2,target3)); float cost12 = halfArea3f(merge(target0,target1,other1 ,target3)); float cost13 = halfArea3f(merge(target0,target1,target2,other1 )); ssef cost1 = ssef(cost10,cost11,cost12,cost13); ssef min1 = vreduce_min(cost1); int pos1 = (int)__bsf(movemask(min1 == cost1)); /*! put other2 at each target position */ float cost20 = halfArea3f(merge(other2 ,target1,target2,target3)); float cost21 = halfArea3f(merge(target0,other2 ,target2,target3)); float cost22 = halfArea3f(merge(target0,target1,other2 ,target3)); float cost23 = halfArea3f(merge(target0,target1,target2,other2 )); ssef cost2 = ssef(cost20,cost21,cost22,cost23); ssef min2 = vreduce_min(cost2); int pos2 = (int)__bsf(movemask(min2 == cost2)); /*! put other3 at each target position */ float cost30 = halfArea3f(merge(other3 ,target1,target2,target3)); float cost31 = halfArea3f(merge(target0,other3 ,target2,target3)); float cost32 = halfArea3f(merge(target0,target1,other3 ,target3)); float cost33 = halfArea3f(merge(target0,target1,target2,other3 )); ssef cost3 = ssef(cost30,cost31,cost32,cost33); ssef min3 = vreduce_min(cost3); int pos3 = (int)__bsf(movemask(min3 == cost3)); /*! find best other child */ ssef otherCost = ssef(extract<0>(min0),extract<0>(min1),extract<0>(min2),extract<0>(min3)); int pos[4] = { pos0,pos1,pos2,pos3 }; sseb valid = ssei(int(depth+1))+cdepth <= ssei(maxDepth); // only select swaps that fulfill depth constraints if (none(valid)) continue; size_t n = select_min(valid,otherCost); float cost = otherCost[n]-childArea[c]; //< increasing the original child bound is bad, decreasing good /*! accept a swap when it reduces cost and is not swapping a node with itself */ if (cost < bestCost && n != c) { bestCost = cost; bestChild = (int)c; bestOther = (int)n; bestTarget = pos[n]; } } /*! if we did not find a swap that improves the SAH then do nothing */ if (bestCost >= 0) return 1+reduce_max(cdepth); /*! perform the best found tree rotation */ Node* child = parent->child[bestChild]->node(); swap(parent,bestOther,child,bestTarget); parent->lower_x[bestChild] = reduce_min(child->lower_x); parent->lower_y[bestChild] = reduce_min(child->lower_y); parent->lower_z[bestChild] = reduce_min(child->lower_z); parent->upper_x[bestChild] = reduce_max(child->upper_x); parent->upper_y[bestChild] = reduce_max(child->upper_y); parent->upper_z[bestChild] = reduce_max(child->upper_z); parent->lower_dx[bestChild] = reduce_min(child->lower_dx); parent->lower_dy[bestChild] = reduce_min(child->lower_dy); parent->lower_dz[bestChild] = reduce_min(child->lower_dz); parent->upper_dx[bestChild] = reduce_max(child->upper_dx); parent->upper_dy[bestChild] = reduce_max(child->upper_dy); parent->upper_dz[bestChild] = reduce_max(child->upper_dz); /*! This returned depth is conservative as the child that was * pulled up in the tree could have been on the critical path. */ cdepth[bestOther]++; // bestOther was pushed down one level return 1+reduce_max(cdepth); }