Fix block behaviors

See merge request oss/rotgen!35
This commit is contained in:
Joel Falcou 2025-10-02 18:18:27 +02:00
parent 9901765ef9
commit 4ba8b3c6a9
13 changed files with 70 additions and 54 deletions

View file

@ -17,7 +17,7 @@ TTS_CASE_TPL("Chains of extraction", rotgen::tests::types)
auto b = topLeftCorner(a,5,5);
TTS_EQUAL(b.startRow(), 0);
TTS_EQUAL(b.startCol(), 0);
b.setConstant(-7);
setConstant(b,-7);
for(rotgen::Index r=0;r<5;r++)
for(rotgen::Index c=0;c<5;c++)
@ -26,7 +26,7 @@ TTS_CASE_TPL("Chains of extraction", rotgen::tests::types)
auto bb = bottomRightCorner(b,3,3);
TTS_EQUAL(bb.startRow(), 2);
TTS_EQUAL(bb.startCol(), 2);
bb.setConstant(42);
setConstant(bb,42);
for(rotgen::Index r=2;r<5;r++)
for(rotgen::Index c=2;c<5;c++)
@ -35,7 +35,7 @@ TTS_CASE_TPL("Chains of extraction", rotgen::tests::types)
auto bbb = row(bb,1);
TTS_EQUAL(bbb.startRow(), 1);
TTS_EQUAL(bbb.startCol(), 0);
bbb.setConstant(99.5);
setConstant(bbb,99.5);
for(rotgen::Index c=3;c<5;c++)
TTS_EQUAL(a(3,c), 99.5);
@ -43,9 +43,28 @@ TTS_CASE_TPL("Chains of extraction", rotgen::tests::types)
auto bbbb = col(bbb,1);
TTS_EQUAL(bbbb.startRow(), 0);
TTS_EQUAL(bbbb.startCol(), 1);
bbbb.setConstant(0.125);
setConstant(bbbb,0.125);
TTS_EQUAL(a(3,3), 0.125);
};
std::cout << "a: \n" << a << std::endl;
auto ref_extract ( rotgen::ref<rotgen::matrix<float> > m) { return rotgen::extract(m,0,0,3,4); }
auto ref_cextract( rotgen::ref<const rotgen::matrix<float> > m) { return rotgen::extract(m,3,4,4,3); }
TTS_CASE("Extraction of ref/ref const")
{
auto m = rotgen::setRandom<rotgen::matrix<float,7,7>>();
auto extracted = ref_extract(m);
extracted = rotgen::setOnes<rotgen::matrix<float,3,4>>();
for(rotgen::Index r=0;r<3;r++)
for(rotgen::Index c=0;c<4;c++)
TTS_EQUAL(m(r,c), 1.f);
auto sliced = ref_cextract(m);
rotgen::extract(m,3,4,4,3) = rotgen::setConstant<rotgen::matrix<float,4,3>>(5);
for(rotgen::Index r=0;r<4;r++)
for(rotgen::Index c=0;c<3;c++)
TTS_EQUAL(sliced(r,c), 5.f);
};