190 lines
3.1 KiB
C
190 lines
3.1 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <stdbool.h>
|
|
|
|
// for sleep !
|
|
#ifdef __linux__
|
|
#include <unistd.h>
|
|
#elif _WIN32
|
|
#include <windows.h>
|
|
#endif
|
|
|
|
#include "ftest/ftest.h"
|
|
#include "fmock/fmock.h"
|
|
|
|
|
|
//#include "permutation_t/permutation_t.h"
|
|
#include "dimension_t/dimension_t.h"
|
|
|
|
TEST(dimension0){
|
|
|
|
dimension *D = create_dim(5);
|
|
|
|
EXPECT_EQ(D->size,5);
|
|
|
|
free_dimension(D);
|
|
}
|
|
TEST(rank){
|
|
dimension *D=create_dim(4);
|
|
D->perm[0]=2;
|
|
D->perm[1]=3;
|
|
D->perm[2]=5;
|
|
D->perm[3]=6;
|
|
|
|
updateRankDim(D);
|
|
EXPECT_EQ(D->rank, 180);
|
|
|
|
free_dimension(D);
|
|
}
|
|
TEST(SplitDim){
|
|
dimension *D=create_dim(4);
|
|
D->perm[0]=2;
|
|
D->perm[1]=3;
|
|
D->perm[2]=5;
|
|
D->perm[3]=6;
|
|
|
|
updateRankDim(D);
|
|
printDebug_dimension(D," D root");
|
|
|
|
dimension *d_part1 = NULL,*d_part2=NULL;
|
|
|
|
split_dim_part(D, &d_part1, &d_part2, 1, 2);
|
|
|
|
printDebug_dimension(d_part1," part1 from Root");
|
|
printDebug_dimension(d_part2," part2 from Root");
|
|
|
|
dimension *ad;
|
|
|
|
add_dimension(&ad,d_part1, d_part2);
|
|
printDebug_dimension(D," D root");
|
|
printDebug_dimension(ad," ad ");
|
|
|
|
|
|
free_dimension(D);
|
|
free_dimension(ad);
|
|
free(d_part1);
|
|
free(d_part2);
|
|
}
|
|
|
|
TEST(SplitDim_2){
|
|
dimension *D=create_dim(4);
|
|
D->perm[0]=2;
|
|
D->perm[1]=3;
|
|
D->perm[2]=5;
|
|
D->perm[3]=6;
|
|
|
|
updateRankDim(D);
|
|
printDebug_dimension(D," D root");
|
|
|
|
dimension *d_part1 = NULL,*d_part2=NULL;
|
|
|
|
split_dim_part(D, &d_part1, &d_part2, 3, 2);
|
|
|
|
printDebug_dimension(d_part1," part1 from Root");
|
|
printDebug_dimension(d_part2," part2 from Root");
|
|
|
|
dimension *ad;
|
|
|
|
add_dimension(&ad,d_part1, d_part2);
|
|
printDebug_dimension(D," D root");
|
|
printDebug_dimension(ad," ad ");
|
|
|
|
|
|
free_dimension(D);
|
|
free_dimension(ad);
|
|
free(d_part1);
|
|
free(d_part2);
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(SubDim){
|
|
dimension *D=create_dim(4);
|
|
D->perm[0]=2;
|
|
D->perm[1]=3;
|
|
D->perm[2]=5;
|
|
D->perm[3]=6;
|
|
|
|
dimension *d_head2 = sub_minus_dim_head(D,2);
|
|
|
|
|
|
EXPECT_EQ(d_head2->rank, 2*3);
|
|
|
|
dimension *d_tail2 = sub_minus_dim_tail(D,2);
|
|
EXPECT_EQ(d_tail2->rank, 5*6);
|
|
|
|
free_dimension(D);
|
|
free(d_tail2);
|
|
free(d_head2);
|
|
}
|
|
|
|
TEST(SubDim){
|
|
dimension *D=create_dim(4);
|
|
D->perm[0]=2;
|
|
D->perm[1]=3;
|
|
D->perm[2]=5;
|
|
D->perm[3]=6;
|
|
|
|
|
|
dimension *d_head2 = sub_minus_dim_head(D,2);
|
|
|
|
|
|
EXPECT_EQ(d_head2->rank, 2*3);
|
|
|
|
dimension *d_tail2 = sub_minus_dim_tail(D,2);
|
|
EXPECT_EQ(d_tail2->rank, 5*6);
|
|
|
|
free_dimension(D);
|
|
free(d_tail2);
|
|
free(d_head2);
|
|
}
|
|
|
|
TEST(Coord_linear){
|
|
dimension *D=create_dim(4);
|
|
D->perm[0]=2;
|
|
D->perm[1]=3;
|
|
D->perm[2]=5;
|
|
D->perm[3]=6;
|
|
|
|
updateRankDim(D);
|
|
|
|
size_t line=255;
|
|
size_t *coord = CoordFromLin(line,D);
|
|
|
|
for(size_t i=0; i<D->size; ++i){
|
|
LOG("coo[%ld]=%ld\n",i,coord[i]);
|
|
}
|
|
|
|
EXPECT_EQ(line, LineFromCoord(coord, D));
|
|
free_dimension(D);
|
|
free(coord);
|
|
}
|
|
|
|
TEST(sprint_dim){
|
|
dimension *D=create_dim(4);
|
|
D->perm[0]=2;
|
|
D->perm[1]=3;
|
|
D->perm[2]=5;
|
|
D->perm[3]=6;
|
|
|
|
updateRankDim(D);
|
|
|
|
char *dimSTR =NULL;
|
|
size_t nb=sprint_dimension(&dimSTR, D);
|
|
|
|
LOG(" nb char : %ld\n, dim print:\n%s\n",nb, dimSTR);
|
|
|
|
free_dimension(D);
|
|
free(dimSTR);
|
|
}
|
|
|
|
|
|
int main(int argc, char **argv){
|
|
|
|
|
|
run_all_tests_args(argc, argv);
|
|
|
|
return 0;
|
|
}
|