
find_package(Python3 REQUIRED COMPONENTS Interpreter)

macro(pnnx_ncnn_add_test name)
    add_test(NAME test_ncnn_${name} COMMAND ${CMAKE_COMMAND} -DPYTHON_EXECUTABLE=${Python3_EXECUTABLE} -DPYTHON_SCRIPT=${CMAKE_CURRENT_SOURCE_DIR}/test_${name}.py -P ${CMAKE_CURRENT_SOURCE_DIR}/../run_test.cmake)
endmacro()

pnnx_ncnn_add_test(F_adaptive_avg_pool1d)
pnnx_ncnn_add_test(F_adaptive_avg_pool2d)
pnnx_ncnn_add_test(F_adaptive_avg_pool3d)
pnnx_ncnn_add_test(F_adaptive_max_pool1d)
pnnx_ncnn_add_test(F_adaptive_max_pool2d)
pnnx_ncnn_add_test(F_adaptive_max_pool3d)
pnnx_ncnn_add_test(F_alpha_dropout)
pnnx_ncnn_add_test(F_avg_pool1d)
pnnx_ncnn_add_test(F_avg_pool2d)
pnnx_ncnn_add_test(F_avg_pool3d)
pnnx_ncnn_add_test(F_batch_norm)
pnnx_ncnn_add_test(F_conv_transpose1d)
pnnx_ncnn_add_test(F_conv_transpose2d)
pnnx_ncnn_add_test(F_conv_transpose3d)
pnnx_ncnn_add_test(F_conv1d)
pnnx_ncnn_add_test(F_conv2d)
pnnx_ncnn_add_test(F_conv3d)
pnnx_ncnn_add_test(F_dropout)
pnnx_ncnn_add_test(F_dropout2d)
pnnx_ncnn_add_test(F_dropout3d)
pnnx_ncnn_add_test(F_elu)
pnnx_ncnn_add_test(F_embedding)
pnnx_ncnn_add_test(F_feature_alpha_dropout)
pnnx_ncnn_add_test(F_gelu)
pnnx_ncnn_add_test(F_group_norm)
pnnx_ncnn_add_test(F_hardsigmoid)
pnnx_ncnn_add_test(F_hardswish)
pnnx_ncnn_add_test(F_hardtanh)
pnnx_ncnn_add_test(F_interpolate)
pnnx_ncnn_add_test(F_layer_norm)
pnnx_ncnn_add_test(F_leaky_relu)
pnnx_ncnn_add_test(F_local_response_norm)
pnnx_ncnn_add_test(F_max_pool1d)
pnnx_ncnn_add_test(F_max_pool2d)
pnnx_ncnn_add_test(F_max_pool3d)
pnnx_ncnn_add_test(F_normalize)
pnnx_ncnn_add_test(F_pad)
pnnx_ncnn_add_test(F_pixel_shuffle)
pnnx_ncnn_add_test(F_pixel_unshuffle)
pnnx_ncnn_add_test(F_prelu)
pnnx_ncnn_add_test(F_relu)
pnnx_ncnn_add_test(F_relu6)
pnnx_ncnn_add_test(F_sigmoid)
pnnx_ncnn_add_test(F_silu)
pnnx_ncnn_add_test(F_softmax)
pnnx_ncnn_add_test(F_tanh)
pnnx_ncnn_add_test(F_upsample_bilinear)
pnnx_ncnn_add_test(F_upsample_nearest)
pnnx_ncnn_add_test(F_upsample)

