2951 |
|
|
2952 |
} |
} |
2953 |
|
|
2954 |
|
void DataTaggedTestCase::testSlicing() { |
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 |
TestSuite* DataTaggedTestCase::suite () |
TestSuite* DataTaggedTestCase::suite () |
3170 |
{ |
{ |
3171 |
// |
// |
3177 |
testSuite->addTest (new TestCaller< DataTaggedTestCase>("testCopyConstructors",&DataTaggedTestCase::testCopyConstructors)); |
testSuite->addTest (new TestCaller< DataTaggedTestCase>("testCopyConstructors",&DataTaggedTestCase::testCopyConstructors)); |
3178 |
testSuite->addTest (new TestCaller< DataTaggedTestCase>("testOperations",&DataTaggedTestCase::testOperations)); |
testSuite->addTest (new TestCaller< DataTaggedTestCase>("testOperations",&DataTaggedTestCase::testOperations)); |
3179 |
testSuite->addTest (new TestCaller< DataTaggedTestCase>("testReshape",&DataTaggedTestCase::testReshape)); |
testSuite->addTest (new TestCaller< DataTaggedTestCase>("testReshape",&DataTaggedTestCase::testReshape)); |
3180 |
|
testSuite->addTest (new TestCaller< DataTaggedTestCase>("testSlicing",&DataTaggedTestCase::testSlicing)); |
3181 |
return testSuite; |
return testSuite; |
3182 |
} |
} |