#                                               -*- cmake -*-

set (PYINSTALLCHECK_ENVIRONMENT "OPENTURNS_CONFIG_PATH=${INSTALL_DESTDIR}${SYSCONFIG_PATH}/openturns"
                                 "PYTHONPATH=${INSTALL_DESTDIR}${PYTHON_MODULE_PATH}${PATH_SEP}$ENV{PYTHONPATH}" "MPLBACKEND=agg"
   )

# This macro compiles on the fly and run the corresponding post-installation test
# It can have two optional arguments PRE and POST followed by some shell command to be run
# before or after the test if needed
# PRE and POST options cn be repeated many times: the arguments will be run one after the other
# in the order of appearence. If one fails, the whole command fails.
macro (ot_pyinstallcheck_test TESTNAME)
  set (TESTNAME_TGT t_${TESTNAME})
  set (TESTNAME_SRC ${TESTNAME_TGT}.py)
  set (TESTNAME_LOC ${CMAKE_CURRENT_SOURCE_DIR}/${TESTNAME_SRC})
  set (_CMD)
  set (_PARAMS)
  set (_IGNOREOUT OFF)
  foreach (_ARG ${ARGN})
    string (TOUPPER ${_ARG} ARG)
    if (${ARG} MATCHES PARAMS)
      set (_CMD PARAMS)
    elseif (${ARG} MATCHES IGNOREOUT)
      set (_IGNOREOUT ON)
    else ()
      if (${_CMD} MATCHES PARAMS)
        set (_PARAMS "${_PARAMS} ${_ARG}")
      endif ()
      set (_CMD)
    endif ()
  endforeach ()

  if (_IGNOREOUT)
    set (COMMAND "(${PYTHON_EXECUTABLE} ${TESTNAME_LOC} ${_PARAMS} > /dev/null)")
  else (_IGNOREOUT)
    set (TESTNAME_OUT ${TESTNAME_TGT}.expout)
    get_source_file_property (OUTFILE_LOC ${TESTNAME_OUT} LOCATION)
    set (OUTFILE_LOC ${CMAKE_CURRENT_SOURCE_DIR}/${TESTNAME_OUT})
    set (COMMAND "(${PYTHON_EXECUTABLE} ${TESTNAME_LOC} ${_PARAMS} > ${CMAKE_CURRENT_BINARY_DIR}/${TESTNAME_TGT}.out) && diff -u --strip-trailing-cr ${OUTFILE_LOC} ${CMAKE_CURRENT_BINARY_DIR}/${TESTNAME_TGT}.out")
  endif ()

  add_test (pyinstallcheck_${TESTNAME} "sh" "-c" "${COMMAND}")
  set_tests_properties (pyinstallcheck_${TESTNAME} PROPERTIES ENVIRONMENT "${PYINSTALLCHECK_ENVIRONMENT}")
endmacro ()


## Python post-installation tests

# Use cases
ot_pyinstallcheck_test (ackley_function IGNOREOUT)
ot_pyinstallcheck_test (branin_function IGNOREOUT)
ot_pyinstallcheck_test (cantilever_beam IGNOREOUT)
ot_pyinstallcheck_test (chaboche_model IGNOREOUT)
ot_pyinstallcheck_test (deflection_tube IGNOREOUT)
ot_pyinstallcheck_test (flood_model IGNOREOUT)
ot_pyinstallcheck_test (ishigami_function IGNOREOUT)
ot_pyinstallcheck_test (logistic_model IGNOREOUT)
ot_pyinstallcheck_test (stressed_beam IGNOREOUT)
ot_pyinstallcheck_test (fireSatellite_function IGNOREOUT)
ot_pyinstallcheck_test (wingweight_function IGNOREOUT)
if (NUMPY_FOUND)
  ot_pyinstallcheck_test (viscous_free_fall IGNOREOUT)
endif()

# Common
if (LIBXML2_FOUND)
  ot_pyinstallcheck_test (Object_pickle)
endif ()
ot_pyinstallcheck_test (ComparisonOperator_std)
if (LIBXML2_FOUND)
  ot_pyinstallcheck_test (Study_saveload)
  ot_pyinstallcheck_test (Study_std IGNOREOUT)
  if (HDF5_FOUND)
    ot_pyinstallcheck_test (Study_h5 IGNOREOUT)
  endif ()
endif ()
ot_pyinstallcheck_test (Path_std IGNOREOUT)
ot_pyinstallcheck_test (ResourceMap_std IGNOREOUT)
ot_pyinstallcheck_test (Catalog_std IGNOREOUT)

# Type
ot_pyinstallcheck_test (Collection_std)
ot_pyinstallcheck_test (Description_std)
ot_pyinstallcheck_test (Indices_std)
ot_pyinstallcheck_test (IndicesCollection_std)
ot_pyinstallcheck_test (Point_std)
ot_pyinstallcheck_test (Point_description)
ot_pyinstallcheck_test (Matrix_std)
ot_pyinstallcheck_test (SymmetricMatrix_lapack)
ot_pyinstallcheck_test (SquareMatrix_lapack)
ot_pyinstallcheck_test (SquareMatrix_std)
ot_pyinstallcheck_test (TriangularMatrix_std)
ot_pyinstallcheck_test (SymmetricMatrix_std)
ot_pyinstallcheck_test (Tensor_std)
ot_pyinstallcheck_test (ComplexTensor_std)
ot_pyinstallcheck_test (SymmetricTensor_std)
ot_pyinstallcheck_test (Matrix_solve)
ot_pyinstallcheck_test (Matrix_decomposition)
ot_pyinstallcheck_test (IdentityMatrix_std)
ot_pyinstallcheck_test (RegularGrid_std)
ot_pyinstallcheck_test (ComplexMatrix_std)
ot_pyinstallcheck_test (SquareComplexMatrix_std)
ot_pyinstallcheck_test (HermitianMatrix_std)
ot_pyinstallcheck_test (TriangularComplexMatrix_std)
ot_pyinstallcheck_test (Matrix_slice)
ot_pyinstallcheck_test (Matrix_operators)
if (NUMPY_FOUND)
  ot_pyinstallcheck_test (Matrix_numpy)
endif ()

# Func
ot_pyinstallcheck_test (SpecFunc_std)
ot_pyinstallcheck_test (Function_std)
ot_pyinstallcheck_test (Function_linearity IGNOREOUT)
ot_pyinstallcheck_test (ComposedFunction_std)
ot_pyinstallcheck_test (Function_python)
if (LIBXML2_FOUND)
ot_pyinstallcheck_test (Function_python_saveload)
endif ()
ot_pyinstallcheck_test (DatabaseFunction_std)
ot_pyinstallcheck_test (Function_operations)
ot_pyinstallcheck_test (ParametricFunction_std)

