Exemplo n.º 1
0
class GPhotoTestCase(unittest.TestCase):
    def setUp(self):
        self.gphoto = GPhoto()
        self.get_choices()

    @patch('envoy.run', new_callable=GetShutterSpeedMock)
    def test_get_shutter_speed(self, mock_run):
        self.gphoto.get_shutter_speeds()
        self.assertEqual(mock_run.call_count, 1)
        mock_run.assert_called_once_with(
            self.gphoto.cmd +
            ' --get-config /main/capturesettings/shutterspeed')
        self.assertEqual(sorted(list(self.gphoto.shutter_choices.items())),
                         sorted(list(self.shutter_choices.items())))

    @patch('envoy.run', side_effect=[GetShutterSpeedMock, DEFAULT, DEFAULT])
    def test_set_shutter_speed(self, mock_run):
        self.gphoto.set_shutter_speed(secs='2.0000s')
        for call in ['{0} --get-config /main/capturesettings/shutterspeed',
                     '{0} --set-config /main/capturesettings/shutterspeed=40']:
            mock_run.assert_any_call(call.format(self.gphoto.cmd))
        self.assertEqual(mock_run.call_count, 2)
        self.assertEqual(sorted(list(self.gphoto.shutter_choices.items())),
                         sorted(list(self.shutter_choices.items())))
        self.gphoto.set_shutter_speed(index='2')
        mock_run.assert_any_call(
            self.gphoto.cmd +
            ' --set-config /main/capturesettings/shutterspeed=2')
        self.assertEqual(mock_run.call_count, 3)

    @patch('envoy.run', new_callable=GetISOMock)
    def test_get_iso(self, mock_run):
        self.gphoto.get_iso()
        self.assertEqual(mock_run.call_count, 1)
        mock_run.assert_called_once_with(
            self.gphoto.cmd + ' --get-config /main/imgsettings/iso')
        self.assertEqual(sorted(list(self.gphoto.iso_choices.items())),
                         sorted(list(self.iso_choices.items())))

    @patch('envoy.run', side_effect=[GetISOMock, DEFAULT, DEFAULT])
    def test_set_iso(self, mock_run):
        self.gphoto.set_iso(iso='200')
        for call in ['{0} --get-config /main/imgsettings/iso',
                     '{0} --set-config /main/imgsettings/iso=3']:
            mock_run.assert_any_call(call.format(self.gphoto.cmd))
        self.assertEqual(mock_run.call_count, 2)
        self.assertEqual(sorted(list(self.gphoto.iso_choices.items())),
                         sorted(list(self.iso_choices.items())))
        self.gphoto.set_iso(index='2')
        mock_run.assert_any_call(
            self.gphoto.cmd + ' --set-config /main/imgsettings/iso=2')
        self.assertEqual(mock_run.call_count, 3)

    @patch('envoy.run', new_callable=DatetimeMock)
    def test_get_camera_time(self, mock_run):
        _time = self.gphoto.get_camera_date_time()
        self.assertEqual(
            _time, time.strptime("2015-11-29 06:59:12", "%Y-%m-%d %H:%M:%S"))
        mock_run.assert_called_once_with(
            '/usr/local/bin/gphoto2 --get-config /main/status/datetime')

    @patch('envoy.run', side_effect=[DEFAULT, DatetimeMock])
    def test_get_nikon_d7000_time(self, mock_run):
        # A Nikon D7000 (for one example) has a different path for datetime
        _time = self.gphoto.get_camera_date_time()
        self.assertEqual(
            _time, time.strptime("2015-11-29 06:59:12", "%Y-%m-%d %H:%M:%S"))
        mock_run.assert_any_call(
            '/usr/local/bin/gphoto2 --get-config /main/status/datetime')
        mock_run.assert_any_call(
            '/usr/local/bin/gphoto2 --get-config /main/settings/datetime')

    def get_choices(self):
        """ Put this data at the end so it doesn't get in the way """
        self.iso_choices = {
            '100': '0',
            '125': '1',
            '160': '2',
            '200': '3',
            '250': '4',
            '320': '5',
            '400': '6',
            '500': '7',
            '640': '8',
            '800': '9',
            '1000': '10',
            '1250': '11',
            '1600': '12',
            '2000': '13',
            '2500': '14',
            '3200': '15',
            '4000': '16',
            '5000': '17',
            '6400': '18',
            '8000': '19',
            '12800': '21',
            '25600': '22',
            '10000': '20'
        }
        self.shutter_choices = {
            '0.0001s': '0',
            '0.0002s': '1',
            '0.0003s': '2',
            '0.0004s': '3',
            '0.0005s': '4',
            '0.0006s': '5',
            '0.0008s': '6',
            '0.0010s': '7',
            '0.0012s': '8',
            '0.0015s': '9',
            '0.0020s': '10',
            '0.0025s': '11',
            '0.0031s': '12',
            '0.0040s': '13',
            '0.0050s': '14',
            '0.0062s': '15',
            '0.0080s': '16',
            '0.0100s': '17',
            '0.0125s': '18',
            '0.0166s': '19',
            '0.0200s': '20',
            '0.0250s': '21',
            '0.0333s': '22',
            '0.0400s': '23',
            '0.0500s': '24',
            '0.0666s': '25',
            '0.0769s': '26',
            '0.1000s': '27',
            '0.1250s': '28',
            '0.1666s': '29',
            '0.2000s': '30',
            '0.2500s': '31',
            '0.3333s': '32',
            '0.4000s': '33',
            '0.5000s': '34',
            '0.6250s': '35',
            '0.7692s': '36',
            '1.0000s': '37',
            '1.3000s': '38',
            '1.6000s': '39',
            '2.0000s': '40',
            '2.5000s': '41',
            '3.0000s': '42',
            '4.0000s': '43',
            '5.0000s': '44',
            '6.0000s': '45',
            '8.0000s': '46',
            '10.0000s': '47',
            '13.0000s': '48',
            '15.0000s': '49',
            '20.0000s': '50',
            '25.0000s': '51',
            '30.0000s': '52',
            '429496.7295s': '53',
        }
Exemplo n.º 2
0
 def setUp(self):
     self.gphoto = GPhoto()
     self.get_choices()