@@ -72,6 +72,9 @@ static void *stepper_setup(void)
72
72
& stepper_signal );
73
73
74
74
zassert_not_null (fixture .dev );
75
+ zassert_equal (
76
+ stepper_set_event_callback (fixture .dev , fixture .callback , (void * )fixture .dev ), 0 ,
77
+ "Failed to set event callback" );
75
78
(void )stepper_enable (fixture .dev );
76
79
return & fixture ;
77
80
}
@@ -131,12 +134,9 @@ ZTEST_F(stepper, test_target_position_w_fixed_step_interval)
131
134
int ret ;
132
135
133
136
ret = stepper_set_microstep_interval (fixture -> dev , 100 * USEC_PER_SEC );
134
-
135
137
if (ret == - ENOSYS ) {
136
138
ztest_test_skip ();
137
139
}
138
- /* Pass the function name as user data */
139
- (void )stepper_set_event_callback (fixture -> dev , fixture -> callback , (void * )fixture -> dev );
140
140
141
141
(void )stepper_move_to (fixture -> dev , pos );
142
142
@@ -154,7 +154,6 @@ ZTEST_F(stepper, test_move_by_positive_step_count)
154
154
int32_t steps = 20 ;
155
155
156
156
(void )stepper_set_microstep_interval (fixture -> dev , 100 * USEC_PER_SEC );
157
- (void )stepper_set_event_callback (fixture -> dev , fixture -> callback , (void * )fixture -> dev );
158
157
(void )stepper_move_by (fixture -> dev , steps );
159
158
160
159
POLL_AND_CHECK_SIGNAL (
@@ -169,7 +168,6 @@ ZTEST_F(stepper, test_move_by_negative_step_count)
169
168
int32_t steps = -20 ;
170
169
171
170
(void )stepper_set_microstep_interval (fixture -> dev , 100 * USEC_PER_SEC );
172
- (void )stepper_set_event_callback (fixture -> dev , fixture -> callback , (void * )fixture -> dev );
173
171
(void )stepper_move_by (fixture -> dev , steps );
174
172
175
173
POLL_AND_CHECK_SIGNAL (
@@ -181,8 +179,6 @@ ZTEST_F(stepper, test_move_by_negative_step_count)
181
179
182
180
ZTEST_F (stepper , test_stop )
183
181
{
184
- (void )stepper_set_event_callback (fixture -> dev , fixture -> callback , (void * )fixture -> dev );
185
-
186
182
/* Run the stepper in positive direction */
187
183
(void )stepper_run (fixture -> dev , STEPPER_DIRECTION_POSITIVE );
188
184
@@ -206,3 +202,22 @@ ZTEST_F(stepper, test_stop)
206
202
zassert_unreachable ("Stepper stop failed" );
207
203
}
208
204
}
205
+
206
+ ZTEST_F (stepper , test_move_by_zero_steps )
207
+ {
208
+ bool is_moving ;
209
+ int err ;
210
+
211
+ err = stepper_set_microstep_interval (fixture -> dev , 100 * USEC_PER_SEC );
212
+ if (err == - ENOSYS ) {
213
+ ztest_test_skip ();
214
+ }
215
+ zassert_equal (err , 0 , "Failed to set microstep interval" );
216
+
217
+ zassert_equal (stepper_move_by (fixture -> dev , 0 ), 0 , "Failed to move by zero steps" );
218
+ POLL_AND_CHECK_SIGNAL (stepper_signal , stepper_event , STEPPER_EVENT_STEPS_COMPLETED ,
219
+ K_NO_WAIT );
220
+ zassert_equal (stepper_is_moving (fixture -> dev , & is_moving ), 0 ,
221
+ "Failed to check if stepper is moving" );
222
+ zassert_equal (is_moving , false, "Stepper is still moving" );
223
+ }
0 commit comments