ot_pyinstallcheck_test (Function_draw)
ot_pyinstallcheck_test (MemoizeFunction_std)
ot_pyinstallcheck_test (AggregatedEvaluation_std)
if (OPENTURNS_HAVE_EXPRTK)
ot_pyinstallcheck_test (SymbolicEvaluation_std)
ot_pyinstallcheck_test (SymbolicGradient_std)
ot_pyinstallcheck_test (SymbolicHessian_std)
ot_pyinstallcheck_test (SymbolicFunction_std)
endif ()
if (OPENTURNS_HAVE_MUPARSER)
ot_pyinstallcheck_test (SymbolicEvaluation_muparser)
ot_pyinstallcheck_test (SymbolicGradient_muparser)
ot_pyinstallcheck_test (SymbolicHessian_muparser)
ot_pyinstallcheck_test (SymbolicFunction_muparser)
endif ()
ot_pyinstallcheck_test (TranslationFunction_std)
ot_pyinstallcheck_test (LinearFunction_std)
ot_pyinstallcheck_test (LinearEvaluation_std)
ot_pyinstallcheck_test (LinearCombinationEvaluation_std)
ot_pyinstallcheck_test (LinearCombinationGradient_std)
ot_pyinstallcheck_test (LinearCombinationHessian_std)
ot_pyinstallcheck_test (PiecewiseLinearEvaluation_std)
ot_pyinstallcheck_test (PiecewiseHermiteEvaluation_std)
ot_pyinstallcheck_test (QuadraticFunction_std)
ot_pyinstallcheck_test (QuadraticEvaluation_std)
ot_pyinstallcheck_test (LinearGradient_std)
ot_pyinstallcheck_test (AggregatedFunction_std)
ot_pyinstallcheck_test (DualLinearCombinationFunction_std)
ot_pyinstallcheck_test (IndicatorFunction_std IGNOREOUT)
ot_pyinstallcheck_test (DistanceToDomainFunction_std IGNOREOUT)
ot_pyinstallcheck_test (LinearCombinationFunction_std)
ot_pyinstallcheck_test (ConstantGradient_std)
ot_pyinstallcheck_test (ConstantHessian_std)
ot_pyinstallcheck_test (Basis_std)
ot_pyinstallcheck_test (BasisSequence_std)
ot_pyinstallcheck_test (LARS_std)
ot_pyinstallcheck_test (FieldFunction_std)
ot_pyinstallcheck_test (FieldFunction_python)
ot_pyinstallcheck_test (ValueFunction_std)
ot_pyinstallcheck_test (VertexValueFunction_std)
ot_pyinstallcheck_test (FieldToPointFunction_std)
ot_pyinstallcheck_test (FieldToPointFunction_python)
ot_pyinstallcheck_test (PointToFieldFunction_std)
ot_pyinstallcheck_test (PointToFieldFunction_python)
if (LIBXML2_FOUND AND DILL_FOUND)
  ot_pyinstallcheck_test (PythonPointToFieldFunction_save IGNOREOUT)
  ot_pyinstallcheck_test (PythonPointToFieldFunction_load IGNOREOUT)
  set_tests_properties(pyinstallcheck_PythonPointToFieldFunction_load
    PROPERTIES DEPENDS pyinstallcheck_PythonPointToFieldFunction_save)
endif ()
ot_pyinstallcheck_test (ParametricPointToFieldFunction_std)
ot_pyinstallcheck_test (VertexValuePointToFieldFunction_std)
ot_pyinstallcheck_test (BoxCoxEvaluation_std)
ot_pyinstallcheck_test (BoxCoxTransform_std)
ot_pyinstallcheck_test (InverseBoxCoxEvaluation_std)
ot_pyinstallcheck_test (InverseBoxCoxTransform_std)
ot_pyinstallcheck_test (TrendEvaluation_std)
ot_pyinstallcheck_test (TrendTransform_std)
ot_pyinstallcheck_test (InverseTrendEvaluation_std)
ot_pyinstallcheck_test (InverseTrendTransform_std)
ot_pyinstallcheck_test (ExpertMixture_std)
ot_pyinstallcheck_test (UniVariatePolynomial_std)
ot_pyinstallcheck_test (BasisFactory_std)
ot_pyinstallcheck_test (Field_std)
ot_pyinstallcheck_test (MonomialFunction_std)
ot_pyinstallcheck_test (MonomialFunctionFactory_std)
ot_pyinstallcheck_test (TensorizedUniVariateFunctionFactory_std)
ot_pyinstallcheck_test (PointToPointEvaluation_std)
ot_pyinstallcheck_test (PointToPointConnection_std)
ot_pyinstallcheck_test (PointToFieldConnection_std)
ot_pyinstallcheck_test (FieldToPointConnection_std)
ot_pyinstallcheck_test (FieldToFieldConnection_std)
if (NOT MINGW)
  ot_pyinstallcheck_test (PythonFunction_multiprocessing IGNOREOUT)
endif ()
if (LIBXML2_FOUND AND DILL_FOUND)
  ot_pyinstallcheck_test (PythonFunction_save IGNOREOUT)
  ot_pyinstallcheck_test (PythonFunction_load IGNOREOUT)
  set_tests_properties(pyinstallcheck_PythonFunction_load
    PROPERTIES DEPENDS pyinstallcheck_PythonFunction_save)
endif ()

# Stat
ot_pyinstallcheck_test (Sample_std)
ot_pyinstallcheck_test (Sample_computation)
ot_pyinstallcheck_test (Sample_slice)
ot_pyinstallcheck_test (Sample_split)
ot_pyinstallcheck_test (Sample_large)
ot_pyinstallcheck_test (Sample_bug14)
if (BISON_FOUND AND FLEX_FOUND)
ot_pyinstallcheck_test (Sample_csv)
endif ()
if (OPENTURNS_HAVE_FR_LOC)
  ot_pyinstallcheck_test (Sample_csv_fr)
endif ()
ot_pyinstallcheck_test (Sample_operators)
if (PANDAS_FOUND)
  ot_pyinstallcheck_test (Sample_pandas IGNOREOUT)
