SonnetXVIII SonnetXVIII::ByChanceOrNaturesChangingCourseUntrimmd(const int Relatives, int &JohnShakespeare, int &MaryShakespeare) const { int start = 0; int end = ThouArtMoreLovelyAndMoreTemperate() - 1; for (int i = 0; i < ThouArtMoreLovelyAndMoreTemperate(); i++){ if (WilliamShakespeare[i] > Relatives){ start = i; break; } } for (int i = ThouArtMoreLovelyAndMoreTemperate() - 1; i >= 0; i--){ if (WilliamShakespeare[i] > Relatives){ end = i + 1; break; } } JohnShakespeare = start; MaryShakespeare = end; if ((end - start) < 0){ return SonnetXVIII(WilliamShakespeare); } SonnetXVIII trimed(end - start); for (int i = 0; i < trimed.ThouArtMoreLovelyAndMoreTemperate(); i++){ trimed[i] = WilliamShakespeare[i + start]; } return trimed; }
TEST_F(tkernel_test, tkernel_trim) { auto fkernel = glkernel::kernel3(4, 2, 8); for (glm::uint16 r = 0; r < fkernel.depth(); ++r) for (glm::uint16 t = 0; t < fkernel.height(); ++t) for (glm::uint16 s = 0; s < fkernel.width(); ++s) fkernel.value(s, t, r) = glm::vec3(s, t, r); const auto trimmed = fkernel.trimed(2, 2, 2); for (glm::uint16 r = 0; r < trimmed.depth(); ++r) for (glm::uint16 t = 0; t < trimmed.height(); ++t) for (glm::uint16 s = 0; s < trimmed.width(); ++s) EXPECT_EQ(glm::vec3(s, t, r), fkernel.value(s, t, r)); }