/[escript]/trunk/escript/test/DataTagged/DataTaggedTestCase.cpp
ViewVC logotype

Diff of /trunk/escript/test/DataTagged/DataTaggedTestCase.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 510 by jgs, Fri Feb 10 04:00:50 2006 UTC revision 515 by jgs, Mon Feb 13 05:59:51 2006 UTC
# Line 2951  void DataTaggedTestCase::testCopyConstru Line 2951  void DataTaggedTestCase::testCopyConstru
2951    
2952  }  }
2953    
2954    void DataTaggedTestCase::testGetSlice() {
2955    
2956      cout << endl;
2957    
2958      {
2959    
2960        cout << "\tTest slicing default DataTagged." << endl;
2961    
2962        DataTagged myData;
2963    
2964        DataArrayView::RegionType region;
2965    
2966        DataAbstract* slicedDefault = myData.getSlice(region);
2967    
2968        // cout << slicedDefault->toString() << endl;
2969    
2970        const DataTagged* myDataSliced=dynamic_cast<const DataTagged*>(slicedDefault);
2971    
2972        assert(myDataSliced->getTagLookup().size()==0);
2973    
2974        assert(myDataSliced->getLength()==1);
2975    
2976        DataArrayView myDataView = myDataSliced->getDefaultValue();
2977        assert(!myDataView.isEmpty());
2978        assert(myDataView.getOffset()==0);
2979        assert(myDataView.getRank()==0);
2980        assert(myDataView.noValues()==1);
2981        assert(myDataView.getShape().size()==0);
2982        assert(myDataView()==0.0);
2983    
2984      }
2985    
2986      {
2987    
2988        cout << "\tTest slicing DataTagged with rank 1 default value only." << endl;
2989    
2990        DataArrayView::ShapeType viewShape;
2991        viewShape.push_back(3);
2992    
2993        DataTagged::TagListType keys;
2994    
2995        DataTagged::ValueListType values;
2996    
2997        DataArrayView::ValueType viewData(3);
2998        for (int i=0;i<viewShape[0];i++) {
2999          viewData[i]=i;
3000        }
3001        DataArrayView myView(viewData,viewShape);
3002    
3003        DataTagged myData(keys,values,myView,FunctionSpace());
3004    
3005        // full slice
3006    
3007        std::pair<int, int> region_element;
3008        region_element.first=0;
3009        region_element.second=3;
3010        DataArrayView::RegionType region;
3011        region.push_back(region_element);
3012    
3013        DataAbstract* slicedDefault = myData.getSlice(region);
3014    
3015        //cout << slicedDefault->toString() << endl;
3016    
3017        const DataTagged* myDataSliced=dynamic_cast<const DataTagged*>(slicedDefault);
3018    
3019        assert(myDataSliced->getTagLookup().size()==0);
3020    
3021        assert(myDataSliced->getLength()==3);
3022    
3023        DataArrayView myDataView = myDataSliced->getDefaultValue();
3024        assert(!myDataView.isEmpty());
3025        assert(myDataView.getOffset()==0);
3026        assert(myDataView.getRank()==1);
3027        assert(myDataView.noValues()==3);
3028        assert(myDataView.getShape().size()==1);
3029        assert(myDataView(0)==0.0);
3030        assert(myDataView(1)==1.0);
3031        assert(myDataView(2)==2.0);
3032    
3033        // scalar slice
3034    
3035        region.clear();
3036        region_element.first=0;
3037        region_element.second=0;
3038        region.push_back(region_element);
3039    
3040        slicedDefault = myData.getSlice(region);
3041    
3042        //cout << slicedDefault->toString() << endl;
3043    
3044        myDataSliced=dynamic_cast<const DataTagged*>(slicedDefault);
3045    
3046        assert(myDataSliced->getTagLookup().size()==0);
3047    
3048        assert(myDataSliced->getLength()==1);
3049    
3050        myDataView = myDataSliced->getDefaultValue();
3051        assert(!myDataView.isEmpty());
3052        assert(myDataView.getOffset()==0);
3053        assert(myDataView.getRank()==0);
3054        assert(myDataView.noValues()==1);
3055        assert(myDataView.getShape().size()==0);
3056        assert(myDataView()==0.0);
3057    
3058      }
3059    
3060      {
3061    
3062        cout << "\tTest slicing DataTagged with rank 3 default value only." << endl;
3063    
3064        DataArrayView::ShapeType viewShape;
3065        viewShape.push_back(3);
3066        viewShape.push_back(3);
3067        viewShape.push_back(3);
3068    
3069        DataTagged::TagListType keys;
3070    
3071        DataTagged::ValueListType values;
3072    
3073        DataArrayView::ValueType viewData(27);
3074        for (int i=0;i<viewData.size();i++) {
3075          viewData[i]=i;
3076        }
3077        DataArrayView myView(viewData,viewShape);
3078    
3079        DataTagged myData(keys,values,myView,FunctionSpace());
3080    
3081        //cout << myData.toString() << endl;
3082    
3083        // full slice
3084    
3085        std::pair<int, int> region_element;
3086        region_element.first=0;
3087        region_element.second=3;
3088        DataArrayView::RegionType region;
3089        region.push_back(region_element);
3090        region.push_back(region_element);
3091        region.push_back(region_element);
3092    
3093        DataAbstract* slicedDefault = myData.getSlice(region);
3094    
3095        //cout << slicedDefault->toString() << endl;
3096    
3097        const DataTagged* myDataSliced=dynamic_cast<const DataTagged*>(slicedDefault);
3098    
3099        assert(myDataSliced->getTagLookup().size()==0);
3100    
3101        assert(myDataSliced->getLength()==27);
3102    
3103        DataArrayView myDataView = myDataSliced->getDefaultValue();
3104        assert(!myDataView.isEmpty());
3105        assert(myDataView.getOffset()==0);
3106        assert(myDataView.getRank()==3);
3107        assert(myDataView.noValues()==27);
3108        assert(myDataView.getShape().size()==3);
3109    
3110        // rank 1 slice
3111    
3112        region.clear();
3113        region.push_back(region_element);
3114        region_element.second=0;
3115        region.push_back(region_element);
3116        region.push_back(region_element);
3117    
3118        slicedDefault = myData.getSlice(region);
3119    
3120        //cout << slicedDefault->toString() << endl;
3121    
3122        myDataSliced=dynamic_cast<const DataTagged*>(slicedDefault);
3123    
3124        assert(myDataSliced->getTagLookup().size()==0);
3125    
3126        assert(myDataSliced->getLength()==3);
3127    
3128        myDataView = myDataSliced->getDefaultValue();
3129        assert(!myDataView.isEmpty());
3130        assert(myDataView.getOffset()==0);
3131        assert(myDataView.getRank()==1);
3132        assert(myDataView.noValues()==3);
3133        assert(myDataView.getShape().size()==1);
3134        assert(myDataView(0)==0.0);
3135        assert(myDataView(1)==1.0);
3136        assert(myDataView(2)==2.0);
3137    
3138        // scalar slice
3139    
3140        region.clear();
3141        region_element.first=2;
3142        region_element.second=2;
3143        region.push_back(region_element);
3144        region.push_back(region_element);
3145        region.push_back(region_element);
3146    
3147        slicedDefault = myData.getSlice(region);
3148    
3149        //cout << slicedDefault->toString() << endl;
3150    
3151        myDataSliced=dynamic_cast<const DataTagged*>(slicedDefault);
3152    
3153        assert(myDataSliced->getTagLookup().size()==0);
3154    
3155        assert(myDataSliced->getLength()==1);
3156    
3157        myDataView = myDataSliced->getDefaultValue();
3158        assert(!myDataView.isEmpty());
3159        assert(myDataView.getOffset()==0);
3160        assert(myDataView.getRank()==0);
3161        assert(myDataView.noValues()==1);
3162        assert(myDataView.getShape().size()==0);
3163        assert(myDataView()==26);
3164    
3165      }
3166    
3167      {
3168    
3169        cout << "\tTest slicing DataTagged with scalar values and one tag." << endl;
3170    
3171        DataTagged::TagListType keys;
3172        keys.push_back(1);
3173    
3174        DataTagged::ValueListType values;
3175    
3176        DataArrayView::ShapeType viewShape;
3177    
3178        // default value
3179        DataArrayView::ValueType viewData(1);
3180        viewData[0]=0.0;
3181        DataArrayView myView(viewData,viewShape);
3182    
3183        // value for tag "1"
3184        DataArray eOne(myView);
3185        eOne.getView()()=1.0;
3186        values.push_back(eOne.getView());
3187    
3188        DataTagged myData(keys,values,myView,FunctionSpace());
3189    
3190        //cout << myData.toString() << endl;
3191    
3192        // full slice
3193    
3194        DataArrayView::RegionType region;
3195    
3196        DataAbstract* slicedDefault = myData.getSlice(region);
3197    
3198        //cout << slicedDefault->toString() << endl;
3199    
3200        const DataTagged* myDataSliced=dynamic_cast<const DataTagged*>(slicedDefault);
3201    
3202        assert(myDataSliced->getTagLookup().size()==1);
3203    
3204        assert(myDataSliced->getLength()==2);
3205    
3206        DataArrayView myDataView = myDataSliced->getDefaultValue();
3207        assert(!myDataView.isEmpty());
3208        assert(myDataView.getOffset()==0);
3209        assert(myDataView.getRank()==0);
3210        assert(myDataView.noValues()==1);
3211        assert(myDataView.getShape().size()==0);
3212        assert(myDataView()==0);
3213    
3214        myDataView = myDataSliced->getDataPointByTag(1);
3215        assert(!myDataView.isEmpty());
3216        assert(myDataView.getOffset()==1);
3217        assert(myDataView.getRank()==0);
3218        assert(myDataView.noValues()==1);
3219        assert(myDataView.getShape().size()==0);
3220        assert(myDataView()==1);
3221    
3222      }
3223    
3224      {
3225    
3226        cout << "\tTest slicing DataTagged with rank 1 values and one tag." << endl;
3227    
3228        DataArrayView::ShapeType viewShape;
3229        viewShape.push_back(3);
3230    
3231        DataTagged::TagListType keys;
3232        keys.push_back(1);
3233    
3234        DataTagged::ValueListType values;
3235    
3236        // default value
3237        DataArrayView::ValueType viewData(3);
3238        for (int i=0;i<viewShape[0];i++) {
3239          viewData[i]=i;
3240        }
3241        DataArrayView myView(viewData,viewShape);
3242    
3243        // value for tag "1"
3244        DataArray eOne(myView);
3245        for (int i=0;i<eOne.getView().getShape()[0];i++) {
3246          eOne.getView()(i)=i+3.0;
3247        }
3248        values.push_back(eOne.getView());
3249    
3250        DataTagged myData(keys,values,myView,FunctionSpace());
3251    
3252        //cout << myData.toString() << endl;
3253    
3254        // full slice
3255    
3256        std::pair<int, int> region_element;
3257        region_element.first=0;
3258        region_element.second=3;
3259        DataArrayView::RegionType region;
3260        region.push_back(region_element);
3261    
3262        DataAbstract* slicedDefault = myData.getSlice(region);
3263    
3264        //cout << slicedDefault->toString() << endl;
3265    
3266        const DataTagged* myDataSliced=dynamic_cast<const DataTagged*>(slicedDefault);
3267    
3268        assert(myDataSliced->getTagLookup().size()==1);
3269    
3270        assert(myDataSliced->getLength()==6);
3271    
3272        DataArrayView myDataView = myDataSliced->getDefaultValue();
3273        assert(!myDataView.isEmpty());
3274        assert(myDataView.getOffset()==0);
3275        assert(myDataView.getRank()==1);
3276        assert(myDataView.noValues()==3);
3277        assert(myDataView.getShape().size()==1);
3278        assert(myDataView(0)==0);
3279        assert(myDataView(1)==1);
3280        assert(myDataView(2)==2);
3281    
3282        myDataView = myDataSliced->getDataPointByTag(1);
3283        assert(!myDataView.isEmpty());
3284        assert(myDataView.getOffset()==3);
3285        assert(myDataView.getRank()==1);
3286        assert(myDataView.noValues()==3);
3287        assert(myDataView.getShape().size()==1);
3288        assert(myDataView(0)==3);
3289        assert(myDataView(1)==4);
3290        assert(myDataView(2)==5);
3291    
3292        // scalar slice
3293    
3294        region_element.first=1;
3295        region_element.second=1;
3296        region.clear();
3297        region.push_back(region_element);
3298    
3299        slicedDefault = myData.getSlice(region);
3300    
3301        //cout << slicedDefault->toString() << endl;
3302    
3303        myDataSliced=dynamic_cast<const DataTagged*>(slicedDefault);
3304    
3305        assert(myDataSliced->getTagLookup().size()==1);
3306    
3307        assert(myDataSliced->getLength()==2);
3308    
3309        myDataView = myDataSliced->getDefaultValue();
3310        assert(!myDataView.isEmpty());
3311        assert(myDataView.getOffset()==0);
3312        assert(myDataView.getRank()==0);
3313        assert(myDataView.noValues()==1);
3314        assert(myDataView.getShape().size()==0);
3315        assert(myDataView()==1);
3316    
3317        myDataView = myDataSliced->getDataPointByTag(1);
3318        assert(!myDataView.isEmpty());
3319        assert(myDataView.getOffset()==1);
3320        assert(myDataView.getRank()==0);
3321        assert(myDataView.noValues()==1);
3322        assert(myDataView.getShape().size()==0);
3323        assert(myDataView()==4);
3324    
3325      }
3326    
3327    }
3328    
3329    void DataTaggedTestCase::testSetSlice() {
3330    
3331      cout << endl;
3332    
3333      {
3334    
3335      }
3336    
3337    }
3338    
3339  TestSuite* DataTaggedTestCase::suite ()  TestSuite* DataTaggedTestCase::suite ()
3340  {  {
3341    //    //
# Line 2962  TestSuite* DataTaggedTestCase::suite () Line 3347  TestSuite* DataTaggedTestCase::suite ()
3347    testSuite->addTest (new TestCaller< DataTaggedTestCase>("testCopyConstructors",&DataTaggedTestCase::testCopyConstructors));    testSuite->addTest (new TestCaller< DataTaggedTestCase>("testCopyConstructors",&DataTaggedTestCase::testCopyConstructors));
3348    testSuite->addTest (new TestCaller< DataTaggedTestCase>("testOperations",&DataTaggedTestCase::testOperations));    testSuite->addTest (new TestCaller< DataTaggedTestCase>("testOperations",&DataTaggedTestCase::testOperations));
3349    testSuite->addTest (new TestCaller< DataTaggedTestCase>("testReshape",&DataTaggedTestCase::testReshape));    testSuite->addTest (new TestCaller< DataTaggedTestCase>("testReshape",&DataTaggedTestCase::testReshape));
3350      testSuite->addTest (new TestCaller< DataTaggedTestCase>("testGetSlice",&DataTaggedTestCase::testGetSlice));
3351      testSuite->addTest (new TestCaller< DataTaggedTestCase>("testSetSlice",&DataTaggedTestCase::testSetSlice));
3352    return testSuite;    return testSuite;
3353  }  }

Legend:
Removed from v.510  
changed lines
  Added in v.515

  ViewVC Help
Powered by ViewVC 1.1.26