endif ()
ot_pyinstallcheck_test (HistoryStrategy_std)
ot_pyinstallcheck_test (CovarianceMatrix_std)
ot_pyinstallcheck_test (CorrelationMatrix_std)
ot_pyinstallcheck_test (CorrelationAnalysis_std IGNOREOUT)
ot_pyinstallcheck_test (Field_draw)
ot_pyinstallcheck_test (ProcessSample_std)
ot_pyinstallcheck_test (RandomGenerator_std)
ot_pyinstallcheck_test (SobolSequence_std)
ot_pyinstallcheck_test (FaureSequence_std)
ot_pyinstallcheck_test (HaltonSequence_std)
ot_pyinstallcheck_test (HaselgroveSequence_std)
ot_pyinstallcheck_test (ReverseHaltonSequence_std)
ot_pyinstallcheck_test (TestResult_std)
ot_pyinstallcheck_test (TimeSeries_std)
ot_pyinstallcheck_test (FilteringWindows_std)
ot_pyinstallcheck_test (WelchFactory_std)
ot_pyinstallcheck_test (ExponentialModel_std)
ot_pyinstallcheck_test (CovarianceModel_std IGNOREOUT)
ot_pyinstallcheck_test (ExponentiallyDampedCosineModel_std)
ot_pyinstallcheck_test (CauchyModel_std)
ot_pyinstallcheck_test (UserDefinedSpectralModel_std)
ot_pyinstallcheck_test (UserDefinedCovarianceModel_std)
ot_pyinstallcheck_test (UserDefinedStationaryCovarianceModel_std)
ot_pyinstallcheck_test (StationaryCovarianceModelFactory_std)
ot_pyinstallcheck_test (NonStationaryCovarianceModelFactory_std)
ot_pyinstallcheck_test (ProductCovarianceModel_std)
ot_pyinstallcheck_test (StationaryFunctionalCovarianceModel_std IGNOREOUT)

if (HMAT_FOUND)
ot_pyinstallcheck_test (HMatrix_std)
endif ()

# Geom
ot_pyinstallcheck_test (Domain_std)
ot_pyinstallcheck_test (Interval_std)
ot_pyinstallcheck_test (IntervalMesher_std)
ot_pyinstallcheck_test (LevelSet_std)
ot_pyinstallcheck_test (LevelSetMesher_std)
ot_pyinstallcheck_test (Mesh_std)
ot_pyinstallcheck_test (Mesh_draw IGNOREOUT)
ot_pyinstallcheck_test (DomainComplement_std)
ot_pyinstallcheck_test (DomainDifference_std)
ot_pyinstallcheck_test (DomainIntersection_std)
ot_pyinstallcheck_test (DomainUnion_std)
ot_pyinstallcheck_test (DomainDisjunctiveUnion_std)

## Graph
ot_pyinstallcheck_test (BarPlot_std)
ot_pyinstallcheck_test (Cloud_std)
ot_pyinstallcheck_test (Contour_std)
ot_pyinstallcheck_test (Curve_std)
ot_pyinstallcheck_test (Drawable_std)
ot_pyinstallcheck_test (Graph_mix)
ot_pyinstallcheck_test (Pie_std)
ot_pyinstallcheck_test (Polygon_std)
ot_pyinstallcheck_test (PolygonArray_std)
ot_pyinstallcheck_test (Staircase_std)
ot_pyinstallcheck_test (Text_std)
ot_pyinstallcheck_test (GridLayout_std IGNOREOUT)

## Diff
ot_pyinstallcheck_test (FiniteDifferenceStep_std)
ot_pyinstallcheck_test (CenteredFiniteDifferenceGradient_std)
ot_pyinstallcheck_test (CenteredFiniteDifferenceHessian_std)
ot_pyinstallcheck_test (NonCenteredFiniteDifferenceGradient_std)

## Optim
ot_pyinstallcheck_test (AbdoRackwitz_std)
if (Bonmin_FOUND)
  ot_pyinstallcheck_test (Bonmin_std IGNOREOUT)
  ot_pyinstallcheck_test (Bonmin_4dsoo IGNOREOUT)
  ot_pyinstallcheck_test (Bonmin_MIT15 IGNOREOUT)
  ot_pyinstallcheck_test (Bonmin_swiler2014 IGNOREOUT)
endif ()
if (Ipopt_FOUND)
  ot_pyinstallcheck_test (Ipopt_std IGNOREOUT)
endif ()
if (Ceres_FOUND)
  ot_pyinstallcheck_test (Ceres_std IGNOREOUT)
endif ()
if (CMinpack_FOUND)
  ot_pyinstallcheck_test (CMinpack_std IGNOREOUT)
endif ()
ot_pyinstallcheck_test (Cobyla_std)
if (dlib_FOUND)
  ot_pyinstallcheck_test (Dlib_std IGNOREOUT)
  ot_pyinstallcheck_test (Dlib_lsq IGNOREOUT)
  if (dlib_VERSION VERSION_GREATER 19.7)
    ot_pyinstallcheck_test (Dlib_global IGNOREOUT)
  endif()
endif ()
ot_pyinstallcheck_test (MultiStart_std IGNOREOUT)
ot_pyinstallcheck_test (NearestPointChecker_std)
if (NLopt_FOUND)
  ot_pyinstallcheck_test (NLopt_std)
endif ()
if (Pagmo_FOUND)
  ot_pyinstallcheck_test (Pagmo_std IGNOREOUT)
endif ()
ot_pyinstallcheck_test (EfficientGlobalOptimization_std IGNOREOUT)
ot_pyinstallcheck_test (SQP_std)
ot_pyinstallcheck_test (TNC_std)

## Solver
ot_pyinstallcheck_test (Brent_std)
ot_pyinstallcheck_test (Bisection_std)
ot_pyinstallcheck_test (Secant_std)
ot_pyinstallcheck_test (Solver_hard)
ot_pyinstallcheck_test (RungeKutta_std)
ot_pyinstallcheck_test (Fehlberg_std)

# Algo
ot_pyinstallcheck_test (PenalizedLeastSquaresAlgorithm_std)
ot_pyinstallcheck_test (KFold_std)
ot_pyinstallcheck_test (CorrectedLeaveOneOut_std)
if (NUMPY_FOUND)
  ot_pyinstallcheck_test (KDTree_std IGNOREOUT)
  ot_pyinstallcheck_test (NaiveNearestNeighbour_std IGNOREOUT)
  ot_pyinstallcheck_test (NearestNeighbour1D_std)
