@@ -445,3 +445,56 @@ def test_shift_times_with_None_as_t_start():
445445 assert recording .segments [0 ].t_start is None
446446 recording .shift_times (shift = 1.0 ) # Shift by one seconds should not generate an error
447447 assert recording .get_start_time () == 1.0
448+
449+
450+ class TestSortingTimeNoRecording :
451+ """Tests for time methods on BaseSorting without a registered recording."""
452+
453+ def test_get_start_time_default (self ):
454+ sorting = generate_sorting (num_units = 5 , durations = [10 ])
455+ assert sorting .get_start_time (segment_index = 0 ) == 0.0
456+
457+ def test_get_end_time_default (self ):
458+ sorting = generate_sorting (num_units = 5 , durations = [10 ])
459+ assert sorting .get_end_time (segment_index = 0 ) is None
460+
461+ def test_get_start_time_with_t_start (self ):
462+ sorting = generate_sorting (num_units = 5 , durations = [10 ])
463+ sorting .segments [0 ]._t_start = 100.0
464+ assert sorting .get_start_time (segment_index = 0 ) == 100.0
465+
466+
467+ class TestSortingTimeWithRecording :
468+ """
469+ Tests for time methods on BaseSorting with a registered recording.
470+ The key invariant: the recording is the source of truth for timestamps.
471+ """
472+
473+ def test_get_start_end_time (self ):
474+ recording = generate_recording (num_channels = 4 , durations = [10 ])
475+ sorting = generate_sorting (num_units = 5 , durations = [10 ])
476+ sorting .register_recording (recording )
477+
478+ assert sorting .get_start_time (segment_index = 0 ) == recording .get_start_time (segment_index = 0 )
479+ assert sorting .get_end_time (segment_index = 0 ) == recording .get_end_time (segment_index = 0 )
480+
481+ def test_register_recording_resets_t_start (self ):
482+ """Registering a recording resets _t_start so the recording is the sole source of truth."""
483+ sorting = generate_sorting (num_units = 5 , durations = [10 ])
484+ sorting .segments [0 ]._t_start = 100.0
485+
486+ recording = generate_recording (num_channels = 4 , durations = [10 ])
487+ sorting .register_recording (recording )
488+
489+ assert sorting .segments [0 ]._t_start == 0
490+ assert sorting .get_start_time (segment_index = 0 ) == recording .get_start_time (segment_index = 0 )
491+
492+ def test_with_recording_shifted_start (self ):
493+ """Recording with a non-zero t_start is reflected in the sorting."""
494+ recording = generate_recording (num_channels = 4 , durations = [10 ])
495+ recording .shift_times (shift = 50.0 )
496+
497+ sorting = generate_sorting (num_units = 5 , durations = [10 ])
498+ sorting .register_recording (recording )
499+
500+ assert sorting .get_start_time (segment_index = 0 ) == 50.0
0 commit comments