Skip to content

Commit bf6ff72

Browse files
committed
codecov
1 parent 2afdd8d commit bf6ff72

1 file changed

Lines changed: 109 additions & 0 deletions

File tree

test/single_layer/test_convlayer.cpp

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -727,3 +727,112 @@ TEST(ConvolutionalLayerTest, Conv4DLegacyFloatEdgeCase) {
727727
ASSERT_NEAR(result[2], 3.0f * 0.5f + 1.0f, 1e-5f);
728728
ASSERT_NEAR(result[3], 4.0f * 0.5f + 1.0f, 1e-5f);
729729
}
730+
731+
TEST(ConvolutionalLayerTest, DepthwiseConv4DIntPathCoverage) {
732+
std::vector<int> image = {1, 2, 3, 4, 5, 6, 7, 8,
733+
9, 10, 11, 12, 13, 14, 15, 16};
734+
Shape input_shape({1, 2, 2, 4});
735+
Tensor input = make_tensor(image, input_shape);
736+
737+
std::vector<int> kernelvec = {1, 1, 1, 1, 2, 2, 2, 2};
738+
Shape kernel_shape({2, 1, 2, 2});
739+
Tensor kernel = make_tensor(kernelvec, kernel_shape);
740+
741+
std::vector<int> biasvec = {10, 20};
742+
Tensor bias = make_tensor(biasvec, Shape({2}));
743+
744+
size_t out_height = (2 + 2 * 0 - 1 * (2 - 1) - 1) / 1 + 1;
745+
size_t out_width = (4 + 2 * 0 - 1 * (2 - 1) - 1) / 1 + 1;
746+
Shape output_shape({1, 2, out_height, out_width});
747+
std::vector<int> output_vec(6, 0);
748+
Tensor output = make_tensor(output_vec, output_shape);
749+
750+
ConvolutionalLayer layer(1, 0, 1, kernel, bias, kDefault, 2);
751+
std::vector<Tensor> in{input};
752+
std::vector<Tensor> out{output};
753+
754+
EXPECT_NO_THROW(layer.run(in, out));
755+
756+
std::vector<int> result = *out[0].as<int>();
757+
EXPECT_FALSE(result.empty());
758+
}
759+
760+
TEST(ConvolutionalLayerTest, DepthwiseConv4DFloatPathCoverage) {
761+
std::vector<float> image = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f};
762+
Shape input_shape({1, 2, 2, 2});
763+
Tensor input = make_tensor(image, input_shape);
764+
765+
std::vector<float> kernelvec = {1.0f, 1.0f, 1.0f, 1.0f,
766+
0.5f, 0.5f, 0.5f, 0.5f};
767+
Shape kernel_shape({2, 1, 2, 2});
768+
Tensor kernel = make_tensor(kernelvec, kernel_shape);
769+
770+
std::vector<float> biasvec = {0.1f, 0.2f};
771+
Tensor bias = make_tensor(biasvec, Shape({2}));
772+
773+
size_t out_height = (2 + 2 * 0 - 1 * (2 - 1) - 1) / 1 + 1;
774+
size_t out_width = (2 + 2 * 0 - 1 * (2 - 1) - 1) / 1 + 1;
775+
Shape output_shape({1, 2, out_height, out_width});
776+
std::vector<float> output_vec(2, 0.0f);
777+
Tensor output = make_tensor(output_vec, output_shape);
778+
779+
ConvolutionalLayer layer(1, 0, 1, kernel, bias, kDefault, 2);
780+
std::vector<Tensor> in{input};
781+
std::vector<Tensor> out{output};
782+
783+
EXPECT_NO_THROW(layer.run(in, out));
784+
785+
std::vector<float> result = *out[0].as<float>();
786+
EXPECT_FALSE(result.empty());
787+
}
788+
789+
TEST(ConvolutionalLayerTest, DepthwiseConv4DNoBiasIntPathCoverage) {
790+
std::vector<int> image = {1, 2, 3, 4, 5, 6, 7, 8};
791+
Shape input_shape({1, 2, 2, 2});
792+
Tensor input = make_tensor(image, input_shape);
793+
794+
std::vector<int> kernelvec = {1, 1, 1, 1, 2, 2, 2, 2};
795+
Shape kernel_shape({2, 1, 2, 2});
796+
Tensor kernel = make_tensor(kernelvec, kernel_shape);
797+
798+
size_t out_height = (2 + 2 * 0 - 1 * (2 - 1) - 1) / 1 + 1;
799+
size_t out_width = (2 + 2 * 0 - 1 * (2 - 1) - 1) / 1 + 1;
800+
Shape output_shape({1, 2, out_height, out_width});
801+
std::vector<int> output_vec(2, 0);
802+
Tensor output = make_tensor(output_vec, output_shape);
803+
804+
ConvolutionalLayer layer(1, 0, 1, kernel, Tensor(), kDefault, 2);
805+
std::vector<Tensor> in{input};
806+
std::vector<Tensor> out{output};
807+
808+
EXPECT_NO_THROW(layer.run(in, out));
809+
810+
std::vector<int> result = *out[0].as<int>();
811+
EXPECT_FALSE(result.empty());
812+
}
813+
814+
TEST(ConvolutionalLayerTest, DepthwiseConv4DNoBiasFloatPathCoverage) {
815+
std::vector<float> image = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f};
816+
Shape input_shape({1, 2, 2, 2});
817+
Tensor input = make_tensor(image, input_shape);
818+
819+
std::vector<float> kernelvec = {1.0f, 1.0f, 1.0f, 1.0f,
820+
0.5f, 0.5f, 0.5f, 0.5f};
821+
Shape kernel_shape({2, 1, 2, 2});
822+
Tensor kernel = make_tensor(kernelvec, kernel_shape);
823+
824+
size_t out_height = (2 + 2 * 0 - 1 * (2 - 1) - 1) / 1 + 1;
825+
size_t out_width = (2 + 2 * 0 - 1 * (2 - 1) - 1) / 1 + 1;
826+
Shape output_shape({1, 2, out_height, out_width});
827+
std::vector<float> output_vec(2, 0.0f);
828+
Tensor output = make_tensor(output_vec, output_shape);
829+
830+
ConvolutionalLayer layer(1, 0, 1, kernel, Tensor(), kDefault, 2);
831+
std::vector<Tensor> in{input};
832+
std::vector<Tensor> out{output};
833+
834+
EXPECT_NO_THROW(layer.run(in, out));
835+
836+
std::vector<float> result = *out[0].as<float>();
837+
EXPECT_FALSE(result.empty());
838+
}

0 commit comments

Comments
 (0)