endif ()
ot_pyinstallcheck_test (RegularGridNearestNeighbour_std)
ot_pyinstallcheck_test (BoundingVolumeHierarchy_std)
ot_pyinstallcheck_test (NaiveEnclosingSimplex_std)
ot_pyinstallcheck_test (RegularGridEnclosingSimplex_std IGNOREOUT)
ot_pyinstallcheck_test (EnclosingSimplexMonotonic1D_std IGNOREOUT)
ot_pyinstallcheck_test (LeastSquaresMetaModelSelectionFactory_std)
ot_pyinstallcheck_test (KissFFT_std)
ot_pyinstallcheck_test (FilonQuadrature_std)
ot_pyinstallcheck_test (GaussKronrod_std)
ot_pyinstallcheck_test (GaussLegendre_std)
ot_pyinstallcheck_test (FejerAlgorithm_std IGNOREOUT)
ot_pyinstallcheck_test (IteratedQuadrature_std)
ot_pyinstallcheck_test (DesignProxy_std)
ot_pyinstallcheck_test (LeastSquaresMethod_std)
ot_pyinstallcheck_test (KarhunenLoeveP1Algorithm_std)
ot_pyinstallcheck_test (KarhunenLoeveSVDAlgorithm_std)
ot_pyinstallcheck_test (KarhunenLoeveResult_std IGNOREOUT)
ot_pyinstallcheck_test (KarhunenLoeveLifting_std)
ot_pyinstallcheck_test (KarhunenLoeveProjection_std)
ot_pyinstallcheck_test (KarhunenLoeveReduction_std IGNOREOUT)
ot_pyinstallcheck_test (KarhunenLoeveValidation_std IGNOREOUT)
ot_pyinstallcheck_test (P1LagrangeInterpolation_std)
ot_pyinstallcheck_test (P1LagrangeEvaluation_std IGNOREOUT)

## Model
ot_pyinstallcheck_test (StandardEvent_std)
ot_pyinstallcheck_test (Event_domain)
ot_pyinstallcheck_test (RandomVector_constant)
ot_pyinstallcheck_test (RandomVector_distribution)
ot_pyinstallcheck_test (RandomVector_composite)
ot_pyinstallcheck_test (RandomVector_conditional)
ot_pyinstallcheck_test (RandomVector_python)
if (LIBXML2_FOUND AND DILL_FOUND)
  ot_pyinstallcheck_test (PythonRandomVector_save IGNOREOUT)
  ot_pyinstallcheck_test (PythonRandomVector_load IGNOREOUT)
  set_tests_properties(pyinstallcheck_PythonRandomVector_load
    PROPERTIES DEPENDS pyinstallcheck_PythonRandomVector_save)
endif ()
ot_pyinstallcheck_test (Event_system IGNOREOUT)

## Process
ot_pyinstallcheck_test (WhiteNoise_std)
ot_pyinstallcheck_test (RandomWalk_std)
ot_pyinstallcheck_test (DiscreteMarkovChain_std)
ot_pyinstallcheck_test (AggregatedProcess_std)
ot_pyinstallcheck_test (ARMAState_std)
ot_pyinstallcheck_test (ARMACoefficients_std)
ot_pyinstallcheck_test (ARMA_std)
ot_pyinstallcheck_test (GaussianProcess_std)
ot_pyinstallcheck_test (SpectralGaussianProcess_std)
ot_pyinstallcheck_test (CompositeProcess_std)
ot_pyinstallcheck_test (ARMALikelihoodFactory_std)
ot_pyinstallcheck_test (FunctionalBasisProcess_std)
ot_pyinstallcheck_test (WhittleFactory_std)
ot_pyinstallcheck_test (ConditionedGaussianProcess_std)
ot_pyinstallcheck_test (KarhunenLoeveQuadratureAlgorithm_std)

## Transformation
ot_pyinstallcheck_test (MarginalTransformationEvaluation_std)
ot_pyinstallcheck_test (MarginalTransformationGradient_std)
ot_pyinstallcheck_test (MarginalTransformationHessian_std)
ot_pyinstallcheck_test (InverseNatafIndependentCopulaEvaluation_std)
ot_pyinstallcheck_test (InverseNatafIndependentCopulaGradient_std)
ot_pyinstallcheck_test (InverseNatafIndependentCopulaHessian_std)
ot_pyinstallcheck_test (NatafIndependentCopulaEvaluation_std)
ot_pyinstallcheck_test (NatafIndependentCopulaGradient_std)
ot_pyinstallcheck_test (NatafIndependentCopulaHessian_std)
ot_pyinstallcheck_test (InverseRosenblattEvaluation_std)
ot_pyinstallcheck_test (InverseRosenblattEvaluation_form IGNOREOUT)
ot_pyinstallcheck_test (RosenblattEvaluation_std)
ot_pyinstallcheck_test (IsoProbabilisticTransformation_EllipticalDistribution)
ot_pyinstallcheck_test (IsoProbabilisticTransformation_EllipticalCopula)
ot_pyinstallcheck_test (IsoProbabilisticTransformation_IndependentCopula)
ot_pyinstallcheck_test (BoxCoxFactory_std)
ot_pyinstallcheck_test (BoxCoxFactory_glm)
ot_pyinstallcheck_test (TrendFactory_std)
ot_pyinstallcheck_test (DistributionTransformation_std)

