1
1
# Copyright (C) 2024 ISIS Rutherford Appleton Laboratory UKRI
2
2
# SPDX - License - Identifier: GPL-3.0-or-later
3
- from __future__ import annotations
4
3
4
+ from __future__ import annotations
5
+ from typing import TYPE_CHECKING
5
6
from unittest import mock
6
-
7
7
import numpy as np
8
-
8
+ import os
9
9
from mantidimaging .core .operations .loader import load_filter_packages
10
10
from mantidimaging .gui .windows .live_viewer .model import Image_Data
11
11
from mantidimaging .test_helpers .unit_test_helper import FakeFSTestCase
12
12
from pathlib import Path
13
-
14
13
from mantidimaging .eyes_tests .base_eyes import BaseEyesTest
15
14
15
+ if TYPE_CHECKING :
16
+ import time # noqa: F401
17
+
16
18
17
19
class LiveViewerWindowTest (FakeFSTestCase , BaseEyesTest ):
18
20
21
+ def __init__ (self , * args , ** kwargs ):
22
+ super ().__init__ (* args , ** kwargs )
23
+ self .initial_time = 4000.0
24
+
19
25
@classmethod
20
26
def setUpClass (cls ) -> None :
21
27
super ().setUpClass ()
@@ -30,26 +36,30 @@ def setUp(self) -> None:
30
36
def _generate_image (self ):
31
37
image = np .zeros ((10 , 10 ))
32
38
image [5 , :] = np .arange (10 )
39
+ os .utime (self .live_directory , (10 , self .initial_time ))
40
+ self .initial_time += 1000
33
41
return image
34
42
35
43
def _make_simple_dir (self , directory : Path ):
36
44
file_list = [directory / f"abc_{ i :06d} .tif" for i in range (5 )]
37
- if not directory .exists ():
38
- self .fs .create_dir (directory )
39
-
45
+ increment = 0
40
46
for file in file_list :
41
47
self .fs .create_file (file )
48
+ os .utime (file , (10 , self .initial_time + increment ))
49
+ increment += 1000
42
50
43
51
return file_list
44
52
45
53
@mock .patch ('mantidimaging.gui.windows.live_viewer.model.ImageWatcher' )
46
- def test_live_view_opens_without_data (self , _mock_image_watcher ):
54
+ @mock .patch ("time.time" , return_value = 4000.0 )
55
+ def test_live_view_opens_without_data (self , _mock_time , _mock_image_watcher ):
47
56
self .imaging .show_live_viewer (self .live_directory )
48
57
self .check_target (widget = self .imaging .live_viewer )
49
58
50
59
@mock .patch ('mantidimaging.gui.windows.live_viewer.presenter.LiveViewerWindowPresenter.load_image' )
51
60
@mock .patch ('mantidimaging.gui.windows.live_viewer.model.ImageWatcher' )
52
- def test_live_view_opens_with_data (self , _mock_image_watcher , mock_load_image ):
61
+ @mock .patch ("time.time" , return_value = 4000.0 )
62
+ def test_live_view_opens_with_data (self , _mock_time , _mock_image_watcher , mock_load_image ):
53
63
file_list = self ._make_simple_dir (self .live_directory )
54
64
image_list = [Image_Data (path ) for path in file_list ]
55
65
mock_load_image .return_value = self ._generate_image ()
@@ -59,7 +69,8 @@ def test_live_view_opens_with_data(self, _mock_image_watcher, mock_load_image):
59
69
60
70
@mock .patch ('mantidimaging.gui.windows.live_viewer.presenter.LiveViewerWindowPresenter.load_image' )
61
71
@mock .patch ('mantidimaging.gui.windows.live_viewer.model.ImageWatcher' )
62
- def test_live_view_opens_with_bad_data (self , _mock_image_watcher , mock_load_image ):
72
+ @mock .patch ("time.time" , return_value = 4000.0 )
73
+ def test_live_view_opens_with_bad_data (self , _mock_time , _mock_image_watcher , mock_load_image ):
63
74
file_list = self ._make_simple_dir (self .live_directory )
64
75
image_list = [Image_Data (path ) for path in file_list ]
65
76
mock_load_image .side_effect = ValueError
@@ -69,11 +80,24 @@ def test_live_view_opens_with_bad_data(self, _mock_image_watcher, mock_load_imag
69
80
70
81
@mock .patch ('mantidimaging.gui.windows.live_viewer.presenter.LiveViewerWindowPresenter.load_image' )
71
82
@mock .patch ('mantidimaging.gui.windows.live_viewer.model.ImageWatcher' )
72
- def test_rotate_operation_rotates_image (self , _mock_image_watcher , mock_load_image ):
83
+ @mock .patch ("time.time" , return_value = 4000.0 )
84
+ def test_rotate_operation_rotates_image (self , _mock_time , _mock_image_watcher , mock_load_image ):
73
85
file_list = self ._make_simple_dir (self .live_directory )
74
86
image_list = [Image_Data (path ) for path in file_list ]
75
87
mock_load_image .return_value = self ._generate_image ()
76
88
self .imaging .show_live_viewer (self .live_directory )
77
89
self .imaging .live_viewer .presenter .model ._handle_image_changed_in_list (image_list )
78
90
self .imaging .live_viewer .rotate_angles_group .actions ()[1 ].trigger ()
79
91
self .check_target (widget = self .imaging .live_viewer )
92
+
93
+ @mock .patch ('mantidimaging.gui.windows.live_viewer.presenter.LiveViewerWindowPresenter.load_image' )
94
+ @mock .patch ('mantidimaging.gui.windows.live_viewer.model.ImageWatcher' )
95
+ @mock .patch ("time.time" , return_value = 4000.0 )
96
+ def test_file_time_lebel_displays_correct_time (self , _mock_time , _mock_image_watcher , mock_load_image ):
97
+ file_list = self ._make_simple_dir (self .live_directory )
98
+ image_list = [Image_Data (path ) for path in file_list ]
99
+ mock_load_image .return_value = self ._generate_image ()
100
+ self .imaging .show_live_viewer (self .live_directory )
101
+ self .imaging .live_viewer .presenter .model ._handle_image_changed_in_list (image_list )
102
+ self .assertEqual (self .imaging .live_viewer .label_active_filename .text (), "abc_000004.tif - 1970-01-01 02:13:20" )
103
+ self .check_target (widget = self .imaging .live_viewer )
0 commit comments