pnnx_ncnn_add_test(nn_AdaptiveAvgPool1d)
pnnx_ncnn_add_test(nn_AdaptiveAvgPool2d)
pnnx_ncnn_add_test(nn_AdaptiveAvgPool3d)
pnnx_ncnn_add_test(nn_AdaptiveMaxPool1d)
pnnx_ncnn_add_test(nn_AdaptiveMaxPool2d)
pnnx_ncnn_add_test(nn_AdaptiveMaxPool3d)
pnnx_ncnn_add_test(nn_AlphaDropout)
pnnx_ncnn_add_test(nn_AvgPool1d)
pnnx_ncnn_add_test(nn_AvgPool2d)
pnnx_ncnn_add_test(nn_AvgPool3d)
pnnx_ncnn_add_test(nn_BatchNorm1d)
pnnx_ncnn_add_test(nn_BatchNorm2d)
pnnx_ncnn_add_test(nn_BatchNorm3d)
pnnx_ncnn_add_test(nn_ChannelShuffle)
pnnx_ncnn_add_test(nn_ConstantPad1d)
pnnx_ncnn_add_test(nn_ConstantPad2d)
pnnx_ncnn_add_test(nn_ConstantPad3d)
pnnx_ncnn_add_test(nn_Conv1d)
pnnx_ncnn_add_test(nn_Conv2d)
pnnx_ncnn_add_test(nn_Conv3d)
pnnx_ncnn_add_test(nn_ConvTranspose1d)
pnnx_ncnn_add_test(nn_ConvTranspose2d)
pnnx_ncnn_add_test(nn_ConvTranspose3d)
pnnx_ncnn_add_test(nn_Dropout)
pnnx_ncnn_add_test(nn_Dropout2d)
pnnx_ncnn_add_test(nn_Dropout3d)
pnnx_ncnn_add_test(nn_ELU)
pnnx_ncnn_add_test(nn_Embedding)
pnnx_ncnn_add_test(nn_GELU)
pnnx_ncnn_add_test(nn_GroupNorm)
pnnx_ncnn_add_test(nn_GRU)
pnnx_ncnn_add_test(nn_Hardsigmoid)
pnnx_ncnn_add_test(nn_Hardswish)
pnnx_ncnn_add_test(nn_Hardtanh)
pnnx_ncnn_add_test(nn_InstanceNorm2d)
pnnx_ncnn_add_test(nn_LayerNorm)
pnnx_ncnn_add_test(nn_LeakyReLU)
pnnx_ncnn_add_test(nn_Linear)
pnnx_ncnn_add_test(nn_LocalResponseNorm)
pnnx_ncnn_add_test(nn_LSTM)
pnnx_ncnn_add_test(nn_MaxPool1d)
pnnx_ncnn_add_test(nn_MaxPool2d)
pnnx_ncnn_add_test(nn_MaxPool3d)
pnnx_ncnn_add_test(nn_MultiheadAttention)
pnnx_ncnn_add_test(nn_PixelShuffle)
pnnx_ncnn_add_test(nn_PixelUnshuffle)
pnnx_ncnn_add_test(nn_PReLU)
pnnx_ncnn_add_test(nn_ReflectionPad1d)
pnnx_ncnn_add_test(nn_ReflectionPad2d)
pnnx_ncnn_add_test(nn_ReLU)
pnnx_ncnn_add_test(nn_ReLU6)
pnnx_ncnn_add_test(nn_ReplicationPad1d)
pnnx_ncnn_add_test(nn_ReplicationPad2d)
pnnx_ncnn_add_test(nn_RNN)
pnnx_ncnn_add_test(nn_SELU)
pnnx_ncnn_add_test(nn_Sigmoid)
pnnx_ncnn_add_test(nn_SiLU)
pnnx_ncnn_add_test(nn_Softmax)
pnnx_ncnn_add_test(nn_Tanh)
pnnx_ncnn_add_test(nn_Upsample)
pnnx_ncnn_add_test(nn_UpsamplingBilinear2d)
pnnx_ncnn_add_test(nn_UpsamplingNearest2d)
pnnx_ncnn_add_test(nn_ZeroPad2d)

pnnx_ncnn_add_test(Tensor_contiguous)
pnnx_ncnn_add_test(Tensor_repeat)
pnnx_ncnn_add_test(Tensor_reshape)
pnnx_ncnn_add_test(Tensor_slice)
pnnx_ncnn_add_test(Tensor_view)

pnnx_ncnn_add_test(torch_addmm)
pnnx_ncnn_add_test(torch_amax)
pnnx_ncnn_add_test(torch_amin)
pnnx_ncnn_add_test(torch_cat)
pnnx_ncnn_add_test(torch_chunk)
pnnx_ncnn_add_test(torch_clamp)
pnnx_ncnn_add_test(torch_clone)
pnnx_ncnn_add_test(torch_logsumexp)
pnnx_ncnn_add_test(torch_matmul)
pnnx_ncnn_add_test(torch_mean)
pnnx_ncnn_add_test(torch_permute)
pnnx_ncnn_add_test(torch_prod)
pnnx_ncnn_add_test(torch_sum)
pnnx_ncnn_add_test(torch_squeeze)
pnnx_ncnn_add_test(torch_transpose)
pnnx_ncnn_add_test(torch_unbind)
pnnx_ncnn_add_test(torch_unsqueeze)

pnnx_ncnn_add_test(mobilenet_v2)
pnnx_ncnn_add_test(mobilenet_v3_small)
pnnx_ncnn_add_test(resnet18)
pnnx_ncnn_add_test(shufflenet_v2_x1_0)
pnnx_ncnn_add_test(squeezenet1_1)

pnnx_ncnn_add_test(ncnn_fuse_transpose_matmul)

if(Torch_VERSION VERSION_GREATER_EQUAL "1.9")
    pnnx_ncnn_add_test(F_mish)
    pnnx_ncnn_add_test(nn_Mish)
endif()