## Distribution
ot_pyinstallcheck_test (AliMikhailHaqCopula_std)
ot_pyinstallcheck_test (AliMikhailHaqCopulaFactory_std)
ot_pyinstallcheck_test (Arcsine_std)
ot_pyinstallcheck_test (ArcsineFactory_std)
ot_pyinstallcheck_test (BayesDistribution_std)
ot_pyinstallcheck_test (Bernoulli_std)
ot_pyinstallcheck_test (BernoulliFactory_std)
ot_pyinstallcheck_test (BernsteinCopulaFactory_std)
ot_pyinstallcheck_test (Beta_std)
ot_pyinstallcheck_test (BetaFactory_std)
ot_pyinstallcheck_test (Binomial_std)
ot_pyinstallcheck_test (BinomialFactory_std)
ot_pyinstallcheck_test (BlockIndependentDistribution_std)
ot_pyinstallcheck_test (Burr_std)
ot_pyinstallcheck_test (BurrFactory_std)
ot_pyinstallcheck_test (Chi_std)
ot_pyinstallcheck_test (ChiFactory_std)
ot_pyinstallcheck_test (ChiSquare_std)
ot_pyinstallcheck_test (ChiSquareFactory_std)
ot_pyinstallcheck_test (ClaytonCopula_std)
ot_pyinstallcheck_test (ClaytonCopulaFactory_std)
ot_pyinstallcheck_test (ComposedCopula_std)
ot_pyinstallcheck_test (ComposedDistribution_std)
ot_pyinstallcheck_test (ComposedDistribution_large)
ot_pyinstallcheck_test (CompositeDistribution_std)
ot_pyinstallcheck_test (ConditionalDistribution_std)
ot_pyinstallcheck_test (CumulativeDistributionNetwork_std)
ot_pyinstallcheck_test (Dirac_std)
ot_pyinstallcheck_test (DiracFactory_std)
ot_pyinstallcheck_test (Dirichlet_std)
ot_pyinstallcheck_test (DirichletFactory_std)
ot_pyinstallcheck_test (DiscreteCompoundDistribution_std)
ot_pyinstallcheck_test (Distribution_std IGNOREOUT)
ot_pyinstallcheck_test (DistributionFactory_std IGNOREOUT)
ot_pyinstallcheck_test (EmpiricalBernsteinCopula_std)
ot_pyinstallcheck_test (Epanechnikov_std)
ot_pyinstallcheck_test (Exponential_std)
ot_pyinstallcheck_test (ExponentialFactory_std)
ot_pyinstallcheck_test (ExtremeValueCopula_std)
ot_pyinstallcheck_test (JoeCopula_std)
ot_pyinstallcheck_test (FarlieGumbelMorgensternCopula_std)
ot_pyinstallcheck_test (FarlieGumbelMorgensternCopulaFactory_std)
ot_pyinstallcheck_test (FrankCopula_std)
ot_pyinstallcheck_test (FrankCopulaFactory_std)
ot_pyinstallcheck_test (FisherSnedecor_std)
ot_pyinstallcheck_test (FisherSnedecorFactory_std)
ot_pyinstallcheck_test (Frechet_std)
ot_pyinstallcheck_test (FrechetFactory_std)
ot_pyinstallcheck_test (GalambosCopula_std IGNOREOUT)
ot_pyinstallcheck_test (Gamma_std)
ot_pyinstallcheck_test (GammaFactory_std)
ot_pyinstallcheck_test (GeneralizedExtremeValue_std)
ot_pyinstallcheck_test (GeneralizedExtremeValueFactory_std)
ot_pyinstallcheck_test (GeneralizedPareto_std)
ot_pyinstallcheck_test (GeneralizedParetoFactory_std)
ot_pyinstallcheck_test (Geometric_std)
ot_pyinstallcheck_test (GeometricFactory_std)
ot_pyinstallcheck_test (Gumbel_std)
ot_pyinstallcheck_test (GumbelFactory_std)
ot_pyinstallcheck_test (GumbelCopula_std)
ot_pyinstallcheck_test (GumbelCopulaFactory_std)
ot_pyinstallcheck_test (Histogram_std)
ot_pyinstallcheck_test (HistogramFactory_std)
ot_pyinstallcheck_test (Hypergeometric_std)
ot_pyinstallcheck_test (IndependentCopula_std)
ot_pyinstallcheck_test (IndependentCopulaFactory_std IGNOREOUT)
ot_pyinstallcheck_test (InverseChiSquare_std)
ot_pyinstallcheck_test (InverseGamma_std)
ot_pyinstallcheck_test (InverseNormal_std)
ot_pyinstallcheck_test (InverseNormalFactory_std)
ot_pyinstallcheck_test (InverseWishart_std)
ot_pyinstallcheck_test (KPermutationsDistribution_std)
ot_pyinstallcheck_test (KernelMixture_std)
ot_pyinstallcheck_test (KernelSmoothing_std)
ot_pyinstallcheck_test (Laplace_std)
ot_pyinstallcheck_test (LaplaceFactory_std)
ot_pyinstallcheck_test (LeastSquaresDistributionFactory_std)
ot_pyinstallcheck_test (Logistic_std)
ot_pyinstallcheck_test (LogisticFactory_std)
ot_pyinstallcheck_test (LogNormal_std)
if (Ceres_FOUND OR CMinpack_FOUND)
ot_pyinstallcheck_test (LogNormalFactory_std)
endif ()
ot_pyinstallcheck_test (LogUniform_std)
ot_pyinstallcheck_test (LogUniformFactory_std)
ot_pyinstallcheck_test (OrderStatisticsMarginalChecker_std)
#ot_pyinstallcheck_test (MarginalDistribution_std)
ot_pyinstallcheck_test (MarshallOlkinCopula_std)
ot_pyinstallcheck_test (MaximumDistribution_std)
ot_pyinstallcheck_test (MaximumEntropyOrderStatisticsDistribution_std)
ot_pyinstallcheck_test (MaximumEntropyOrderStatisticsCopula_std)
ot_pyinstallcheck_test (MaximumLikelihoodFactory_std)
ot_pyinstallcheck_test (MeixnerDistribution_std)
ot_pyinstallcheck_test (MeixnerDistributionFactory_std)
if (Ceres_FOUND OR CMinpack_FOUND)
ot_pyinstallcheck_test (MethodOfMomentsFactory_std)
endif ()
ot_pyinstallcheck_test (MinCopula_std)
ot_pyinstallcheck_test (MixedHistogramUserDefined_std)
ot_pyinstallcheck_test (Mixture_std)
ot_pyinstallcheck_test (Multinomial_std)
ot_pyinstallcheck_test (MultinomialFactory_std)
ot_pyinstallcheck_test (NegativeBinomial_std)
ot_pyinstallcheck_test (NegativeBinomialFactory_std)
ot_pyinstallcheck_test (NonCentralChiSquare_std)
if (Boost_FOUND)
ot_pyinstallcheck_test (NonCentralStudent_std)
endif ()
ot_pyinstallcheck_test (Normal_std)
ot_pyinstallcheck_test (NormalFactory_std)
ot_pyinstallcheck_test (Normal_large)
ot_pyinstallcheck_test (NormalCopula_std)
ot_pyinstallcheck_test (NormalCopulaFactory_std)
ot_pyinstallcheck_test (Normal_wrongarg)
ot_pyinstallcheck_test (NormalGamma_std)
ot_pyinstallcheck_test (OrdinalSumCopula_std)
ot_pyinstallcheck_test (ParametrizedDistribution_std)
ot_pyinstallcheck_test (Pareto_std)
if (CMAKE_SIZEOF_VOID_P EQUAL 8 AND (Ceres_FOUND OR CMinpack_FOUND))
ot_pyinstallcheck_test (ParetoFactory_std)
endif ()
ot_pyinstallcheck_test (PlackettCopula_std)
ot_pyinstallcheck_test (PlackettCopulaFactory_std)
ot_pyinstallcheck_test (Poisson_std)
ot_pyinstallcheck_test (PoissonFactory_std)
ot_pyinstallcheck_test (PosteriorDistribution_std)
ot_pyinstallcheck_test (ProductDistribution_std)
if (Ceres_FOUND OR CMinpack_FOUND)
ot_pyinstallcheck_test (QuantileMatchingFactory_std IGNOREOUT)
endif ()
ot_pyinstallcheck_test (RandomMixture_std)
ot_pyinstallcheck_test (RandomMixture_simplification)
ot_pyinstallcheck_test (RandomMixture_grid1d)
ot_pyinstallcheck_test (RandomMixture_grid2d)
ot_pyinstallcheck_test (RandomMixture_grid3d)
ot_pyinstallcheck_test (Rayleigh_std)
ot_pyinstallcheck_test (RayleighFactory_std)
ot_pyinstallcheck_test (Rice_std)
ot_pyinstallcheck_test (RiceFactory_std)
ot_pyinstallcheck_test (Skellam_std)
ot_pyinstallcheck_test (SkellamFactory_std)
ot_pyinstallcheck_test (SklarCopula_std)
ot_pyinstallcheck_test (SmoothedUniform_std)
ot_pyinstallcheck_test (SquaredNormal_std)
ot_pyinstallcheck_test (Student_std)
ot_pyinstallcheck_test (StudentFactory_std)
ot_pyinstallcheck_test (Trapezoidal_std)
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
ot_pyinstallcheck_test (TrapezoidalFactory_std)
endif ()
ot_pyinstallcheck_test (Triangular_std)
ot_pyinstallcheck_test (TriangularFactory_std)
ot_pyinstallcheck_test (TruncatedDistribution_std)
ot_pyinstallcheck_test (TruncatedNormal_std)
if (CMinpack_FOUND OR Ceres_FOUND)
ot_pyinstallcheck_test (TruncatedNormalFactory_std)
endif ()
ot_pyinstallcheck_test (Uniform_std)
ot_pyinstallcheck_test (UniformFactory_std)
ot_pyinstallcheck_test (UserDefined_std)
ot_pyinstallcheck_test (UserDefinedFactory_std)
ot_pyinstallcheck_test (VonMises_std)
ot_pyinstallcheck_test (VonMisesFactory_std)
ot_pyinstallcheck_test (WeibullMax_std)
ot_pyinstallcheck_test (WeibullMaxFactory_std)
ot_pyinstallcheck_test (WeibullMin_std)
ot_pyinstallcheck_test (WeibullMinFactory_std)
ot_pyinstallcheck_test (Wishart_std)
ot_pyinstallcheck_test (ZipfMandelbrot_std)
ot_pyinstallcheck_test (DistributionParameters_std IGNOREOUT)
ot_pyinstallcheck_test (DistFunc_beta)
ot_pyinstallcheck_test (DistFunc_binomial)
ot_pyinstallcheck_test (DistFunc_discrete)
ot_pyinstallcheck_test (DistFunc_gamma)
ot_pyinstallcheck_test (DistFunc_kfactor)
ot_pyinstallcheck_test (DistFunc_kolmogorov)
ot_pyinstallcheck_test (DistFunc_noncentralchisquare)
ot_pyinstallcheck_test (DistFunc_noncentralstudent)
ot_pyinstallcheck_test (DistFunc_normal)
ot_pyinstallcheck_test (DistFunc_poisson)
ot_pyinstallcheck_test (DistFunc_student)
ot_pyinstallcheck_test (DistFunc_spearman)
ot_pyinstallcheck_test (Distribution_draw)
ot_pyinstallcheck_test (Distribution_python)
if (LIBXML2_FOUND)
ot_pyinstallcheck_test (Distribution_python_saveload)
endif ()
if (LIBXML2_FOUND AND DILL_FOUND)
  ot_pyinstallcheck_test (PythonDistribution_save IGNOREOUT)
  ot_pyinstallcheck_test (PythonDistribution_load IGNOREOUT)
  set_tests_properties(pyinstallcheck_PythonDistribution_load
    PROPERTIES DEPENDS pyinstallcheck_PythonDistribution_save)
