void test_load_xml() { QDomDocument doc; xml2domElement( "rulebasedrenderer_simple.xml", doc ); QDomElement elem = doc.documentElement(); QgsRuleBasedRendererV2* r = static_cast<QgsRuleBasedRendererV2*>( QgsRuleBasedRendererV2::create( elem ) ); QVERIFY( r ); check_tree_valid( r->rootRule() ); delete r; }
QgsFeatureRendererV2* QgsRuleBasedRendererV2::clone() { QgsSymbolV2* s = mDefaultSymbol->clone(); QgsRuleBasedRendererV2* r = new QgsRuleBasedRendererV2( s ); r->mRules = mRules; r->setUsingSymbolLevels( usingSymbolLevels() ); r->setUsingFirstRule( usingFirstRule() ); setUsingFirstRule( usingFirstRule() ); setUsingSymbolLevels( usingSymbolLevels() ); return r; }
void test_clone_ruleKey() { RRule* rootRule = new RRule( 0 ); RRule* sub1Rule = new RRule( 0, 0, 0, "fld > 1" ); RRule* sub2Rule = new RRule( 0, 0, 0, "fld > 2" ); RRule* sub3Rule = new RRule( 0, 0, 0, "fld > 3" ); rootRule->appendChild( sub1Rule ); sub1Rule->appendChild( sub2Rule ); sub2Rule->appendChild( sub3Rule ); QgsRuleBasedRendererV2 r( rootRule ); QgsRuleBasedRendererV2* clone = static_cast<QgsRuleBasedRendererV2*>( r.clone() ); RRule* cloneRootRule = clone->rootRule(); RRule* cloneSub1Rule = cloneRootRule->children()[0]; RRule* cloneSub2Rule = cloneSub1Rule->children()[0]; RRule* cloneSub3Rule = cloneSub2Rule->children()[0]; QCOMPARE( rootRule->ruleKey(), cloneRootRule->ruleKey() ); QCOMPARE( sub1Rule->ruleKey(), cloneSub1Rule->ruleKey() ); QCOMPARE( sub2Rule->ruleKey(), cloneSub2Rule->ruleKey() ); QCOMPARE( sub3Rule->ruleKey(), cloneSub3Rule->ruleKey() ); delete clone; }