Exemple #1
0
	/*
	int OpenModel(std::string modelName){
		return _imp->OpenModel(modelName);
	}
	std::vector<std::pair<ShapeType, int> > getList(int model_no){
		return _imp->getList(model_no);
	}*/
	Feature* generate(std::vector< std::pair<ShapeType, int> >:: iterator iter, int model_no, Imp* imp){
		Feature* fOld = manager[iter->first];
		if(fOld == NULL){
			char msg[100]; 
			sprintf(msg, "(%d)", iter->first);
			throw xbug("Type " + std::string(msg) + " can't be created");
		}
		Feature* f = fOld->clone();
		f->setAttribute(model_no, iter->second, imp);
		return f;
		/*
		switch(iter->first){
			case SLOT:
				return new SlotFeature(model_no, iter->second, _imp) ;
			case HOLE:
				return new HoleFeature(model_no, iter->second, _imp) ;
			case CUTOUT:
				return new CutoutFeature(model_no, iter->second, _imp) ;
			case IRREGULAR:
				return new IrregularFeature(model_no, iter->second, _imp) ;
			case SPECIAL:
				return new SpecialFeature(model_no, iter->second, _imp) ;
			case TRIANGLE:
				return new TriangleFeature(model_no, iter->second, _imp);
			default:
				return NULL;
		}*/
	}
Exemple #2
0
    void testIntersect()
    {
        Feature a;
        a.setStart(10);
        a.setEnd(100);
        a.setAttribute("attr1", "val1");
        a.setAttribute("attr2", "val2a");


        Feature b;
        b.setStart(90);
        b.setEnd(200);
        a.setAttribute("attr1", "val1");
        a.setAttribute("attr2", "val2b");
        b.setAttribute("attr3", "val3");
        b.setAttribute("attr4", "val4");

        Feature c = a.intersect(b);

        FeatureAttributeMap const& attrs = c.getAttributes();
        CPPUNIT_ASSERT_EQUAL((size_t)4, attrs.size());

        FeatureAttributeMap::const_iterator attrs_iter = attrs.begin();
        FeatureAttributeMap::const_iterator attrs_end = attrs.end();
        size_t totalValues = 0;
        while (attrs_iter != attrs_end)
        {
            std::string const& name = attrs_iter->first;
            FeatureAttributeValues const& values = attrs_iter->second;
            size_t nValues = values.size();
            totalValues += nValues;

            if (name == "attr1")
                CPPUNIT_ASSERT_EQUAL((size_t)1, nValues);
            else if (name == "attr2")
                CPPUNIT_ASSERT_EQUAL((size_t)2, nValues);
            else if (name == "attr3")
                CPPUNIT_ASSERT_EQUAL((size_t)1, nValues);
            else if (name == "attr4")
                CPPUNIT_ASSERT_EQUAL((size_t)1, nValues);
            ++attrs_iter;
        }
        CPPUNIT_ASSERT_EQUAL((size_t)5, totalValues);
    }