endif ()
ot_pyinstallcheck_test (Distribution_gradient IGNOREOUT)
ot_pyinstallcheck_test (Distribution_quantile)
ot_pyinstallcheck_test (Distribution_arithmetic)
if (SCIPY_FOUND)
  ot_pyinstallcheck_test (Distribution_scipy)
endif ()
if (CHAOSPY_FOUND)
  ot_pyinstallcheck_test (Distribution_chaospy)
endif ()
ot_pyinstallcheck_test (Distribution_roughness)

## Calibration
ot_pyinstallcheck_test (GaussianLinearCalibration_std)
ot_pyinstallcheck_test (LinearLeastSquaresCalibration_std)
ot_pyinstallcheck_test (RandomVectorMetropolisHastings_std IGNOREOUT)
ot_pyinstallcheck_test (RandomWalkMetropolisHastings_std IGNOREOUT)
ot_pyinstallcheck_test (IndependentMetropolisHastings_std IGNOREOUT)
ot_pyinstallcheck_test (UserDefinedMetropolisHastings_std IGNOREOUT)
ot_pyinstallcheck_test (Gibbs_regression IGNOREOUT)
ot_pyinstallcheck_test (Gibbs_std IGNOREOUT)
if (NUMPY_FOUND)
  ot_pyinstallcheck_test (Gibbs_mixture IGNOREOUT)
endif ()
ot_pyinstallcheck_test (GaussianLinearCalibration_chaboche)
ot_pyinstallcheck_test (LinearLeastSquaresCalibration_linear)
ot_pyinstallcheck_test (LinearLeastSquaresCalibration_noobs)
ot_pyinstallcheck_test (GaussianLinearCalibration_noobs)
if (Ceres_FOUND OR CMinpack_FOUND)
  ot_pyinstallcheck_test (CalibrationResult_std IGNOREOUT)
  ot_pyinstallcheck_test (NonLinearLeastSquaresCalibration_std)
  ot_pyinstallcheck_test (NonLinearLeastSquaresCalibration_noobs)
  ot_pyinstallcheck_test (GaussianNonLinearCalibration_std)
  ot_pyinstallcheck_test (GaussianNonLinearCalibration_noobs)
endif ()


## Classification
ot_pyinstallcheck_test (MixtureClassifier_std)
ot_pyinstallcheck_test (MinimumVolumeClassifier_std IGNOREOUT)

## Experiments
ot_pyinstallcheck_test (Axial_std)
ot_pyinstallcheck_test (Box_std)
ot_pyinstallcheck_test (Composite_std)
ot_pyinstallcheck_test (Factorial_std)
ot_pyinstallcheck_test (BootstrapExperiment_std)
ot_pyinstallcheck_test (FixedExperiment_std)
ot_pyinstallcheck_test (GaussProductExperiment_std)
ot_pyinstallcheck_test (ImportanceSamplingExperiment_std)
ot_pyinstallcheck_test (SpaceFilling_std)
ot_pyinstallcheck_test (OptimalLHSExperiment_ishigami IGNOREOUT)
ot_pyinstallcheck_test (OptimalLHSExperiment_std)
ot_pyinstallcheck_test (MonteCarloLHS_std)
ot_pyinstallcheck_test (SimulatedAnnealingLHS_std)
ot_pyinstallcheck_test (LHSExperiment_std)
ot_pyinstallcheck_test (LowDiscrepancyExperiment_std)
ot_pyinstallcheck_test (MonteCarloExperiment_std)
ot_pyinstallcheck_test (CombinatorialGenerator_std)
ot_pyinstallcheck_test (Experiment_python)
ot_pyinstallcheck_test (Splitter_std IGNOREOUT)
ot_pyinstallcheck_test (TensorProductExperiment_std IGNOREOUT)

