📄 ctors.cpp
字号:
#include "testsuite.h"
#include <blitz/array.h>
BZ_USING_NAMESPACE(blitz)
void check1DArrays();
void check3DArrays();
void checkEmpty1DArray(Array<int,1>& A);
void checkFull1DArray(Array<int,1>& A, int length);
void checkFull3DArray(Array<int,3>& A, int L, int N, int M);
void checkFull3DFortranArray(Array<int,3>& A, int L, int N, int M);
int main()
{
check1DArrays();
check3DArrays();
}
void check1DArrays()
{
Array<int,1> A;
checkEmpty1DArray(A);
Array<int,1> B = A;
checkEmpty1DArray(B);
Array<int,1> C(A.copy());
checkEmpty1DArray(C);
const int N = 10;
A.resize(N);
checkFull1DArray(A, N);
// NEEDS_WORK
// B.resizeAndPreserve(N);
// checkFull1DArray(B);
Array<int,1> D(N);
checkFull1DArray(D, N);
}
void checkEmpty1DArray(Array<int,1>& A)
{
BZTEST(A.base(0) == 0);
beginCheckAssert(); A.columns(); endCheckAssert();
BZTEST(A.data() == 0);
BZTEST(A.dataZero() == 0);
BZTEST(A.dataFirst() == 0);
beginCheckAssert(); A.depth(); endCheckAssert();
BZTEST(A.dimensions() == 1);
BZTEST(A.extent(0) == 0);
BZTEST(A.isMajorRank(0));
BZTEST(!A.isMinorRank(0));
BZTEST(A.isRankStoredAscending(0));
BZTEST(A.lbound(0) == 0);
BZTEST(A.length(0) == 0);
BZTEST(A.numElements() == 0);
BZTEST(A.ordering(0) == 0);
BZTEST(A.rank() == 1);
BZTEST(A.rows() == 0);
BZTEST(A.size() == 0);
BZTEST(A.stride(0) == 0);
BZTEST(A.ubound(0) == -1);
BZTEST(A.zeroOffset() == 0);
}
void checkFull1DArray(Array<int,1>& A, int length)
{
BZTEST(A.base(0) == 0);
beginCheckAssert(); A.columns(); endCheckAssert();
BZTEST(A.data() != 0);
BZTEST(A.dataZero() == A.data());
BZTEST(A.dataFirst() == A.data());
beginCheckAssert(); A.depth(); endCheckAssert();
BZTEST(A.dimensions() == 1);
BZTEST(A.extent(0) == length);
BZTEST(A.isMajorRank(0));
BZTEST(!A.isMinorRank(0));
BZTEST(A.isRankStoredAscending(0));
BZTEST(A.lbound(0) == 0);
BZTEST(A.length(0) == length);
BZTEST(A.numElements() == length);
BZTEST(A.ordering(0) == 0);
BZTEST(A.rank() == 1);
BZTEST(A.rows() == length);
BZTEST(A.size() == length);
BZTEST(A.stride(0) == 1);
BZTEST(A.ubound(0) == length-1);
BZTEST(A.zeroOffset() == 0);
}
void check3DArrays()
{
Array<int,3> A(2,3,4);
checkFull3DArray(A,2,3,4);
Array<int,3> B(2,3,4,FortranArray<3>());
checkFull3DFortranArray(B,2,3,4);
}
void checkFull3DArray(Array<int,3>& A, int L, int M, int N)
{
BZTEST(A.base(0) == 0);
BZTEST(A.columns() == M);
BZTEST(A.data() != 0);
BZTEST(A.dataZero() == A.data());
BZTEST(A.dataFirst() == A.data());
BZTEST(A.depth() == N);
BZTEST(A.dimensions() == 3);
BZTEST(A.extent(0) == L);
BZTEST(A.extent(1) == M);
BZTEST(A.extent(2) == N);
beginCheckAssert(); A.extent(3); endCheckAssert();
BZTEST(!A.isMajorRank(0));
BZTEST(!A.isMajorRank(1));
BZTEST(A.isMajorRank(2));
BZTEST(A.isMinorRank(0));
BZTEST(A.isMinorRank(1));
BZTEST(!A.isMinorRank(2));
BZTEST(A.isRankStoredAscending(0));
BZTEST(A.isRankStoredAscending(1));
BZTEST(A.isRankStoredAscending(2));
BZTEST(A.lbound(0) == 0);
BZTEST(A.lbound(1) == 0);
BZTEST(A.lbound(2) == 0);
BZTEST(A.numElements() == L*N*M);
BZTEST(A.ordering(0) == 2);
BZTEST(A.ordering(1) == 1);
BZTEST(A.ordering(2) == 0);
BZTEST(A.rank() == 3);
BZTEST(A.rows() == L);
BZTEST(A.size() == L*N*M);
BZTEST(A.stride(0) == N*M);
BZTEST(A.stride(1) == N);
BZTEST(A.stride(2) == 1);
BZTEST(A.ubound(0) == L-1);
BZTEST(A.ubound(1) == M-1);
BZTEST(A.ubound(2) == N-1);
BZTEST(A.zeroOffset() == 0);
}
void checkFull3DFortranArray(Array<int,3>& A, int L, int M, int N)
{
BZTEST(A.base(0) == 1);
BZTEST(A.columns() == M);
BZTEST(A.data() != 0);
BZTEST(A.dataZero() == A.data() - A.stride(0) - A.stride(1) - A.stride(2));
BZTEST(A.dataFirst() == A.data());
BZTEST(A.depth() == N);
BZTEST(A.dimensions() == 3);
BZTEST(A.extent(0) == L);
BZTEST(A.extent(1) == M);
BZTEST(A.extent(2) == N);
beginCheckAssert(); A.extent(3); endCheckAssert();
BZTEST(A.isMajorRank(0));
BZTEST(!A.isMajorRank(1));
BZTEST(!A.isMajorRank(2));
BZTEST(!A.isMinorRank(0));
BZTEST(A.isMinorRank(1));
BZTEST(A.isMinorRank(2));
BZTEST(A.isRankStoredAscending(0));
BZTEST(A.isRankStoredAscending(1));
BZTEST(A.isRankStoredAscending(2));
BZTEST(A.lbound(0) == 1);
BZTEST(A.lbound(1) == 1);
BZTEST(A.lbound(2) == 1);
BZTEST(A.numElements() == L*N*M);
BZTEST(A.ordering(0) == 0);
BZTEST(A.ordering(1) == 1);
BZTEST(A.ordering(2) == 2);
BZTEST(A.rank() == 3);
BZTEST(A.rows() == L);
BZTEST(A.size() == L*N*M);
BZTEST(A.stride(0) == 1);
BZTEST(A.stride(1) == L);
BZTEST(A.stride(2) == L*M);
BZTEST(A.ubound(0) == L);
BZTEST(A.ubound(1) == M);
BZTEST(A.ubound(2) == N);
BZTEST(- A.zeroOffset() == A.stride(0) + A.stride(1) + A.stride(2));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -