13 template<mem_layout ALLOC,
bool lgBC>
14 struct LongInt2DFixtureGeneric
16 multi_arr<long,2,ALLOC,lgBC> arr;
17 LongInt2DFixtureGeneric()
20 for (
int i=0; i<10; ++i)
21 for (
int j=0; j<9; ++j)
24 ~LongInt2DFixtureGeneric() {}
27 typedef LongInt2DFixtureGeneric<ARPA_TYPE,false> LongInt2DFixture;
28 typedef LongInt2DFixtureGeneric<ARPA_TYPE,true> LongInt2DFixtureBC;
29 typedef LongInt2DFixtureGeneric<C_TYPE,false> LongInt2DFixtureCType;
30 typedef LongInt2DFixtureGeneric<C_TYPE,true> LongInt2DFixtureCTypeBC;
32 template<mem_layout ALLOC,
bool lgBC>
33 struct LongInt3DFixtureGeneric
35 multi_arr<long,3,ALLOC,lgBC> arr;
36 LongInt3DFixtureGeneric()
39 for (
int i=0; i<10; ++i)
40 for (
int j=0; j<9; ++j)
41 for (
int k=0; k<8; ++k)
42 arr[i][j][k] = i*100+j*10+k;
44 ~LongInt3DFixtureGeneric() {}
47 typedef LongInt3DFixtureGeneric<ARPA_TYPE,false> LongInt3DFixture;
48 typedef LongInt3DFixtureGeneric<ARPA_TYPE,true> LongInt3DFixtureBC;
49 typedef LongInt3DFixtureGeneric<C_TYPE,false> LongInt3DFixtureCType;
50 typedef LongInt3DFixtureGeneric<C_TYPE,true> LongInt3DFixtureCTypeBC;
52 struct RealNum3DFixture
54 multi_arr<realnum,3,ARPA_TYPE,false> arr;
59 ~RealNum3DFixture() {}
62 struct Double3DFixture
64 multi_arr<double,3,ARPA_TYPE,false> arr;
72 template<mem_layout ALLOC>
73 struct StructWithConstructor3DFixtureGeneric
81 multi_arr<a,3,ALLOC,false> arr;
82 StructWithConstructor3DFixtureGeneric()
86 ~StructWithConstructor3DFixtureGeneric() {}
89 typedef StructWithConstructor3DFixtureGeneric<ARPA_TYPE> StructWithConstructor3DFixture;
90 typedef StructWithConstructor3DFixtureGeneric<C_TYPE> StructWithConstructor3DFixtureCType;
92 template<mem_layout ALLOC,
bool lgBC>
93 struct LongInt4DFixtureGeneric
95 multi_arr<long,4,ALLOC,lgBC> arr;
96 LongInt4DFixtureGeneric()
99 for (
int i=0; i<10; ++i)
100 for (
int j=0; j<9; ++j)
101 for (
int k=0; k<8; ++k)
102 for (
int l=0; l<7; ++l)
103 arr[i][j][k][l] = i*1000+j*100+k*10+l;
105 ~LongInt4DFixtureGeneric() {}
108 typedef LongInt4DFixtureGeneric<ARPA_TYPE,false> LongInt4DFixture;
109 typedef LongInt4DFixtureGeneric<ARPA_TYPE,true> LongInt4DFixtureBC;
110 typedef LongInt4DFixtureGeneric<C_TYPE,false> LongInt4DFixtureCType;
111 typedef LongInt4DFixtureGeneric<C_TYPE,true> LongInt4DFixtureCTypeBC;
113 template<mem_layout ALLOC,
bool lgBC>
114 struct LongInt5DFixtureGeneric
116 multi_arr<long,5,ALLOC,lgBC> arr;
117 LongInt5DFixtureGeneric()
119 arr.alloc(10,9,8,7,6);
120 for (
int i=0; i<10; ++i)
121 for (
int j=0; j<9; ++j)
122 for (
int k=0; k<8; ++k)
123 for (
int l=0; l<7; ++l)
124 for (
int m=0; m<6; ++m)
125 arr[i][j][k][l][m] = i*10000+j*1000+k*100+l*10+m;
127 ~LongInt5DFixtureGeneric() {}
130 typedef LongInt5DFixtureGeneric<ARPA_TYPE,false> LongInt5DFixture;
131 typedef LongInt5DFixtureGeneric<ARPA_TYPE,true> LongInt5DFixtureBC;
132 typedef LongInt5DFixtureGeneric<C_TYPE,false> LongInt5DFixtureCType;
133 typedef LongInt5DFixtureGeneric<C_TYPE,true> LongInt5DFixtureCTypeBC;
135 template<mem_layout ALLOC,
bool lgBC>
136 struct LongInt6DFixtureGeneric
138 multi_arr<long,6,ALLOC,lgBC> arr;
139 LongInt6DFixtureGeneric()
141 arr.alloc(10,9,8,7,6,5);
142 for (
int i=0; i<10; ++i)
143 for (
int j=0; j<9; ++j)
144 for (
int k=0; k<8; ++k)
145 for (
int l=0; l<7; ++l)
146 for (
int m=0; m<6; ++m)
147 for (
int n=0; n<5; ++n)
148 arr[i][j][k][l][m][n] =
149 i*100000+j*10000+k*1000+l*100+m*10+n;
151 ~LongInt6DFixtureGeneric() {}
154 typedef LongInt6DFixtureGeneric<ARPA_TYPE,false> LongInt6DFixture;
155 typedef LongInt6DFixtureGeneric<ARPA_TYPE,true> LongInt6DFixtureBC;
156 typedef LongInt6DFixtureGeneric<C_TYPE,false> LongInt6DFixtureCType;
157 typedef LongInt6DFixtureGeneric<C_TYPE,true> LongInt6DFixtureCTypeBC;
159 struct LongInt6DFixtureExplicitReserve
161 multi_arr<long,6,ARPA_TYPE,true> arr;
162 LongInt6DFixtureExplicitReserve()
165 for (
int i=0; i<10; ++i)
168 for (
int j=0; j<9; ++j)
171 for (
int k=0; k<8; ++k)
173 arr.reserve(i,j,k,7);
174 for (
int l=0; l<7; ++l)
176 arr.reserve(i,j,k,l,6);
177 for (
int m=0; m<6; ++m)
179 arr.reserve(i,j,k,l,m,5);
187 ~LongInt6DFixtureExplicitReserve() {}
190 struct TestAllocFixture
192 TestAllocFixture() {}
193 ~TestAllocFixture() {}
196 multi_arr<long,2,ARPA_TYPE,true>
a2(2,3);
197 multi_arr<long,3,ARPA_TYPE,true> a3(2,3,4);
198 multi_arr<long,4,ARPA_TYPE,true> a4(2,3,4,5);
199 multi_arr<long,5,ARPA_TYPE,true> a5(2,3,4,5,6);
200 multi_arr<long,6,ARPA_TYPE,true> a6(2,3,4,5,6,7);
215 for (
int i=0; i<2; ++i)
216 for (
int j=0; j<3; ++j)
220 for (
int k=0; k<4; ++k)
224 for (
int l=0; l<5; ++l)
226 p4 = a4.ptr(i,j,k,l);
228 for (
int m=0; m<6; ++m)
230 p5 = a5.ptr(i,j,k,l,m);
232 for (
int n=0; n<7; ++n)
234 p6 = a6.ptr(i,j,k,l,m,n);
246 struct LongInt3DCLayoutFixture
248 multi_arr<long,3,C_TYPE,false> arr;
249 LongInt3DCLayoutFixture()
252 for (
int i=0; i<10; ++i)
253 for (
int j=0; j<10; ++j)
254 for (
int k=0; k<10; ++k)
255 arr[i][j][k] = 100*i+10*j+k;
257 ~LongInt3DCLayoutFixture() {}
258 long mytest(
const long a[][10][10])
261 for (
int i=0; i<10; ++i)
262 for (
int j=0; j<10; ++j)
263 for (
int k=0; k<10; ++k)
264 res += ( a[i][j][k] != 100*i+10*j+k );
270 template<mem_layout ALLOC>
271 struct LongInt3DCloneFixtureGeneric
273 multi_arr<long,3,ALLOC,true> arr;
274 LongInt3DCloneFixtureGeneric()
277 for (
int i=0; i<10; ++i)
280 for (
int j=0; j<i+1; ++j)
281 arr.reserve(i,j,j+1);
285 ~LongInt3DCloneFixtureGeneric() {}
288 typedef LongInt3DCloneFixtureGeneric<ARPA_TYPE> LongInt3DCloneFixture;
289 typedef LongInt3DCloneFixtureGeneric<C_TYPE> LongInt3DCloneFixtureCType;
291 template<mem_layout ALLOC>
292 struct LongInt2DEmptyDimGeneric
294 multi_arr<long,2,ALLOC,true> arr;
295 LongInt2DEmptyDimGeneric()
298 for (
int i=1; i<2; ++i)
304 ~LongInt2DEmptyDimGeneric() {}
307 typedef LongInt2DEmptyDimGeneric<ARPA_TYPE> LongInt2DEmptyDim;
308 typedef LongInt2DEmptyDimGeneric<C_TYPE> LongInt2DEmptyDimCType;
310 template<mem_layout ALLOC>
311 struct LongInt3DEmptyDimGeneric
313 multi_arr<long,3,ALLOC,true> arr;
314 LongInt3DEmptyDimGeneric()
317 for (
int i=0; i<2; ++i)
320 for (
int j=1; j<2; ++j)
327 ~LongInt3DEmptyDimGeneric() {}
330 typedef LongInt3DEmptyDimGeneric<ARPA_TYPE> LongInt3DEmptyDim;
331 typedef LongInt3DEmptyDimGeneric<C_TYPE> LongInt3DEmptyDimCType;
333 template<mem_layout ALLOC>
334 struct LongInt4DEmptyDimGeneric
336 multi_arr<long,4,ALLOC,true> arr;
337 LongInt4DEmptyDimGeneric()
340 for (
int i=0; i<2; ++i)
343 for (
int j=0; j<2; ++j)
346 for (
int k=1; k<2; ++k)
348 arr.reserve(i,j,k,2);
354 ~LongInt4DEmptyDimGeneric() {}
357 typedef LongInt4DEmptyDimGeneric<ARPA_TYPE> LongInt4DEmptyDim;
358 typedef LongInt4DEmptyDimGeneric<C_TYPE> LongInt4DEmptyDimCType;
360 template<mem_layout ALLOC>
361 struct LongInt5DEmptyDimGeneric
363 multi_arr<long,5,ALLOC,true> arr;
364 LongInt5DEmptyDimGeneric()
367 for (
int i=0; i<2; ++i)
370 for (
int j=0; j<2; ++j)
373 for (
int k=0; k<2; ++k)
375 arr.reserve(i,j,k,2);
376 for (
int l=1; l<2; ++l)
378 arr.reserve(i,j,k,l,2);
385 ~LongInt5DEmptyDimGeneric() {}
388 typedef LongInt5DEmptyDimGeneric<ARPA_TYPE> LongInt5DEmptyDim;
389 typedef LongInt5DEmptyDimGeneric<C_TYPE> LongInt5DEmptyDimCType;
391 template<mem_layout ALLOC>
392 struct LongInt6DEmptyDimGeneric
394 multi_arr<long,6,ALLOC,true> arr;
395 LongInt6DEmptyDimGeneric()
398 for (
int i=0; i<2; ++i)
401 for (
int j=0; j<2; ++j)
404 for (
int k=0; k<2; ++k)
406 arr.reserve(i,j,k,2);
407 for (
int l=0; l<2; ++l)
409 arr.reserve(i,j,k,l,2);
410 for (
int m=1; m<2; ++m)
412 arr.reserve(i,j,k,l,m,2);
420 ~LongInt6DEmptyDimGeneric() {}
423 typedef LongInt6DEmptyDimGeneric<ARPA_TYPE> LongInt6DEmptyDim;
424 typedef LongInt6DEmptyDimGeneric<C_TYPE> LongInt6DEmptyDimCType;
427 TEST_FIXTURE(LongInt2DFixture,TestIteratorPostIncrement)
434 TEST_FIXTURE(LongInt2DFixture,TestIteratorPreIncrement)
441 TEST_FIXTURE(LongInt2DFixture,TestIteratorPostDecrement)
448 TEST_FIXTURE(LongInt2DFixture,TestIteratorPreDecrement)
455 TEST_FIXTURE(LongInt2DFixture,TestIteratorAddition1)
462 TEST_FIXTURE(LongInt2DFixture,TestIteratorSubtraction1)
469 TEST_FIXTURE(LongInt2DFixture,TestIteratorAddition2)
476 TEST_FIXTURE(LongInt2DFixture,TestIteratorSubtraction2)
483 TEST_FIXTURE(LongInt2DFixture,TestIteratorAddition3)
490 TEST_FIXTURE(LongInt2DFixture,TestIteratorSubtraction3)
497 TEST_FIXTURE(LongInt2DFixture,TestIteratorBrackets)
501 CHECK_EQUAL(57,p[1]);
505 TEST_FIXTURE(LongInt2DFixture,TestIteratorComparison1)
512 TEST_FIXTURE(LongInt2DFixture,TestIteratorComparison2)
519 TEST_FIXTURE(LongInt2DFixture,TestIteratorComparison3)
526 TEST_FIXTURE(LongInt2DFixture,TestIteratorComparison4)
533 TEST_FIXTURE(LongInt2DFixture,TestIteratorComparison5)
540 TEST_FIXTURE(LongInt2DFixture,TestIteratorComparison6)
549 TEST_FIXTURE(LongInt2DFixtureBC,TestIteratorBoundsCheck)
553 CHECK_THROW(( *++p == 59 ),out_of_range);
557 TEST_FIXTURE(LongInt2DFixture,TestConstIteratorPostIncrement)
564 TEST_FIXTURE(LongInt2DFixture,TestConstIteratorPreIncrement)
571 TEST_FIXTURE(LongInt2DFixture,TestConstIteratorPostDecrement)
578 TEST_FIXTURE(LongInt2DFixture,TestConstIteratorPreDecrement)
585 TEST_FIXTURE(LongInt2DFixture,TestConstIteratorAddition1)
592 TEST_FIXTURE(LongInt2DFixture,TestConstIteratorSubtraction1)
599 TEST_FIXTURE(LongInt2DFixture,TestConstIteratorAddition2)
606 TEST_FIXTURE(LongInt2DFixture,TestConstIteratorSubtraction2)
613 TEST_FIXTURE(LongInt2DFixture,TestConstIteratorAddition3)
620 TEST_FIXTURE(LongInt2DFixture,TestConstIteratorSubtraction3)
627 TEST_FIXTURE(LongInt2DFixture,TestConstIteratorBrackets)
631 CHECK_EQUAL(57,p[1]);
634 TEST_FIXTURE(LongInt2DFixture,TestConstIteratorComparison1)
641 TEST_FIXTURE(LongInt2DFixture,TestConstIteratorComparison2)
648 TEST_FIXTURE(LongInt2DFixture,TestConstIteratorComparison3)
655 TEST_FIXTURE(LongInt2DFixture,TestConstIteratorComparison4)
662 TEST_FIXTURE(LongInt2DFixture,TestConstIteratorComparison5)
669 TEST_FIXTURE(LongInt2DFixture,TestConstIteratorComparison6)
677 TEST_FIXTURE(LongInt2DFixtureBC,TestConstIteratorBoundsCheck)
681 CHECK_THROW(( *++p == 59 ),out_of_range);
684 TEST_FIXTURE(LongInt3DFixture,TestDataEmpty)
689 CHECK_EQUAL( 0UL, arr.
size() );
690 CHECK( NULL == arr.
data() );
694 TEST_FIXTURE(LongInt3DFixture,TestFill)
697 for (
int i=0; i<10; ++i)
698 for (
int j=0; j<9; ++j)
699 for (
int k=0; k<8; ++k)
700 CHECK_EQUAL(0,arr[i][j][k]);
702 for (
int i=0; i<10; ++i)
703 for (
int j=0; j<9; ++j)
704 for (
int k=0; k<8; ++k)
705 CHECK_EQUAL(-1,arr[i][j][k]);
713 TEST_FIXTURE(LongInt3DFixtureCTypeBC,TestFillCType)
716 for (
int i=0; i<10; ++i)
717 for (
int j=0; j<9; ++j)
718 for (
int k=0; k<8; ++k)
719 CHECK_EQUAL(0.,arr[i][j][k]);
721 for (
int i=0; i<10; ++i)
722 for (
int j=0; j<9; ++j)
723 for (
int k=0; k<8; ++k)
724 CHECK_EQUAL(-1,arr[i][j][k]);
727 TEST_FIXTURE(RealNum3DFixture,TestInvalidRealNum)
730 for (
int i=0; i<10; ++i)
731 for (
int j=0; j<9; ++j)
732 for (
int k=0; k<8; ++k)
733 CHECK(
isnan(arr[i][j][k]));
738 TEST_FIXTURE(Double3DFixture,TestInvalidDouble)
741 for (
int i=0; i<10; ++i)
742 for (
int j=0; j<9; ++j)
743 for (
int k=0; k<8; ++k)
744 CHECK(
isnan(arr[i][j][k]));
750 TEST_FIXTURE(LongInt3DFixture,TestStateDo)
752 const char *fnam =
"tma.872GqS";
753 FILE *io = fopen( fnam,
"wb" );
758 io = fopen( fnam,
"rb" );
763 CHECK_EQUAL(304,arr[3][0][4]);
766 TEST_FIXTURE(LongInt3DFixtureCType,TestStateDoCType)
768 const char *fnam =
"tma.872GqS";
769 FILE *io = fopen( fnam,
"wb" );
774 io = fopen( fnam,
"rb" );
779 CHECK_EQUAL(304,arr[3][0][4]);
784 TEST_FIXTURE(LongInt2DFixture,Test2DIndexedValue)
786 CHECK_EQUAL(98,arr[9][8]);
787 CHECK_EQUAL(37,*arr.
ptr(3,7));
791 const long& q = (*carr)[7][5];
794 TEST_FIXTURE(LongInt3DFixture,Test3DIndexedValue)
796 CHECK_EQUAL(987,arr[9][8][7]);
797 CHECK_EQUAL(137,*arr.
ptr(1,3,7));
801 const long& q = (*carr)[7][5][6];
804 TEST_FIXTURE(LongInt4DFixture,Test4DIndexedValue)
806 CHECK_EQUAL(9876,arr[9][8][7][6]);
807 CHECK_EQUAL(1342,*arr.
ptr(1,3,4,2));
810 CHECK_EQUAL(4620,*p);
811 const long& q = (*carr)[7][5][6][3];
814 TEST_FIXTURE(LongInt5DFixture,Test5DIndexedValue)
816 CHECK_EQUAL(98765,arr[9][8][7][6][5]);
817 CHECK_EQUAL(10342,*arr.
ptr(1,0,3,4,2));
820 CHECK_EQUAL(46201,*p);
821 const long& q = (*carr)[7][5][6][3][2];
822 CHECK_EQUAL(75632,q);
824 TEST_FIXTURE(LongInt6DFixture,Test6DIndexedValue)
826 CHECK_EQUAL(987654,arr[9][8][7][6][5][4]);
827 CHECK_EQUAL(106423,*arr.
ptr(1,0,6,4,2,3));
830 CHECK_EQUAL(462013,*p);
831 const long& q = (*carr)[7][5][6][3][2][1];
832 CHECK_EQUAL(756321,q);
838 TEST_FIXTURE(LongInt2DFixture,Test2DAtOutOfBounds)
840 CHECK_THROW(arr.
at(m1,1),out_of_range);
841 CHECK_THROW(arr.
at(10,1),out_of_range);
842 CHECK_THROW(arr.
at(7,m1),out_of_range);
843 CHECK_THROW(arr.
at(7,9),out_of_range);
845 CHECK_THROW(carr->
at(m1,1),out_of_range);
846 CHECK_THROW(carr->
at(10,1),out_of_range);
847 CHECK_THROW(carr->
at(7,m1),out_of_range);
848 CHECK_THROW(carr->
at(7,9),out_of_range);
850 TEST_FIXTURE(LongInt3DFixture,Test3DAtOutOfBounds)
852 CHECK_THROW(arr.
at(m1,1,2),out_of_range);
853 CHECK_THROW(arr.
at(10,1,2),out_of_range);
854 CHECK_THROW(arr.
at(7,m1,3),out_of_range);
855 CHECK_THROW(arr.
at(7,9,3),out_of_range);
856 CHECK_THROW(arr.
at(7,3,m1),out_of_range);
857 CHECK_THROW(arr.
at(7,3,8),out_of_range);
859 CHECK_THROW(carr->
at(m1,1,2),out_of_range);
860 CHECK_THROW(carr->
at(10,1,2),out_of_range);
861 CHECK_THROW(carr->
at(7,m1,3),out_of_range);
862 CHECK_THROW(carr->
at(7,9,3),out_of_range);
863 CHECK_THROW(carr->
at(7,3,m1),out_of_range);
864 CHECK_THROW(carr->
at(7,3,8),out_of_range);
866 TEST_FIXTURE(LongInt4DFixture,Test4DAtOutOfBounds)
868 CHECK_THROW(arr.
at(m1,1,2,3),out_of_range);
869 CHECK_THROW(arr.
at(10,1,2,3),out_of_range);
870 CHECK_THROW(arr.
at(7,m1,3,2),out_of_range);
871 CHECK_THROW(arr.
at(7,9,3,2),out_of_range);
872 CHECK_THROW(arr.
at(7,3,m1,1),out_of_range);
873 CHECK_THROW(arr.
at(7,3,8,1),out_of_range);
874 CHECK_THROW(arr.
at(7,3,1,m1),out_of_range);
875 CHECK_THROW(arr.
at(7,3,1,7),out_of_range);
877 CHECK_THROW(carr->
at(m1,1,2,3),out_of_range);
878 CHECK_THROW(carr->
at(10,1,2,3),out_of_range);
879 CHECK_THROW(carr->
at(7,m1,3,2),out_of_range);
880 CHECK_THROW(carr->
at(7,9,3,2),out_of_range);
881 CHECK_THROW(carr->
at(7,3,m1,1),out_of_range);
882 CHECK_THROW(carr->
at(7,3,8,1),out_of_range);
883 CHECK_THROW(carr->
at(7,3,1,m1),out_of_range);
884 CHECK_THROW(carr->
at(7,3,1,7),out_of_range);
886 TEST_FIXTURE(LongInt5DFixture,Test5DAtOutOfBounds)
888 CHECK_THROW(arr.
at(m1,1,2,3,4),out_of_range);
889 CHECK_THROW(arr.
at(10,1,2,3,4),out_of_range);
890 CHECK_THROW(arr.
at(7,m1,3,2,4),out_of_range);
891 CHECK_THROW(arr.
at(7,9,3,2,4),out_of_range);
892 CHECK_THROW(arr.
at(7,3,m1,1,0),out_of_range);
893 CHECK_THROW(arr.
at(7,3,8,1,0),out_of_range);
894 CHECK_THROW(arr.
at(7,3,1,m1,2),out_of_range);
895 CHECK_THROW(arr.
at(7,3,1,7,2),out_of_range);
896 CHECK_THROW(arr.
at(7,3,1,2,m1),out_of_range);
897 CHECK_THROW(arr.
at(7,3,1,2,6),out_of_range);
899 CHECK_THROW(carr->
at(m1,1,2,3,4),out_of_range);
900 CHECK_THROW(carr->
at(10,1,2,3,4),out_of_range);
901 CHECK_THROW(carr->
at(7,m1,3,2,4),out_of_range);
902 CHECK_THROW(carr->
at(7,9,3,2,4),out_of_range);
903 CHECK_THROW(carr->
at(7,3,m1,1,0),out_of_range);
904 CHECK_THROW(carr->
at(7,3,8,1,0),out_of_range);
905 CHECK_THROW(carr->
at(7,3,1,m1,2),out_of_range);
906 CHECK_THROW(carr->
at(7,3,1,7,2),out_of_range);
907 CHECK_THROW(carr->
at(7,3,1,2,m1),out_of_range);
908 CHECK_THROW(carr->
at(7,3,1,2,6),out_of_range);
910 TEST_FIXTURE(LongInt6DFixture,Test6DAtOutOfBounds)
912 CHECK_THROW(arr.
at(m1,1,2,3,4,0),out_of_range);
913 CHECK_THROW(arr.
at(10,1,2,3,4,0),out_of_range);
914 CHECK_THROW(arr.
at(7,m1,3,2,4,1),out_of_range);
915 CHECK_THROW(arr.
at(7,9,3,2,4,1),out_of_range);
916 CHECK_THROW(arr.
at(7,3,m1,1,0,2),out_of_range);
917 CHECK_THROW(arr.
at(7,3,8,1,0,2),out_of_range);
918 CHECK_THROW(arr.
at(7,3,1,m1,2,0),out_of_range);
919 CHECK_THROW(arr.
at(7,3,1,7,2,0),out_of_range);
920 CHECK_THROW(arr.
at(7,4,1,2,m1,3),out_of_range);
921 CHECK_THROW(arr.
at(7,4,1,2,6,3),out_of_range);
922 CHECK_THROW(arr.
at(7,4,1,2,3,m1),out_of_range);
923 CHECK_THROW(arr.
at(7,4,1,2,3,5),out_of_range);
925 CHECK_THROW(carr->
at(m1,1,2,3,4,0),out_of_range);
926 CHECK_THROW(carr->
at(10,1,2,3,4,0),out_of_range);
927 CHECK_THROW(carr->
at(7,m1,3,2,4,1),out_of_range);
928 CHECK_THROW(carr->
at(7,9,3,2,4,1),out_of_range);
929 CHECK_THROW(carr->
at(7,3,m1,1,0,2),out_of_range);
930 CHECK_THROW(carr->
at(7,3,8,1,0,2),out_of_range);
931 CHECK_THROW(carr->
at(7,3,1,m1,2,0),out_of_range);
932 CHECK_THROW(carr->
at(7,3,1,7,2,0),out_of_range);
933 CHECK_THROW(carr->
at(7,4,1,2,m1,3),out_of_range);
934 CHECK_THROW(carr->
at(7,4,1,2,6,3),out_of_range);
935 CHECK_THROW(carr->
at(7,4,1,2,3,m1),out_of_range);
936 CHECK_THROW(carr->
at(7,4,1,2,3,5),out_of_range);
939 TEST_FIXTURE(LongInt2DFixtureBC,Test2DOutOfBounds)
941 CHECK_THROW(arr[m1][1],out_of_range);
942 CHECK_THROW(arr[10][1],out_of_range);
943 CHECK_THROW(arr[7][m1],out_of_range);
944 CHECK_THROW(arr[7][9],out_of_range);
945 CHECK_THROW(arr.
ptr(m1,1),out_of_range);
946 CHECK_THROW(arr.
ptr(10,1),out_of_range);
948 CHECK_THROW((*carr)[m1][1],out_of_range);
949 CHECK_THROW((*carr)[10][1],out_of_range);
950 CHECK_THROW((*carr)[7][m1],out_of_range);
951 CHECK_THROW((*carr)[7][9],out_of_range);
953 TEST_FIXTURE(LongInt3DFixtureBC,Test3DOutOfBounds)
955 CHECK_THROW(arr[m1][1][2],out_of_range);
956 CHECK_THROW(arr[10][1][2],out_of_range);
957 CHECK_THROW(arr[7][m1][3],out_of_range);
958 CHECK_THROW(arr[7][9][3],out_of_range);
959 CHECK_THROW(arr[7][3][m1],out_of_range);
960 CHECK_THROW(arr[7][3][8],out_of_range);
961 CHECK_THROW(arr.
ptr(m1,1,2),out_of_range);
962 CHECK_THROW(arr.
ptr(10,1,2),out_of_range);
963 CHECK_THROW(arr.
ptr(7,m1,3),out_of_range);
964 CHECK_THROW(arr.
ptr(7,9,3),out_of_range);
966 CHECK_THROW((*carr)[m1][1][2],out_of_range);
967 CHECK_THROW((*carr)[10][1][2],out_of_range);
968 CHECK_THROW((*carr)[7][m1][3],out_of_range);
969 CHECK_THROW((*carr)[7][9][3],out_of_range);
970 CHECK_THROW((*carr)[7][3][m1],out_of_range);
971 CHECK_THROW((*carr)[7][3][8],out_of_range);
973 TEST_FIXTURE(LongInt4DFixtureBC,Test4DOutOfBounds)
975 CHECK_THROW(arr[m1][1][2][3],out_of_range);
976 CHECK_THROW(arr[10][1][2][3],out_of_range);
977 CHECK_THROW(arr[7][m1][3][2],out_of_range);
978 CHECK_THROW(arr[7][9][3][2],out_of_range);
979 CHECK_THROW(arr[7][3][m1][1],out_of_range);
980 CHECK_THROW(arr[7][3][8][1],out_of_range);
981 CHECK_THROW(arr[7][3][1][m1],out_of_range);
982 CHECK_THROW(arr[7][3][1][7],out_of_range);
983 CHECK_THROW(arr.
ptr(m1,1,2,3),out_of_range);
984 CHECK_THROW(arr.
ptr(10,1,2,3),out_of_range);
985 CHECK_THROW(arr.
ptr(7,m1,3,2),out_of_range);
986 CHECK_THROW(arr.
ptr(7,9,3,2),out_of_range);
987 CHECK_THROW(arr.
ptr(7,3,m1,1),out_of_range);
988 CHECK_THROW(arr.
ptr(7,3,8,1),out_of_range);
990 CHECK_THROW((*carr)[m1][1][2][3],out_of_range);
991 CHECK_THROW((*carr)[10][1][2][3],out_of_range);
992 CHECK_THROW((*carr)[7][m1][3][2],out_of_range);
993 CHECK_THROW((*carr)[7][9][3][2],out_of_range);
994 CHECK_THROW((*carr)[7][3][m1][1],out_of_range);
995 CHECK_THROW((*carr)[7][3][8][1],out_of_range);
996 CHECK_THROW((*carr)[7][3][1][m1],out_of_range);
997 CHECK_THROW((*carr)[7][3][1][7],out_of_range);
999 TEST_FIXTURE(LongInt5DFixtureBC,Test5DOutOfBounds)
1001 CHECK_THROW(arr[m1][1][2][3][4],out_of_range);
1002 CHECK_THROW(arr[10][1][2][3][4],out_of_range);
1003 CHECK_THROW(arr[7][m1][3][2][4],out_of_range);
1004 CHECK_THROW(arr[7][9][3][2][4],out_of_range);
1005 CHECK_THROW(arr[7][3][m1][1][0],out_of_range);
1006 CHECK_THROW(arr[7][3][8][1][0],out_of_range);
1007 CHECK_THROW(arr[7][3][1][m1][2],out_of_range);
1008 CHECK_THROW(arr[7][3][1][7][2],out_of_range);
1009 CHECK_THROW(arr[7][3][1][2][m1],out_of_range);
1010 CHECK_THROW(arr[7][3][1][2][6],out_of_range);
1011 CHECK_THROW(arr.
ptr(m1,1,2,3,4),out_of_range);
1012 CHECK_THROW(arr.
ptr(10,1,2,3,4),out_of_range);
1013 CHECK_THROW(arr.
ptr(7,m1,3,2,4),out_of_range);
1014 CHECK_THROW(arr.
ptr(7,9,3,2,4),out_of_range);
1015 CHECK_THROW(arr.
ptr(7,3,m1,1,0),out_of_range);
1016 CHECK_THROW(arr.
ptr(7,3,8,1,0),out_of_range);
1017 CHECK_THROW(arr.
ptr(7,3,1,m1,2),out_of_range);
1018 CHECK_THROW(arr.
ptr(7,3,1,7,2),out_of_range);
1020 CHECK_THROW((*carr)[m1][1][2][3][4],out_of_range);
1021 CHECK_THROW((*carr)[10][1][2][3][4],out_of_range);
1022 CHECK_THROW((*carr)[7][m1][3][2][4],out_of_range);
1023 CHECK_THROW((*carr)[7][9][3][2][4],out_of_range);
1024 CHECK_THROW((*carr)[7][3][m1][1][0],out_of_range);
1025 CHECK_THROW((*carr)[7][3][8][1][0],out_of_range);
1026 CHECK_THROW((*carr)[7][3][1][m1][2],out_of_range);
1027 CHECK_THROW((*carr)[7][3][1][7][2],out_of_range);
1028 CHECK_THROW((*carr)[7][3][1][2][m1],out_of_range);
1029 CHECK_THROW((*carr)[7][3][1][2][6],out_of_range);
1031 TEST_FIXTURE(LongInt6DFixtureBC,Test6DOutOfBounds)
1033 CHECK_THROW(arr[m1][1][2][3][4][0],out_of_range);
1034 CHECK_THROW(arr[10][1][2][3][4][0],out_of_range);
1035 CHECK_THROW(arr[7][m1][3][2][4][1],out_of_range);
1036 CHECK_THROW(arr[7][9][3][2][4][1],out_of_range);
1037 CHECK_THROW(arr[7][3][m1][1][0][2],out_of_range);
1038 CHECK_THROW(arr[7][3][8][1][0][2],out_of_range);
1039 CHECK_THROW(arr[7][3][1][m1][2][0],out_of_range);
1040 CHECK_THROW(arr[7][3][1][7][2][0],out_of_range);
1041 CHECK_THROW(arr[7][4][1][2][m1][3],out_of_range);
1042 CHECK_THROW(arr[7][4][1][2][6][3],out_of_range);
1043 CHECK_THROW(arr[7][4][1][2][3][m1],out_of_range);
1044 CHECK_THROW(arr[7][4][1][2][3][5],out_of_range);
1045 CHECK_THROW(arr.
ptr(m1,1,2,3,4,0),out_of_range);
1046 CHECK_THROW(arr.
ptr(10,1,2,3,4,0),out_of_range);
1047 CHECK_THROW(arr.
ptr(7,m1,3,2,4,1),out_of_range);
1048 CHECK_THROW(arr.
ptr(7,9,3,2,4,1),out_of_range);
1049 CHECK_THROW(arr.
ptr(7,3,m1,1,0,2),out_of_range);
1050 CHECK_THROW(arr.
ptr(7,3,8,1,0,2),out_of_range);
1051 CHECK_THROW(arr.
ptr(7,3,1,m1,2,0),out_of_range);
1052 CHECK_THROW(arr.
ptr(7,3,1,7,2,0),out_of_range);
1053 CHECK_THROW(arr.
ptr(7,4,1,2,m1,3),out_of_range);
1054 CHECK_THROW(arr.
ptr(7,4,1,2,6,3),out_of_range);
1056 CHECK_THROW((*carr)[m1][1][2][3][4][0],out_of_range);
1057 CHECK_THROW((*carr)[10][1][2][3][4][0],out_of_range);
1058 CHECK_THROW((*carr)[7][m1][3][2][4][1],out_of_range);
1059 CHECK_THROW((*carr)[7][9][3][2][4][1],out_of_range);
1060 CHECK_THROW((*carr)[7][3][m1][1][0][2],out_of_range);
1061 CHECK_THROW((*carr)[7][3][8][1][0][2],out_of_range);
1062 CHECK_THROW((*carr)[7][3][1][m1][2][0],out_of_range);
1063 CHECK_THROW((*carr)[7][3][1][7][2][0],out_of_range);
1064 CHECK_THROW((*carr)[7][4][1][2][m1][3],out_of_range);
1065 CHECK_THROW((*carr)[7][4][1][2][6][3],out_of_range);
1066 CHECK_THROW((*carr)[7][4][1][2][3][m1],out_of_range);
1067 CHECK_THROW((*carr)[7][4][1][2][3][5],out_of_range);
1071 TEST_FIXTURE(LongInt2DFixtureCType,Test2DIndexedValueCType)
1073 CHECK_EQUAL(98,arr[9][8]);
1074 CHECK_EQUAL(37,*arr.
ptr(3,7));
1078 const long& q = (*carr)[7][5];
1081 TEST_FIXTURE(LongInt3DFixtureCType,Test3DIndexedValueCType)
1083 CHECK_EQUAL(987,arr[9][8][7]);
1084 CHECK_EQUAL(137,*arr.
ptr(1,3,7));
1087 CHECK_EQUAL(462,*p);
1088 const long& q = (*carr)[7][5][6];
1091 TEST_FIXTURE(LongInt4DFixtureCType,Test4DIndexedValueCType)
1093 CHECK_EQUAL(9876,arr[9][8][7][6]);
1094 CHECK_EQUAL(1342,*arr.
ptr(1,3,4,2));
1097 CHECK_EQUAL(4620,*p);
1098 const long& q = (*carr)[7][5][6][3];
1099 CHECK_EQUAL(7563,q);
1101 TEST_FIXTURE(LongInt5DFixtureCType,Test5DIndexedValueCType)
1103 CHECK_EQUAL(98765,arr[9][8][7][6][5]);
1104 CHECK_EQUAL(10342,*arr.
ptr(1,0,3,4,2));
1107 CHECK_EQUAL(46201,*p);
1108 const long& q = (*carr)[7][5][6][3][2];
1109 CHECK_EQUAL(75632,q);
1111 TEST_FIXTURE(LongInt6DFixtureCType,Test6DIndexedValueCType)
1113 CHECK_EQUAL(987654,arr[9][8][7][6][5][4]);
1114 CHECK_EQUAL(106423,*arr.
ptr(1,0,6,4,2,3));
1117 CHECK_EQUAL(462013,*p);
1118 const long& q = (*carr)[7][5][6][3][2][1];
1119 CHECK_EQUAL(756321,q);
1122 TEST_FIXTURE(LongInt2DFixtureCType,Test2DAtOutOfBoundsCType)
1124 CHECK_THROW(arr.
at(m1,1),out_of_range);
1125 CHECK_THROW(arr.
at(10,1),out_of_range);
1126 CHECK_THROW(arr.
at(7,m1),out_of_range);
1127 CHECK_THROW(arr.
at(7,9),out_of_range);
1129 CHECK_THROW(carr->
at(m1,1),out_of_range);
1130 CHECK_THROW(carr->
at(10,1),out_of_range);
1131 CHECK_THROW(carr->
at(7,m1),out_of_range);
1132 CHECK_THROW(carr->
at(7,9),out_of_range);
1134 TEST_FIXTURE(LongInt3DFixtureCType,Test3DAtOutOfBoundsCType)
1136 CHECK_THROW(arr.
at(m1,1,2),out_of_range);
1137 CHECK_THROW(arr.
at(10,1,2),out_of_range);
1138 CHECK_THROW(arr.
at(7,m1,3),out_of_range);
1139 CHECK_THROW(arr.
at(7,9,3),out_of_range);
1140 CHECK_THROW(arr.
at(7,3,m1),out_of_range);
1141 CHECK_THROW(arr.
at(7,3,8),out_of_range);
1143 CHECK_THROW(carr->
at(m1,1,2),out_of_range);
1144 CHECK_THROW(carr->
at(10,1,2),out_of_range);
1145 CHECK_THROW(carr->
at(7,m1,3),out_of_range);
1146 CHECK_THROW(carr->
at(7,9,3),out_of_range);
1147 CHECK_THROW(carr->
at(7,3,m1),out_of_range);
1148 CHECK_THROW(carr->
at(7,3,8),out_of_range);
1150 TEST_FIXTURE(LongInt4DFixtureCType,Test4DAtOutOfBoundsCType)
1152 CHECK_THROW(arr.
at(m1,1,2,3),out_of_range);
1153 CHECK_THROW(arr.
at(10,1,2,3),out_of_range);
1154 CHECK_THROW(arr.
at(7,m1,3,2),out_of_range);
1155 CHECK_THROW(arr.
at(7,9,3,2),out_of_range);
1156 CHECK_THROW(arr.
at(7,3,m1,1),out_of_range);
1157 CHECK_THROW(arr.
at(7,3,8,1),out_of_range);
1158 CHECK_THROW(arr.
at(7,3,1,m1),out_of_range);
1159 CHECK_THROW(arr.
at(7,3,1,7),out_of_range);
1161 CHECK_THROW(carr->
at(m1,1,2,3),out_of_range);
1162 CHECK_THROW(carr->
at(10,1,2,3),out_of_range);
1163 CHECK_THROW(carr->
at(7,m1,3,2),out_of_range);
1164 CHECK_THROW(carr->
at(7,9,3,2),out_of_range);
1165 CHECK_THROW(carr->
at(7,3,m1,1),out_of_range);
1166 CHECK_THROW(carr->
at(7,3,8,1),out_of_range);
1167 CHECK_THROW(carr->
at(7,3,1,m1),out_of_range);
1168 CHECK_THROW(carr->
at(7,3,1,7),out_of_range);
1170 TEST_FIXTURE(LongInt5DFixtureCType,Test5DAtOutOfBoundsCType)
1172 CHECK_THROW(arr.
at(m1,1,2,3,4),out_of_range);
1173 CHECK_THROW(arr.
at(10,1,2,3,4),out_of_range);
1174 CHECK_THROW(arr.
at(7,m1,3,2,4),out_of_range);
1175 CHECK_THROW(arr.
at(7,9,3,2,4),out_of_range);
1176 CHECK_THROW(arr.
at(7,3,m1,1,0),out_of_range);
1177 CHECK_THROW(arr.
at(7,3,8,1,0),out_of_range);
1178 CHECK_THROW(arr.
at(7,3,1,m1,2),out_of_range);
1179 CHECK_THROW(arr.
at(7,3,1,7,2),out_of_range);
1180 CHECK_THROW(arr.
at(7,3,1,2,m1),out_of_range);
1181 CHECK_THROW(arr.
at(7,3,1,2,6),out_of_range);
1183 CHECK_THROW(carr->
at(m1,1,2,3,4),out_of_range);
1184 CHECK_THROW(carr->
at(10,1,2,3,4),out_of_range);
1185 CHECK_THROW(carr->
at(7,m1,3,2,4),out_of_range);
1186 CHECK_THROW(carr->
at(7,9,3,2,4),out_of_range);
1187 CHECK_THROW(carr->
at(7,3,m1,1,0),out_of_range);
1188 CHECK_THROW(carr->
at(7,3,8,1,0),out_of_range);
1189 CHECK_THROW(carr->
at(7,3,1,m1,2),out_of_range);
1190 CHECK_THROW(carr->
at(7,3,1,7,2),out_of_range);
1191 CHECK_THROW(carr->
at(7,3,1,2,m1),out_of_range);
1192 CHECK_THROW(carr->
at(7,3,1,2,6),out_of_range);
1194 TEST_FIXTURE(LongInt6DFixtureCType,Test6DAtOutOfBoundsCType)
1196 CHECK_THROW(arr.
at(m1,1,2,3,4,0),out_of_range);
1197 CHECK_THROW(arr.
at(10,1,2,3,4,0),out_of_range);
1198 CHECK_THROW(arr.
at(7,m1,3,2,4,1),out_of_range);
1199 CHECK_THROW(arr.
at(7,9,3,2,4,1),out_of_range);
1200 CHECK_THROW(arr.
at(7,3,m1,1,0,2),out_of_range);
1201 CHECK_THROW(arr.
at(7,3,8,1,0,2),out_of_range);
1202 CHECK_THROW(arr.
at(7,3,1,m1,2,0),out_of_range);
1203 CHECK_THROW(arr.
at(7,3,1,7,2,0),out_of_range);
1204 CHECK_THROW(arr.
at(7,4,1,2,m1,3),out_of_range);
1205 CHECK_THROW(arr.
at(7,4,1,2,6,3),out_of_range);
1206 CHECK_THROW(arr.
at(7,4,1,2,3,m1),out_of_range);
1207 CHECK_THROW(arr.
at(7,4,1,2,3,5),out_of_range);
1209 CHECK_THROW(carr->
at(m1,1,2,3,4,0),out_of_range);
1210 CHECK_THROW(carr->
at(10,1,2,3,4,0),out_of_range);
1211 CHECK_THROW(carr->
at(7,m1,3,2,4,1),out_of_range);
1212 CHECK_THROW(carr->
at(7,9,3,2,4,1),out_of_range);
1213 CHECK_THROW(carr->
at(7,3,m1,1,0,2),out_of_range);
1214 CHECK_THROW(carr->
at(7,3,8,1,0,2),out_of_range);
1215 CHECK_THROW(carr->
at(7,3,1,m1,2,0),out_of_range);
1216 CHECK_THROW(carr->
at(7,3,1,7,2,0),out_of_range);
1217 CHECK_THROW(carr->
at(7,4,1,2,m1,3),out_of_range);
1218 CHECK_THROW(carr->
at(7,4,1,2,6,3),out_of_range);
1219 CHECK_THROW(carr->
at(7,4,1,2,3,m1),out_of_range);
1220 CHECK_THROW(carr->
at(7,4,1,2,3,5),out_of_range);
1223 TEST_FIXTURE(LongInt2DFixtureCTypeBC,Test2DOutOfBoundsCType)
1225 CHECK_THROW(arr[m1][1],out_of_range);
1226 CHECK_THROW(arr[10][1],out_of_range);
1227 CHECK_THROW(arr[7][m1],out_of_range);
1228 CHECK_THROW(arr[7][9],out_of_range);
1229 CHECK_THROW(arr.
ptr(m1,1),out_of_range);
1230 CHECK_THROW(arr.
ptr(10,1),out_of_range);
1232 CHECK_THROW((*carr)[m1][1],out_of_range);
1233 CHECK_THROW((*carr)[10][1],out_of_range);
1234 CHECK_THROW((*carr)[7][m1],out_of_range);
1235 CHECK_THROW((*carr)[7][9],out_of_range);
1237 TEST_FIXTURE(LongInt3DFixtureCTypeBC,Test3DOutOfBoundsCType)
1239 CHECK_THROW(arr[m1][1][2],out_of_range);
1240 CHECK_THROW(arr[10][1][2],out_of_range);
1241 CHECK_THROW(arr[7][m1][3],out_of_range);
1242 CHECK_THROW(arr[7][9][3],out_of_range);
1243 CHECK_THROW(arr[7][3][m1],out_of_range);
1244 CHECK_THROW(arr[7][3][8],out_of_range);
1245 CHECK_THROW(arr.
ptr(m1,1,2),out_of_range);
1246 CHECK_THROW(arr.
ptr(10,1,2),out_of_range);
1247 CHECK_THROW(arr.
ptr(7,m1,3),out_of_range);
1248 CHECK_THROW(arr.
ptr(7,9,3),out_of_range);
1250 CHECK_THROW((*carr)[m1][1][2],out_of_range);
1251 CHECK_THROW((*carr)[10][1][2],out_of_range);
1252 CHECK_THROW((*carr)[7][m1][3],out_of_range);
1253 CHECK_THROW((*carr)[7][9][3],out_of_range);
1254 CHECK_THROW((*carr)[7][3][m1],out_of_range);
1255 CHECK_THROW((*carr)[7][3][8],out_of_range);
1257 TEST_FIXTURE(LongInt4DFixtureCTypeBC,Test4DOutOfBoundsCType)
1259 CHECK_THROW(arr[m1][1][2][3],out_of_range);
1260 CHECK_THROW(arr[10][1][2][3],out_of_range);
1261 CHECK_THROW(arr[7][m1][3][2],out_of_range);
1262 CHECK_THROW(arr[7][9][3][2],out_of_range);
1263 CHECK_THROW(arr[7][3][m1][1],out_of_range);
1264 CHECK_THROW(arr[7][3][8][1],out_of_range);
1265 CHECK_THROW(arr[7][3][1][m1],out_of_range);
1266 CHECK_THROW(arr[7][3][1][7],out_of_range);
1267 CHECK_THROW(arr.
ptr(m1,1,2,3),out_of_range);
1268 CHECK_THROW(arr.
ptr(10,1,2,3),out_of_range);
1269 CHECK_THROW(arr.
ptr(7,m1,3,2),out_of_range);
1270 CHECK_THROW(arr.
ptr(7,9,3,2),out_of_range);
1271 CHECK_THROW(arr.
ptr(7,3,m1,1),out_of_range);
1272 CHECK_THROW(arr.
ptr(7,3,8,1),out_of_range);
1274 CHECK_THROW((*carr)[m1][1][2][3],out_of_range);
1275 CHECK_THROW((*carr)[10][1][2][3],out_of_range);
1276 CHECK_THROW((*carr)[7][m1][3][2],out_of_range);
1277 CHECK_THROW((*carr)[7][9][3][2],out_of_range);
1278 CHECK_THROW((*carr)[7][3][m1][1],out_of_range);
1279 CHECK_THROW((*carr)[7][3][8][1],out_of_range);
1280 CHECK_THROW((*carr)[7][3][1][m1],out_of_range);
1281 CHECK_THROW((*carr)[7][3][1][7],out_of_range);
1283 TEST_FIXTURE(LongInt5DFixtureCTypeBC,Test5DOutOfBoundsCType)
1285 CHECK_THROW(arr[m1][1][2][3][4],out_of_range);
1286 CHECK_THROW(arr[10][1][2][3][4],out_of_range);
1287 CHECK_THROW(arr[7][m1][3][2][4],out_of_range);
1288 CHECK_THROW(arr[7][9][3][2][4],out_of_range);
1289 CHECK_THROW(arr[7][3][m1][1][0],out_of_range);
1290 CHECK_THROW(arr[7][3][8][1][0],out_of_range);
1291 CHECK_THROW(arr[7][3][1][m1][2],out_of_range);
1292 CHECK_THROW(arr[7][3][1][7][2],out_of_range);
1293 CHECK_THROW(arr[7][3][1][2][m1],out_of_range);
1294 CHECK_THROW(arr[7][3][1][2][6],out_of_range);
1295 CHECK_THROW(arr.
ptr(m1,1,2,3,4),out_of_range);
1296 CHECK_THROW(arr.
ptr(10,1,2,3,4),out_of_range);
1297 CHECK_THROW(arr.
ptr(7,m1,3,2,4),out_of_range);
1298 CHECK_THROW(arr.
ptr(7,9,3,2,4),out_of_range);
1299 CHECK_THROW(arr.
ptr(7,3,m1,1,0),out_of_range);
1300 CHECK_THROW(arr.
ptr(7,3,8,1,0),out_of_range);
1301 CHECK_THROW(arr.
ptr(7,3,1,m1,2),out_of_range);
1302 CHECK_THROW(arr.
ptr(7,3,1,7,2),out_of_range);
1304 CHECK_THROW((*carr)[m1][1][2][3][4],out_of_range);
1305 CHECK_THROW((*carr)[10][1][2][3][4],out_of_range);
1306 CHECK_THROW((*carr)[7][m1][3][2][4],out_of_range);
1307 CHECK_THROW((*carr)[7][9][3][2][4],out_of_range);
1308 CHECK_THROW((*carr)[7][3][m1][1][0],out_of_range);
1309 CHECK_THROW((*carr)[7][3][8][1][0],out_of_range);
1310 CHECK_THROW((*carr)[7][3][1][m1][2],out_of_range);
1311 CHECK_THROW((*carr)[7][3][1][7][2],out_of_range);
1312 CHECK_THROW((*carr)[7][3][1][2][m1],out_of_range);
1313 CHECK_THROW((*carr)[7][3][1][2][6],out_of_range);
1315 TEST_FIXTURE(LongInt6DFixtureCTypeBC,Test6DOutOfBoundsCType)
1317 CHECK_THROW(arr[m1][1][2][3][4][0],out_of_range);
1318 CHECK_THROW(arr[10][1][2][3][4][0],out_of_range);
1319 CHECK_THROW(arr[7][m1][3][2][4][1],out_of_range);
1320 CHECK_THROW(arr[7][9][3][2][4][1],out_of_range);
1321 CHECK_THROW(arr[7][3][m1][1][0][2],out_of_range);
1322 CHECK_THROW(arr[7][3][8][1][0][2],out_of_range);
1323 CHECK_THROW(arr[7][3][1][m1][2][0],out_of_range);
1324 CHECK_THROW(arr[7][3][1][7][2][0],out_of_range);
1325 CHECK_THROW(arr[7][4][1][2][m1][3],out_of_range);
1326 CHECK_THROW(arr[7][4][1][2][6][3],out_of_range);
1327 CHECK_THROW(arr[7][4][1][2][3][m1],out_of_range);
1328 CHECK_THROW(arr[7][4][1][2][3][5],out_of_range);
1329 CHECK_THROW(arr.
ptr(m1,1,2,3,4,0),out_of_range);
1330 CHECK_THROW(arr.
ptr(10,1,2,3,4,0),out_of_range);
1331 CHECK_THROW(arr.
ptr(7,m1,3,2,4,1),out_of_range);
1332 CHECK_THROW(arr.
ptr(7,9,3,2,4,1),out_of_range);
1333 CHECK_THROW(arr.
ptr(7,3,m1,1,0,2),out_of_range);
1334 CHECK_THROW(arr.
ptr(7,3,8,1,0,2),out_of_range);
1335 CHECK_THROW(arr.
ptr(7,3,1,m1,2,0),out_of_range);
1336 CHECK_THROW(arr.
ptr(7,3,1,7,2,0),out_of_range);
1337 CHECK_THROW(arr.
ptr(7,4,1,2,m1,3),out_of_range);
1338 CHECK_THROW(arr.
ptr(7,4,1,2,6,3),out_of_range);
1340 CHECK_THROW((*carr)[m1][1][2][3][4][0],out_of_range);
1341 CHECK_THROW((*carr)[10][1][2][3][4][0],out_of_range);
1342 CHECK_THROW((*carr)[7][m1][3][2][4][1],out_of_range);
1343 CHECK_THROW((*carr)[7][9][3][2][4][1],out_of_range);
1344 CHECK_THROW((*carr)[7][3][m1][1][0][2],out_of_range);
1345 CHECK_THROW((*carr)[7][3][8][1][0][2],out_of_range);
1346 CHECK_THROW((*carr)[7][3][1][m1][2][0],out_of_range);
1347 CHECK_THROW((*carr)[7][3][1][7][2][0],out_of_range);
1348 CHECK_THROW((*carr)[7][4][1][2][m1][3],out_of_range);
1349 CHECK_THROW((*carr)[7][4][1][2][6][3],out_of_range);
1350 CHECK_THROW((*carr)[7][4][1][2][3][m1],out_of_range);
1351 CHECK_THROW((*carr)[7][4][1][2][3][5],out_of_range);
1356 TEST_FIXTURE(StructWithConstructor3DFixture,TestConstructorExecuted)
1359 CHECK_EQUAL(23,p1->n);
1361 CHECK_EQUAL(23,p2->n);
1363 TEST_FIXTURE(StructWithConstructor3DFixtureCType,TestConstructorExecutedCType)
1366 CHECK_EQUAL(23,p1->n);
1368 CHECK_EQUAL(23,p2->n);
1372 TEST_FIXTURE(LongInt3DFixtureBC,TestSize)
1374 CHECK_EQUAL((
size_t)(10*9*8),arr.
size());
1378 arr.
alloc(10,11,12);
1379 CHECK_EQUAL((
size_t)(10*11*12),arr.
capacity());
1384 for (
int i=0; i<10; ++i)
1385 for (
int j=0; j<11; ++j)
1388 for (
int k=0; k<12; ++k)
1389 CHECK_EQUAL(0,p[k]);
1395 TEST_FIXTURE(LongInt3DFixtureBC,TestSizeAlgorithm)
1398 arr.
alloc(10,11,12);
1401 for (
int i=0; i<10; ++i)
1402 for (
int j=0; j<11; ++j)
1404 CHECK_EQUAL(0,count_if(arr.
begin(i,j),arr.
end(i,j),
1405 bind1st(not_equal_to<long>(),0)));
1409 TEST_FIXTURE(LongInt3DFixtureCTypeBC,TestSizeCType)
1411 CHECK_EQUAL((
size_t)(10*9*8),arr.
size());
1415 arr.
alloc(10,11,12);
1416 CHECK_EQUAL((
size_t)(10*11*12),arr.
capacity());
1421 for (
int i=0; i<10; ++i)
1422 for (
int j=0; j<11; ++j)
1425 for (
int k=0; k<12; ++k)
1426 CHECK_EQUAL(0,p[k]);
1431 TEST_FIXTURE(LongInt6DFixtureExplicitReserve,TestExplicitReserve)
1434 for (
int i=0; i<10; ++i)
1435 for (
int j=0; j<9; ++j)
1436 for (
int k=0; k<8; ++k)
1437 for (
int l=0; l<7; ++l)
1438 for (
int m=0; m<6; ++m)
1439 for (
int n=0; n<5; ++n)
1440 CHECK_EQUAL(0,arr[i][j][k][l][m][n]);
1447 TEST_FIXTURE(TestAllocFixture,TestVariantAlloc)
1449 CHECK_EQUAL(0,mytest());
1454 TEST_FIXTURE(LongInt3DFixture,TestData)
1456 CHECK_EQUAL(&arr[0][0][0],arr.
data());
1457 arr[0][0][0] = 1234;
1458 CHECK_EQUAL(1234,*arr.
data());
1460 CHECK_EQUAL(&arr[0][0][0],carr->
data());
1462 TEST_FIXTURE(LongInt3DFixtureCType,TestDataCType)
1464 CHECK_EQUAL(&arr[0][0][0],arr.
data());
1465 arr[0][0][0] = 1234;
1466 CHECK_EQUAL(1234,*arr.
data());
1468 CHECK_EQUAL(&arr[0][0][0],carr->
data());
1471 TEST_FIXTURE(LongInt6DFixture,TestCopyOperator)
1474 CHECK( arr.
size() != arr2.size() );
1476 CHECK_EQUAL(0,arr2[0][1][2][3][4][5]);
1478 CHECK( arr.
size() == arr2.size() );
1480 CHECK( &arr[0][1][2][3][4][5] != &arr2[0][1][2][3][4][5] );
1481 for (
int i=0; i<10; ++i)
1482 for (
int j=0; j<9; ++j)
1483 for (
int k=0; k<8; ++k)
1484 for (
int l=0; l<7; ++l)
1485 for (
int m=0; m<6; ++m)
1486 for (
int n=0; n<5; ++n)
1488 long z = i*100000+j*10000+k*1000+l*100+m*10+n;
1489 CHECK_EQUAL(z,arr2[i][j][k][l][m][n]);
1495 CHECK_EQUAL(712344,arr2[7][1][2][3][4][4]);
1499 CHECK( arr.
size() == arr3.
size() );
1501 CHECK( &arr[7][1][2][3][4][4] != &arr3[7][1][2][3][4][4] );
1502 CHECK_EQUAL(arr[7][1][2][3][4][4],arr3[7][1][2][3][4][4]);
1507 CHECK(arr2.empty());
1510 CHECK(arr4.empty());
1513 TEST_FIXTURE(LongInt6DFixtureBC,TestCopyOperatorBC)
1516 CHECK( arr.
size() != arr2.size() );
1518 CHECK_EQUAL(0,arr2[0][1][2][3][4][5]);
1520 CHECK( arr.
size() == arr2.size() );
1521 for (
int i=0; i<10; ++i)
1522 for (
int j=0; j<9; ++j)
1523 for (
int k=0; k<8; ++k)
1524 for (
int l=0; l<7; ++l)
1525 for (
int m=0; m<6; ++m)
1526 for (
int n=0; n<5; ++n)
1528 long z = i*100000+j*10000+k*1000+l*100+m*10+n;
1529 CHECK_EQUAL(z,arr2[i][j][k][l][m][n]);
1532 CHECK_THROW(arr2[m1][1][2][3][4][0],out_of_range);
1533 CHECK_THROW(arr2[10][1][2][3][4][0],out_of_range);
1534 CHECK_THROW(arr2[7][m1][3][2][4][1],out_of_range);
1535 CHECK_THROW(arr2[7][9][3][2][4][1],out_of_range);
1536 CHECK_THROW(arr2[7][3][m1][1][0][2],out_of_range);
1537 CHECK_THROW(arr2[7][3][8][1][0][2],out_of_range);
1538 CHECK_THROW(arr2[7][3][1][m1][2][0],out_of_range);
1539 CHECK_THROW(arr2[7][3][1][7][2][0],out_of_range);
1540 CHECK_THROW(arr2[7][4][1][2][m1][3],out_of_range);
1541 CHECK_THROW(arr2[7][4][1][2][6][3],out_of_range);
1542 CHECK_THROW(arr2[7][4][1][2][3][m1],out_of_range);
1543 CHECK_THROW(arr2[7][4][1][2][3][5],out_of_range);
1548 CHECK_EQUAL(712344,arr2[7][1][2][3][4][4]);
1552 CHECK(arr2.empty());
1555 CHECK(arr4.empty());
1558 TEST_FIXTURE(LongInt6DFixtureCType,TestCopyOperatorCType)
1561 CHECK( arr.
size() != arr2.size() );
1563 CHECK_EQUAL(0,arr2[0][1][2][3][4][5]);
1565 CHECK( arr.
size() == arr2.size() );
1566 for (
int i=0; i<10; ++i)
1567 for (
int j=0; j<9; ++j)
1568 for (
int k=0; k<8; ++k)
1569 for (
int l=0; l<7; ++l)
1570 for (
int m=0; m<6; ++m)
1571 for (
int n=0; n<5; ++n)
1573 long z = i*100000+j*10000+k*1000+l*100+m*10+n;
1574 CHECK_EQUAL(z,arr2[i][j][k][l][m][n]);
1580 CHECK_EQUAL(712344,arr2[7][1][2][3][4][4]);
1584 CHECK(arr2.empty());
1587 CHECK(arr4.empty());
1590 TEST_FIXTURE(LongInt6DFixtureCTypeBC,TestCopyOperatorCTypeBC)
1593 CHECK( arr.
size() != arr2.size() );
1595 CHECK_EQUAL(0,arr2[0][1][2][3][4][5]);
1597 CHECK( arr.
size() == arr2.size() );
1598 for (
int i=0; i<10; ++i)
1599 for (
int j=0; j<9; ++j)
1600 for (
int k=0; k<8; ++k)
1601 for (
int l=0; l<7; ++l)
1602 for (
int m=0; m<6; ++m)
1603 for (
int n=0; n<5; ++n)
1605 long z = i*100000+j*10000+k*1000+l*100+m*10+n;
1606 CHECK_EQUAL(z,arr2[i][j][k][l][m][n]);
1609 CHECK_THROW(arr2[m1][1][2][3][4][0],out_of_range);
1610 CHECK_THROW(arr2[10][1][2][3][4][0],out_of_range);
1611 CHECK_THROW(arr2[7][m1][3][2][4][1],out_of_range);
1612 CHECK_THROW(arr2[7][9][3][2][4][1],out_of_range);
1613 CHECK_THROW(arr2[7][3][m1][1][0][2],out_of_range);
1614 CHECK_THROW(arr2[7][3][8][1][0][2],out_of_range);
1615 CHECK_THROW(arr2[7][3][1][m1][2][0],out_of_range);
1616 CHECK_THROW(arr2[7][3][1][7][2][0],out_of_range);
1617 CHECK_THROW(arr2[7][4][1][2][m1][3],out_of_range);
1618 CHECK_THROW(arr2[7][4][1][2][6][3],out_of_range);
1619 CHECK_THROW(arr2[7][4][1][2][3][m1],out_of_range);
1620 CHECK_THROW(arr2[7][4][1][2][3][5],out_of_range);
1625 CHECK_EQUAL(712344,arr2[7][1][2][3][4][4]);
1629 CHECK(arr2.empty());
1632 CHECK(arr4.empty());
1636 TEST_FIXTURE(LongInt3DCLayoutFixture,TestCLayout)
1638 CHECK_EQUAL(0L,mytest((
long(*)[10][10])arr.
data()));
1642 TEST_FIXTURE(LongInt3DCloneFixture,TestCloning)
1646 CHECK_THROW(dolly[10][0][0],out_of_range);
1647 for (
int i=0; i<10; ++i)
1649 CHECK_THROW(dolly[i][i+1][0],out_of_range);
1650 for (
int j=0; j<i+1; ++j)
1651 CHECK_THROW(dolly[i][j][j+1],out_of_range);
1656 CHECK(dolly2.empty());
1661 CHECK_EQUAL(243UL,arr3.
size());
1665 TEST_FIXTURE(LongInt3DCloneFixtureCType,TestCloningCType)
1669 CHECK_THROW(dolly[10][0][0],out_of_range);
1670 for (
int i=0; i<10; ++i)
1672 CHECK_THROW(dolly[i][i+1][0],out_of_range);
1673 for (
int j=0; j<i+1; ++j)
1674 CHECK_THROW(dolly[i][j][j+1],out_of_range);
1679 CHECK(dolly2.empty());
1684 CHECK_EQUAL(243UL,arr3.
size());
1687 TEST_FIXTURE(LongInt2DFixture,Test2DBeginEnd)
1689 CHECK( arr.
begin(2) == arr.
ptr(2,0) );
1690 CHECK( arr.
end(2) == arr.
ptr(2,9) );
1691 CHECK_EQUAL(20L,arr.
front(2));
1692 CHECK_EQUAL(28L,arr.
back(2));
1694 CHECK( carr->
begin(2) == carr->
ptr(2,0) );
1695 CHECK( carr->
end(2) == carr->
ptr(2,9) );
1696 CHECK_EQUAL(20L,carr->
front(2));
1697 CHECK_EQUAL(28L,carr->
back(2));
1699 TEST_FIXTURE(LongInt3DFixture,Test3DBeginEnd)
1701 CHECK( arr.
begin(2,4) == arr.
ptr(2,4,0) );
1702 CHECK( arr.
end(2,4) == arr.
ptr(2,4,8) );
1703 CHECK_EQUAL(240L,arr.
front(2,4));
1704 CHECK_EQUAL(247L,arr.
back(2,4));
1706 CHECK( carr->
begin(2,4) == carr->
ptr(2,4,0) );
1707 CHECK( carr->
end(2,4) == carr->
ptr(2,4,8) );
1708 CHECK_EQUAL(240L,carr->
front(2,4));
1709 CHECK_EQUAL(247L,carr->
back(2,4));
1711 TEST_FIXTURE(LongInt4DFixture,Test4DBeginEnd)
1713 CHECK( arr.
begin(2,4,7) == arr.
ptr(2,4,7,0) );
1714 CHECK( arr.
end(2,4,7) == arr.
ptr(2,4,7,7) );
1715 CHECK_EQUAL(2470L,arr.
front(2,4,7));
1716 CHECK_EQUAL(2476L,arr.
back(2,4,7));
1718 CHECK( carr->
begin(2,4,7) == carr->
ptr(2,4,7,0) );
1719 CHECK( carr->
end(2,4,7) == carr->
ptr(2,4,7,7) );
1720 CHECK_EQUAL(2470L,carr->
front(2,4,7));
1721 CHECK_EQUAL(2476L,carr->
back(2,4,7));
1723 TEST_FIXTURE(LongInt5DFixture,Test5DBeginEnd)
1725 CHECK( arr.
begin(2,4,7,5) == arr.
ptr(2,4,7,5,0) );
1726 CHECK( arr.
end(2,4,7,5) == arr.
ptr(2,4,7,5,6) );
1727 CHECK_EQUAL(24750L,arr.
front(2,4,7,5));
1728 CHECK_EQUAL(24755L,arr.
back(2,4,7,5));
1730 CHECK( carr->
begin(2,4,7,5) == carr->
ptr(2,4,7,5,0) );
1731 CHECK( carr->
end(2,4,7,5) == carr->
ptr(2,4,7,5,6) );
1732 CHECK_EQUAL(24750L,carr->
front(2,4,7,5));
1733 CHECK_EQUAL(24755L,carr->
back(2,4,7,5));
1735 TEST_FIXTURE(LongInt6DFixture,Test6DBeginEnd)
1737 CHECK( arr.
begin(2,4,7,5,1) == arr.
ptr(2,4,7,5,1,0) );
1738 CHECK( arr.
end(2,4,7,5,1) == arr.
ptr(2,4,7,5,1,5) );
1739 CHECK_EQUAL(247510L,arr.
front(2,4,7,5,1));
1740 CHECK_EQUAL(247514L,arr.
back(2,4,7,5,1));
1742 CHECK( carr->
begin(2,4,7,5,1) == carr->
ptr(2,4,7,5,1,0) );
1743 CHECK( carr->
end(2,4,7,5,1) == carr->
ptr(2,4,7,5,1,5) );
1744 CHECK_EQUAL(247510L,carr->
front(2,4,7,5,1));
1745 CHECK_EQUAL(247514L,carr->
back(2,4,7,5,1));
1748 TEST_FIXTURE(LongInt2DFixtureCTypeBC,Test2DBeginEndCTypeBC)
1750 CHECK( arr.
begin(2) == arr.
ptr(2,0) );
1751 CHECK( arr.
end(2) == arr.
ptr(2,9) );
1752 CHECK_EQUAL(20L,arr.
front(2));
1753 CHECK_EQUAL(28L,arr.
back(2));
1755 CHECK( carr->
begin(2) == carr->
ptr(2,0) );
1756 CHECK( carr->
end(2) == carr->
ptr(2,9) );
1757 CHECK_EQUAL(20L,carr->
front(2));
1758 CHECK_EQUAL(28L,carr->
back(2));
1760 TEST_FIXTURE(LongInt3DFixtureCTypeBC,Test3DBeginEndCTypeBC)
1762 CHECK( arr.
begin(2,4) == arr.
ptr(2,4,0) );
1763 CHECK( arr.
end(2,4) == arr.
ptr(2,4,8) );
1764 CHECK_EQUAL(240L,arr.
front(2,4));
1765 CHECK_EQUAL(247L,arr.
back(2,4));
1767 CHECK( carr->
begin(2,4) == carr->
ptr(2,4,0) );
1768 CHECK( carr->
end(2,4) == carr->
ptr(2,4,8) );
1769 CHECK_EQUAL(240L,carr->
front(2,4));
1770 CHECK_EQUAL(247L,carr->
back(2,4));
1772 TEST_FIXTURE(LongInt4DFixtureCTypeBC,Test4DBeginEndCTypeBC)
1774 CHECK( arr.
begin(2,4,7) == arr.
ptr(2,4,7,0) );
1775 CHECK( arr.
end(2,4,7) == arr.
ptr(2,4,7,7) );
1776 CHECK_EQUAL(2470L,arr.
front(2,4,7));
1777 CHECK_EQUAL(2476L,arr.
back(2,4,7));
1779 CHECK( carr->
begin(2,4,7) == carr->
ptr(2,4,7,0) );
1780 CHECK( carr->
end(2,4,7) == carr->
ptr(2,4,7,7) );
1781 CHECK_EQUAL(2470L,carr->
front(2,4,7));
1782 CHECK_EQUAL(2476L,carr->
back(2,4,7));
1784 TEST_FIXTURE(LongInt5DFixtureCTypeBC,Test5DBeginEndCTypeBC)
1786 CHECK( arr.
begin(2,4,7,5) == arr.
ptr(2,4,7,5,0) );
1787 CHECK( arr.
end(2,4,7,5) == arr.
ptr(2,4,7,5,6) );
1788 CHECK_EQUAL(24750L,arr.
front(2,4,7,5));
1789 CHECK_EQUAL(24755L,arr.
back(2,4,7,5));
1791 CHECK( carr->
begin(2,4,7,5) == carr->
ptr(2,4,7,5,0) );
1792 CHECK( carr->
end(2,4,7,5) == carr->
ptr(2,4,7,5,6) );
1793 CHECK_EQUAL(24750L,carr->
front(2,4,7,5));
1794 CHECK_EQUAL(24755L,carr->
back(2,4,7,5));
1796 TEST_FIXTURE(LongInt6DFixtureCTypeBC,Test6DBeginEndCTypeBC)
1798 CHECK( arr.
begin(2,4,7,5,1) == arr.
ptr(2,4,7,5,1,0) );
1799 CHECK( arr.
end(2,4,7,5,1) == arr.
ptr(2,4,7,5,1,5) );
1800 CHECK_EQUAL(247510L,arr.
front(2,4,7,5,1));
1801 CHECK_EQUAL(247514L,arr.
back(2,4,7,5,1));
1803 CHECK( carr->
begin(2,4,7,5,1) == carr->
ptr(2,4,7,5,1,0) );
1804 CHECK( carr->
end(2,4,7,5,1) == carr->
ptr(2,4,7,5,1,5) );
1805 CHECK_EQUAL(247510L,carr->
front(2,4,7,5,1));
1806 CHECK_EQUAL(247514L,carr->
back(2,4,7,5,1));
1810 TEST_FIXTURE(LongInt3DFixture,Test3DVarLengthArgument)
1813 sprintf( buf,
"%ld", arr[2][3][4] );
1815 sscanf( buf,
"%ld", &res );
1816 CHECK_EQUAL(234L,res);
1819 TEST_FIXTURE(LongInt3DFixtureCType,Test3DVarLengthArgumentCType)
1822 sprintf( buf,
"%ld", arr[2][3][4] );
1824 sscanf( buf,
"%ld", &res );
1825 CHECK_EQUAL(234L,res);
1828 TEST_FIXTURE(LongInt2DEmptyDim,Test2DEmptyDimIterator)
1836 TEST_FIXTURE(LongInt3DEmptyDim,Test3DEmptyDimIterator)
1844 TEST_FIXTURE(LongInt4DEmptyDim,Test4DEmptyDimIterator)
1852 TEST_FIXTURE(LongInt5DEmptyDim,Test5DEmptyDimIterator)
1860 TEST_FIXTURE(LongInt6DEmptyDim,Test6DEmptyDimIterator)
1868 TEST_FIXTURE(LongInt2DEmptyDimCType,Test2DEmptyDimIteratorCType)
1876 TEST_FIXTURE(LongInt3DEmptyDimCType,Test3DEmptyDimIteratorCType)
1884 TEST_FIXTURE(LongInt4DEmptyDimCType,Test4DEmptyDimIteratorCType)
1892 TEST_FIXTURE(LongInt5DEmptyDimCType,Test5DEmptyDimIteratorCType)
1900 TEST_FIXTURE(LongInt6DEmptyDimCType,Test6DEmptyDimIteratorCType)
iterator ptr(size_type i1, size_type i2)
void state_do(FILE *io, bool lgGet)
const_pntr< T, lgBC > const_iterator
reference back(size_type i1)
void reserve(size_type i1)
iterator begin(size_type i1)
iterator end(size_type i1)
reference front(size_type i1)
reference at(size_type i1, size_type i2)
const multi_geom< d, ALLOC > & clone() const
size_type capacity() const