# IterativeStat
ot_pyinstallcheck_test (IterativeExtrema_std IGNOREOUT)
ot_pyinstallcheck_test (IterativeThreshold_std IGNOREOUT)
ot_pyinstallcheck_test (IterativeMoments_std IGNOREOUT)

## OrthogonalBasis
ot_pyinstallcheck_test (LinearEnumerateFunction_std)
ot_pyinstallcheck_test (HyperbolicAnisotropicEnumerateFunction_std)
ot_pyinstallcheck_test (NormInfEnumerateFunction_std)
ot_pyinstallcheck_test (CharlierFactory_std)
ot_pyinstallcheck_test (ChebychevFactory_std)
ot_pyinstallcheck_test (HermiteFactory_std)
ot_pyinstallcheck_test (HistogramPolynomialFactory_std)
ot_pyinstallcheck_test (JacobiFactory_std)
ot_pyinstallcheck_test (KrawtchoukFactory_std)
ot_pyinstallcheck_test (LaguerreFactory_std)
ot_pyinstallcheck_test (LegendreFactory_std)
ot_pyinstallcheck_test (MeixnerFactory_std)
ot_pyinstallcheck_test (SoizeGhanemFactory_std)
ot_pyinstallcheck_test (OrthonormalizationAlgorithm_std)
ot_pyinstallcheck_test (AdaptiveStieltjesAlgorithm_std)
ot_pyinstallcheck_test (StandardDistributionPolynomialFactory_std)
ot_pyinstallcheck_test (OrthogonalBasis_std)
ot_pyinstallcheck_test (OrthogonalUniVariatePolynomialFunctionFactory_std)
ot_pyinstallcheck_test (FourierSeriesFactory_std)
ot_pyinstallcheck_test (HaarWaveletFactory_std)

## Algorithm
ot_pyinstallcheck_test (TaylorExpansionMoments_std)

## Analytical
ot_pyinstallcheck_test (Analytical_std)
ot_pyinstallcheck_test (AnalyticalResult_std)
ot_pyinstallcheck_test (FORM_std)
ot_pyinstallcheck_test (FORM_draw)
ot_pyinstallcheck_test (FORM_sensitivity)
ot_pyinstallcheck_test (FORM_interval)
ot_pyinstallcheck_test (SORM_std)
ot_pyinstallcheck_test (StrongMaximumTest_std)
ot_pyinstallcheck_test (StrongMaximumTest_other)
ot_pyinstallcheck_test (StrongMaximumTest_tabulatedValues)
if (NOT MSVC)
ot_pyinstallcheck_test (SystemFORM_std IGNOREOUT)
endif ()
ot_pyinstallcheck_test (MultiFORM_std IGNOREOUT)

## MetaModel
ot_pyinstallcheck_test (LinearTaylor_std)
ot_pyinstallcheck_test (LinearLeastSquares_std)
ot_pyinstallcheck_test (QuadraticLeastSquares_std)
ot_pyinstallcheck_test (QuadraticTaylor_std)
ot_pyinstallcheck_test (FunctionalChaos_ishigami)
ot_pyinstallcheck_test (FunctionalChaos_ishigami_sparse)
ot_pyinstallcheck_test (FunctionalChaos_ishigami_database)
ot_pyinstallcheck_test (FunctionalChaos_gsobol)
ot_pyinstallcheck_test (FunctionalChaos_gsobol_sparse)
ot_pyinstallcheck_test (FunctionalChaos_mixed IGNOREOUT)
ot_pyinstallcheck_test (FunctionalChaos_nd)
ot_pyinstallcheck_test (FunctionalChaosSobolIndices_std)
ot_pyinstallcheck_test (KrigingAlgorithm_std)
ot_pyinstallcheck_test (KrigingAlgorithm_funcmodel IGNOREOUT)
ot_pyinstallcheck_test (KrigingRandomVector_std)
ot_pyinstallcheck_test (MetaModelAlgorithm_std)
ot_pyinstallcheck_test (MetaModelValidation_std)
ot_pyinstallcheck_test (GeneralLinearModelAlgorithm_std)
if (HMAT_FOUND)
  ot_pyinstallcheck_test (KrigingAlgorithm_std_hmat)
  ot_pyinstallcheck_test (GeneralLinearModelAlgorithm_std_hmat)
endif ()
if (NLopt_FOUND)
  ot_pyinstallcheck_test (GeneralLinearModelAlgorithm_nlopt IGNOREOUT)
endif ()
ot_pyinstallcheck_test (CanonicalTensorEvaluation_std IGNOREOUT)
ot_pyinstallcheck_test (CanonicalTensorGradient_std IGNOREOUT)
ot_pyinstallcheck_test (TensorApproximationAlgorithm_std)
ot_pyinstallcheck_test (LinearModelAlgorithm_std)
ot_pyinstallcheck_test (LinearModelAnalysis_std)
ot_pyinstallcheck_test (LinearModelStepwiseAlgorithm_std)
ot_pyinstallcheck_test (KrigingAlgorithm_isotropic_std IGNOREOUT)
ot_pyinstallcheck_test (FieldToPointFunctionalChaosAlgorithm_std IGNOREOUT)
ot_pyinstallcheck_test (FieldFunctionalChaosSobolIndices_std IGNOREOUT)

## Sensitivity
ot_pyinstallcheck_test (ANCOVA_std)
ot_pyinstallcheck_test (FAST_std)
ot_pyinstallcheck_test (SobolIndicesAlgorithm_std)
ot_pyinstallcheck_test (SobolIndicesExperiment_std)
ot_pyinstallcheck_test (HSICStat_std IGNOREOUT)
ot_pyinstallcheck_test (HSICEstimatorConditionalSensitivity_std IGNOREOUT)
ot_pyinstallcheck_test (HSICEstimatorTargetSensitivity_std IGNOREOUT)
ot_pyinstallcheck_test (HSICEstimatorGlobalSensitivity_std IGNOREOUT)




## Simulation
ot_pyinstallcheck_test (Wilks_std)
ot_pyinstallcheck_test (SimulationSensitivityAnalysis_std)
ot_pyinstallcheck_test (ProbabilitySimulationAlgorithm_std)
ot_pyinstallcheck_test (ProbabilitySimulationAlgorithm_draw)
ot_pyinstallcheck_test (ProbabilitySimulationAlgorithm_sensitivity)
ot_pyinstallcheck_test (LHS_std)
ot_pyinstallcheck_test (DirectionalSampling_std)
ot_pyinstallcheck_test (PostAnalyticalControlledImportanceSampling_std)
ot_pyinstallcheck_test (SubsetSampling_R-S)
ot_pyinstallcheck_test (SubsetSampling_Waarts_system_series)
ot_pyinstallcheck_test (AdaptiveDirectionalStratification_flood)
ot_pyinstallcheck_test (AdaptiveDirectionalStratification_hyperplane)
ot_pyinstallcheck_test (AdaptiveDirectionalStratification_std)
ot_pyinstallcheck_test (ExpectationSimulationAlgorithm_std)
ot_pyinstallcheck_test (SobolSimulationAlgorithm_std)
ot_pyinstallcheck_test (NAIS_std IGNOREOUT)

