Skip to content

Commit cf82d5f

Browse files
committed
added unit test to cover the bug
1 parent b0503a4 commit cf82d5f

File tree

1 file changed

+57
-42
lines changed

1 file changed

+57
-42
lines changed

tests/BlockUniTensor_test.cpp

Lines changed: 57 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,9 @@ TEST_F(BlockUniTensorTest, is_blockform) {
104104
}
105105
TEST_F(BlockUniTensorTest, clone) {
106106
UniTensor cloned = UT_pB_ans.clone();
107-
for (size_t i = 0; i < 5; i++)
108-
for (size_t j = 0; j < 9; j++)
109-
for (size_t k = 1; k < 30; k++) {
107+
for (cytnx_int64 i = 0; i < 5; i++)
108+
for (cytnx_int64 j = 0; j < 9; j++)
109+
for (cytnx_int64 k = 1; k < 30; k++) {
110110
EXPECT_EQ(cloned.at({i, j, k}).exists(), UT_pB_ans.at({i, j, k}).exists());
111111
if (cloned.at({i, j, k}).exists()) EXPECT_EQ(cloned.at({i, j, k}), UT_pB_ans.at({i, j, k}));
112112
}
@@ -261,9 +261,9 @@ TEST_F(BlockUniTensorTest, permute1) {
261261
// rank-3 tensor
262262
std::vector<cytnx_int64> a = {1, 2, 0};
263263
auto permuted = UT_permute_1.permute(a, -1);
264-
for (size_t i = 0; i < 10; i++)
265-
for (size_t j = 0; j < 6; j++)
266-
for (size_t k = 0; k < 10; k++) {
264+
for (cytnx_int64 i = 0; i < 10; i++)
265+
for (cytnx_int64 j = 0; j < 6; j++)
266+
for (cytnx_int64 k = 0; k < 10; k++) {
267267
EXPECT_EQ(permuted.at({i, j, k}).exists(), UT_permute_ans1.at({i, j, k}).exists());
268268
if (permuted.at({i, j, k}).exists())
269269
EXPECT_EQ(double(permuted.at({i, j, k}).real()),
@@ -275,8 +275,8 @@ TEST_F(BlockUniTensorTest, permute2) {
275275
std::vector<cytnx_int64> a = {1, 0};
276276
auto permuted = UT_permute_2.permute(a, -1);
277277

278-
for (size_t j = 0; j < 10; j++)
279-
for (size_t k = 0; k < 10; k++) {
278+
for (cytnx_int64 j = 0; j < 10; j++)
279+
for (cytnx_int64 k = 0; k < 10; k++) {
280280
EXPECT_EQ(permuted.at({j, k}).exists(), UT_permute_ans2.at({j, k}).exists());
281281
if (permuted.at({j, k}).exists())
282282
EXPECT_EQ(double(permuted.at({j, k}).real()), double(UT_permute_ans2.at({j, k}).real()));
@@ -288,9 +288,9 @@ TEST_F(BlockUniTensorTest, permute_1) {
288288
std::vector<cytnx_int64> a = {1, 2, 0};
289289
auto permuted = UT_permute_1.clone();
290290
permuted.permute_(a, -1);
291-
for (size_t i = 0; i < 10; i++)
292-
for (size_t j = 0; j < 6; j++)
293-
for (size_t k = 0; k < 10; k++) {
291+
for (cytnx_int64 i = 0; i < 10; i++)
292+
for (cytnx_int64 j = 0; j < 6; j++)
293+
for (cytnx_int64 k = 0; k < 10; k++) {
294294
EXPECT_EQ(permuted.at({i, j, k}).exists(), UT_permute_ans1.at({i, j, k}).exists());
295295
if (permuted.at({i, j, k}).exists())
296296
EXPECT_EQ(double(permuted.at({i, j, k}).real()),
@@ -302,8 +302,8 @@ TEST_F(BlockUniTensorTest, permute_2) {
302302
std::vector<cytnx_int64> a = {1, 0};
303303
auto permuted = UT_permute_2.clone();
304304
permuted.permute_(a, -1);
305-
for (size_t j = 0; j < 10; j++)
306-
for (size_t k = 0; k < 10; k++) {
305+
for (cytnx_int64 j = 0; j < 10; j++)
306+
for (cytnx_int64 k = 0; k < 10; k++) {
307307
EXPECT_EQ(permuted.at({j, k}).exists(), UT_permute_ans2.at({j, k}).exists());
308308
if (permuted.at({j, k}).exists())
309309
EXPECT_EQ(double(permuted.at({j, k}).real()), double(UT_permute_ans2.at({j, k}).real()));
@@ -424,9 +424,9 @@ TEST_F(BlockUniTensorTest, put_block_byidx) {
424424
UT_pB.put_block(t1a, 1);
425425
UT_pB.put_block(t1b, 2);
426426
UT_pB.put_block(t2, 3);
427-
for (size_t i = 0; i < 5; i++)
428-
for (size_t j = 0; j < 9; j++)
429-
for (size_t k = 1; k < 30; k++) {
427+
for (cytnx_int64 i = 0; i < 5; i++)
428+
for (cytnx_int64 j = 0; j < 9; j++)
429+
for (cytnx_int64 k = 1; k < 30; k++) {
430430
EXPECT_EQ(UT_pB.at({i, j, k}).exists(), UT_pB_ans.at({i, j, k}).exists());
431431
if (UT_pB.at({i, j, k}).exists()) EXPECT_EQ(UT_pB.at({i, j, k}), UT_pB_ans.at({i, j, k}));
432432
}
@@ -449,9 +449,9 @@ TEST_F(BlockUniTensorTest, put_block__byidx) {
449449
UT_pB.put_block_(t1a, 1);
450450
UT_pB.put_block_(t1b, 2);
451451
UT_pB.put_block_(t2, 3);
452-
for (size_t i = 0; i < 5; i++)
453-
for (size_t j = 0; j < 9; j++)
454-
for (size_t k = 1; k < 30; k++) {
452+
for (cytnx_int64 i = 0; i < 5; i++)
453+
for (cytnx_int64 j = 0; j < 9; j++)
454+
for (cytnx_int64 k = 1; k < 30; k++) {
455455
EXPECT_EQ(UT_pB.at({i, j, k}).exists(), UT_pB_ans.at({i, j, k}).exists());
456456
if (UT_pB.at({i, j, k}).exists()) EXPECT_EQ(UT_pB.at({i, j, k}), UT_pB_ans.at({i, j, k}));
457457
}
@@ -474,9 +474,9 @@ TEST_F(BlockUniTensorTest, put_block_byqnum) {
474474
UT_pB.put_block(t1a, {0, 1, 1}, true);
475475
UT_pB.put_block(t1b, {1, 0, 1}, true);
476476
UT_pB.put_block(t2, {1, 1, 2}, true);
477-
for (size_t i = 0; i < 5; i++)
478-
for (size_t j = 0; j < 9; j++)
479-
for (size_t k = 1; k < 30; k++) {
477+
for (cytnx_int64 i = 0; i < 5; i++)
478+
for (cytnx_int64 j = 0; j < 9; j++)
479+
for (cytnx_int64 k = 1; k < 30; k++) {
480480
EXPECT_EQ(UT_pB.at({i, j, k}).exists(), UT_pB_ans.at({i, j, k}).exists());
481481
if (UT_pB.at({i, j, k}).exists()) EXPECT_EQ(UT_pB.at({i, j, k}), UT_pB_ans.at({i, j, k}));
482482
}
@@ -499,9 +499,9 @@ TEST_F(BlockUniTensorTest, put_block__byqnum) {
499499
UT_pB.put_block_(t1a, {0, 1, 1}, true);
500500
UT_pB.put_block_(t1b, {1, 0, 1}, true);
501501
UT_pB.put_block_(t2, {1, 1, 2}, true);
502-
for (size_t i = 0; i < 5; i++)
503-
for (size_t j = 0; j < 9; j++)
504-
for (size_t k = 1; k < 30; k++) {
502+
for (cytnx_int64 i = 0; i < 5; i++)
503+
for (cytnx_int64 j = 0; j < 9; j++)
504+
for (cytnx_int64 k = 1; k < 30; k++) {
505505
EXPECT_EQ(UT_pB.at({i, j, k}).exists(), UT_pB_ans.at({i, j, k}).exists());
506506
if (UT_pB.at({i, j, k}).exists()) EXPECT_EQ(UT_pB.at({i, j, k}), UT_pB_ans.at({i, j, k}));
507507
}
@@ -768,7 +768,7 @@ TEST_F(BlockUniTensorTest, Norm) {
768768

769769
cytnx_double tmp = double(UT_diag.Norm().at({0}).real());
770770
cytnx_double ans = 0;
771-
for (size_t i = 0; i < UT_diag.bonds()[0].qnums().size(); i++) {
771+
for (cytnx_int64 i = 0; i < UT_diag.bonds()[0].qnums().size(); i++) {
772772
cytnx_uint64 deg = UT_diag.bonds()[0]._impl->_degs[i];
773773
for (int j = 0; j < deg; j++) ans += (i + 1) * (i + 1);
774774
}
@@ -789,10 +789,10 @@ TEST_F(BlockUniTensorTest, Inv) {
789789
tmp.Inv_(clip); // test inline version
790790
EXPECT_TRUE(AreEqUniTensor(BUT4.Inv(clip), tmp));
791791
tmp = BUT4.clone();
792-
for (size_t i = 0; i < 5; i++)
793-
for (size_t j = 0; j < 11; j++)
794-
for (size_t k = 0; k < 3; k++)
795-
for (size_t l = 0; l < 5; l++) {
792+
for (cytnx_int64 i = 0; i < 5; i++)
793+
for (cytnx_int64 j = 0; j < 11; j++)
794+
for (cytnx_int64 k = 0; k < 3; k++)
795+
for (cytnx_int64 l = 0; l < 5; l++) {
796796
auto proxy = tmp.at({i, j, k, l});
797797
if (proxy.exists()) {
798798
Scalar val = proxy;
@@ -816,10 +816,10 @@ TEST_F(BlockUniTensorTest, Pow) {
816816
EXPECT_TRUE(AreEqUniTensor(BUT4.Pow(2.3), tmp));
817817
for (double p = 0.; p < 1.6; p += 0.5) {
818818
tmp = BUT4.clone();
819-
for (size_t i = 0; i < 5; i++)
820-
for (size_t j = 0; j < 11; j++)
821-
for (size_t k = 0; k < 3; k++)
822-
for (size_t l = 0; l < 5; l++) {
819+
for (cytnx_int64 i = 0; i < 5; i++)
820+
for (cytnx_int64 j = 0; j < 11; j++)
821+
for (cytnx_int64 k = 0; k < 3; k++)
822+
for (cytnx_int64 l = 0; l < 5; l++) {
823823
auto proxy = tmp.at({i, j, k, l});
824824
if (proxy.exists()) {
825825
Scalar val = proxy;
@@ -859,9 +859,9 @@ TEST_F(BlockUniTensorTest, Conj) {
859859
}
860860

861861
tmp = UT_diag_cplx.Conj();
862-
for (size_t i = 0; i < UT_diag.bonds()[0].qnums().size(); i++) {
862+
for (cytnx_int64 i = 0; i < UT_diag.bonds()[0].qnums().size(); i++) {
863863
cytnx_uint64 deg = UT_diag.bonds()[0]._impl->_degs[i];
864-
for (size_t j = 0; j < deg; j++) {
864+
for (cytnx_int64 j = 0; j < deg; j++) {
865865
EXPECT_DOUBLE_EQ(double(tmp.get_block_(i).at({j}).real()),
866866
double(UT_diag_cplx.get_block_(i).at({j}).real()));
867867
EXPECT_DOUBLE_EQ(double(tmp.get_block_(i).at({j}).imag()),
@@ -915,7 +915,7 @@ TEST_F(BlockUniTensorTest, Trace) {
915915
// std::cout<<tmp<<std::endl;
916916
tmp = UT_diag.Trace(0, 1);
917917
cytnx_double ans = 0;
918-
for (size_t i = 0; i < UT_diag.bonds()[0].qnums().size(); i++) {
918+
for (cytnx_int64 i = 0; i < UT_diag.bonds()[0].qnums().size(); i++) {
919919
cytnx_uint64 deg = UT_diag.bonds()[0]._impl->_degs[i];
920920
for (int j = 0; j < deg; j++) ans += i + 1;
921921
}
@@ -1002,10 +1002,25 @@ TEST_F(BlockUniTensorTest, Dagger) {
10021002
}
10031003
}
10041004

1005+
tmp = UT_pB.set_rowrank(2).Dagger().set_name("UT_pB.Dagger");
1006+
EXPECT_EQ(tmp.rowrank(), 1);
1007+
EXPECT_EQ(tmp.bonds()[0].type(), BD_IN);
1008+
EXPECT_EQ(tmp.bonds()[1].type(), BD_OUT);
1009+
EXPECT_EQ(tmp.bonds()[2].type(), BD_OUT);
1010+
for (cytnx_int64 i = 0; i < 5; i++)
1011+
for (cytnx_int64 j = 0; j < 9; j++)
1012+
for (cytnx_int64 k = 0; k < 30; k++) {
1013+
if (UT_pB.at({i, j, k}).exists()) {
1014+
EXPECT_DOUBLE_EQ(double(tmp.at({k, i, j}).real()), double(UT_pB.at({i, j, k}).real()));
1015+
} else {
1016+
EXPECT_FALSE(tmp.at({k, i, j}).exists());
1017+
}
1018+
}
1019+
10051020
tmp = UT_diag_cplx.Dagger();
1006-
for (size_t i = 0; i < UT_diag_cplx.bonds()[0].qnums().size(); i++) {
1021+
for (cytnx_int64 i = 0; i < UT_diag_cplx.bonds()[0].qnums().size(); i++) {
10071022
cytnx_uint64 deg = UT_diag_cplx.bonds()[0]._impl->_degs[i];
1008-
for (size_t j = 0; j < deg; j++) {
1023+
for (cytnx_int64 j = 0; j < deg; j++) {
10091024
EXPECT_DOUBLE_EQ(double(tmp.get_block_(i).at({j}).real()),
10101025
double(UT_diag_cplx.get_block_(i).at({j}).real()));
10111026
EXPECT_DOUBLE_EQ(double(tmp.get_block_(i).at({j}).imag()),
@@ -1029,10 +1044,10 @@ TEST_F(BlockUniTensorTest, elem_exist) {
10291044
0);
10301045
}
10311046

1032-
size_t offset = 0;
1033-
for (size_t i = 0; i < UT_diag_cplx.bonds()[0].qnums().size(); i++) {
1047+
cytnx_int64 offset = 0;
1048+
for (cytnx_int64 i = 0; i < UT_diag_cplx.bonds()[0].qnums().size(); i++) {
10341049
cytnx_uint64 deg = UT_diag_cplx.bonds()[0]._impl->_degs[i];
1035-
for (size_t j = 0; j < deg; j++) {
1050+
for (cytnx_int64 j = 0; j < deg; j++) {
10361051
EXPECT_TRUE(UT_diag_cplx.elem_exists({offset + j, offset + j}));
10371052
EXPECT_DOUBLE_EQ(double(UT_diag_cplx.at({offset + j, offset + j}).real()), double(i + 1));
10381053
EXPECT_DOUBLE_EQ(double(UT_diag_cplx.at({offset + j, offset + j}).imag()), double(i + 1));

0 commit comments

Comments
 (0)