1 /*
2     KStars UI tests for meridian flip - special cases
3 
4     SPDX-FileCopyrightText: 2020, 2021 Wolfgang Reissenberger <sterne-jaeger@openfuture.de>
5 
6     SPDX-License-Identifier: GPL-2.0-or-later
7 */
8 
9 #pragma once
10 
11 #include "test_ekos_meridianflip_base.h"
12 
13 #if defined(HAVE_INDI)
14 
15 class TestEkosMeridianFlipSpecials : public TestEkosMeridianFlipBase
16 {
17     Q_OBJECT
18 
19 public:
20     explicit TestEkosMeridianFlipSpecials(QObject *parent = nullptr);
21     explicit TestEkosMeridianFlipSpecials(QString guider, QObject *parent = nullptr);
22 
23 private slots:
24 
25     /** @brief Test a meridian flip where a guiding deviation aborts a capture and subsequently a flip
26      * is executed. It is expected that capturing is restarted after the flip has been executed successfully.
27      * */
28     void testCaptureGuidingDeviationMF();
29 
30     /** @brief Test data for @see testSchedulerGuidingDeviationMF() */
31     void testCaptureGuidingDeviationMF_data();
32 
33 
34     /** @brief Test a meridian flip where the dithering counter after the last capture before the flip is already 0.
35      * Since dithering after the meridian flip is postponed, this checks whether after dithering takes place after
36      * the first capture after the meridian flip.
37      * */
38     void testCaptureDitheringDelayedAfterMF();
39 
40     /** @brief Test data for @see testCaptureDitheringDelayedAfterMF() */
41     void testCaptureDitheringDelayedAfterMF_data();
42 
43     /** @brief Test pausing a capture sequence before the meridian flip takes place.
44      * When capturing is paused, the meridian flip should take place but then nothing more should happen unless
45      * the pause is finished. As soon as capture continues, all necessary preparations should take place before capturing
46      * starts again.
47      * */
48     void testCaptureAlignGuidingPausedMF();
49 
50     /** @brief Test data for @see testCaptureAlignGuidingPausedMF() */
51     void testCaptureAlignGuidingPausedMF_data();
52 
53     /** @brief Test if a meridian flip takes place while re-focusing and consequently
54      * leads to abort the refocusing and refocusing is restarted after a successful meridian flip */
55     void testAbortRefocusMF();
56 
57     /** @brief Test data for @see testCaptureRefocusMF() */
58     void testAbortRefocusMF_data();
59 
60     /** @brief Test if a meridian flip within a scheduler job takes place while re-focusing and consequently
61      * leads to abort the refocusing and the scheduler recovers afterwards */
62     void testAbortSchedulerRefocusMF();
63 
64     /** @brief Test data for @see testAbortSchedulerRefocusMF() */
65     void testAbortSchedulerRefocusMF_data();
66 
67     /** @brief Test the situation where the mount does not change its pier side and the meridian flip is
68      * repeated after 4 minutes.
69      * */
70     void testSimpleRepeatedMF();
71 
72     /** @brief Test data for @see testSimpleRepeatedMF() */
73     void testSimpleRepeatedMF_data();
74 };
75 
76 #endif // HAVE_INDI
77