## StatTests
ot_pyinstallcheck_test (VisualTest_std)
ot_pyinstallcheck_test (HypothesisTest_correlation)
ot_pyinstallcheck_test (LinearModelTest_std)
ot_pyinstallcheck_test (HypothesisTest_std)
ot_pyinstallcheck_test (HypothesisTest_spearman)
ot_pyinstallcheck_test (DickeyFullerTest_std)
ot_pyinstallcheck_test (FittingTest_std)
ot_pyinstallcheck_test (NormalityTest_std)

## Waarts
ot_pyinstallcheck_test (Waarts_25_quadratic_terms)
# ot_pyinstallcheck_test (Waarts_concave)
# ot_pyinstallcheck_test (Waarts_convex)
# ot_pyinstallcheck_test (Waarts_discontinuous_lsf)
# ot_pyinstallcheck_test (Waarts_noisy_lsf)
# ot_pyinstallcheck_test (Waarts_RS2)
ot_pyinstallcheck_test (Waarts_system_series)
ot_pyinstallcheck_test (Waarts_saddle)

## Misc
if (MATPLOTLIB_FOUND AND NOT CMAKE_VERSION VERSION_LESS 3.9)
  file (GLOB_RECURSE PYFILES "${CMAKE_SOURCE_DIR}/python/doc/examples/*/*.py")
  foreach (PYF ${PYFILES})
    if (PYF MATCHES plot)
      get_filename_component (TESTNAME "${PYF}" NAME_WE)
      add_test (NAME pyinstallcheck_example_${TESTNAME} COMMAND ${PYTHON_EXECUTABLE} ${PYF})
      set_tests_properties (pyinstallcheck_example_${TESTNAME} PROPERTIES ENVIRONMENT "${PYINSTALLCHECK_ENVIRONMENT}")
    endif ()
  endforeach ()
  if (NOT Bonmin_FOUND)
    set_tests_properties (pyinstallcheck_example_plot_optimization_bonmin PROPERTIES DISABLED TRUE)
  endif()
  if (NOT CMinpack_FOUND AND NOT Ceres_FOUND)
    set_tests_properties (pyinstallcheck_example_plot_calibration_flooding PROPERTIES DISABLED TRUE)
    set_tests_properties (pyinstallcheck_example_plot_calibration_chaboche PROPERTIES DISABLED TRUE)
    set_tests_properties (pyinstallcheck_example_plot_calibration_deflection_tube PROPERTIES DISABLED TRUE)
  endif ()
  if (NOT dlib_FOUND)
    set_tests_properties (pyinstallcheck_example_plot_optimization_dlib PROPERTIES DISABLED TRUE)
  endif ()
  if (NOT HMAT_FOUND)
    set_tests_properties (pyinstallcheck_example_plot_kriging_cantilever_beam_hmat PROPERTIES DISABLED TRUE)
    set_tests_properties (pyinstallcheck_example_plot_gaussian_process_covariance_hmat PROPERTIES DISABLED TRUE)
  endif ()
  if (NOT LIBXML2_FOUND OR NOT HDF5_FOUND)
    set_tests_properties (pyinstallcheck_example_plot_study_save_load PROPERTIES DISABLED TRUE)
  endif ()
  if (NOT NLopt_FOUND)
    set_tests_properties (pyinstallcheck_example_plot_ego PROPERTIES DISABLED TRUE)
    set_tests_properties (pyinstallcheck_example_plot_optimization_nlopt PROPERTIES DISABLED TRUE)
    set_tests_properties (pyinstallcheck_example_plot_optimization_rosenbrock PROPERTIES DISABLED TRUE)
  endif ()
  if (NOT Pagmo_FOUND)
    set_tests_properties (pyinstallcheck_example_plot_optimization_pagmo PROPERTIES DISABLED TRUE)
  endif ()
  if (NOT PANDAS_FOUND)
    set_tests_properties (pyinstallcheck_example_plot_sample_pandas PROPERTIES DISABLED TRUE)
  endif ()
  if (NOT BISON_FOUND OR NOT FLEX_FOUND)
    set_tests_properties (pyinstallcheck_example_plot_import_export_sample_csv PROPERTIES DISABLED TRUE)
  endif ()
  if (PYTHON_VERSION_STRING VERSION_LESS 3.8)
    set_tests_properties (pyinstallcheck_example_plot_enumeratefunction PROPERTIES DISABLED TRUE)
  endif ()
endif ()

if (MATPLOTLIB_FOUND)
  ot_pyinstallcheck_test (Viewer IGNOREOUT)
  ot_pyinstallcheck_test (PlotDesign IGNOREOUT)
endif ()
ot_pyinstallcheck_test (features IGNOREOUT)
ot_pyinstallcheck_test (coupling_tools)
if (NOT SWIG_VERSION VERSION_LESS 4)
  ot_pyinstallcheck_test (None IGNOREOUT)
endif ()




if (OPENTURNS_HAVE_ANALYTICAL_PARSER AND MATPLOTLIB_FOUND)
  # source modules
  file (GLOB modules ${PROJECT_SOURCE_DIR}/python/src/*.py)
  # swig modules
  foreach (module ${OPENTURNS_PYTHON_MODULES})
    list (APPEND modules ${PROJECT_BINARY_DIR}/python/src/${module}.py)
  endforeach ()
  foreach (module ${modules})
    get_filename_component (module_name ${module} NAME_WE)
    add_test (pyinstallcheck_docstring_${module_name} ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/t_docstring.py ${module})
    set_tests_properties (pyinstallcheck_docstring_${module_name} PROPERTIES ENVIRONMENT "${PYINSTALLCHECK_ENVIRONMENT}")
  endforeach()
  if (NOT BISON_FOUND OR NOT FLEX_FOUND)
    set_tests_properties (pyinstallcheck_docstring_typ PROPERTIES WILL_FAIL TRUE)
  endif ()
  if (NOT LIBXML2_FOUND)
    set_tests_properties (pyinstallcheck_docstring_common PROPERTIES WILL_FAIL TRUE)
  endif ()
endif ()

add_custom_target (pyinstallcheck COMMAND ${CMAKE_CTEST_COMMAND} -R "^pyinstallcheck_"
                    COMMENT "Run Python post-installation tests")
add_dependencies (installcheck pyinstallcheck)
