def test_model_init(): m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml') viewer_config = m.get_viewer_config() model_config = m.get_model_config() viewer = viewer_display.ViewerDisplay(viewer_config) viewer.slideshow_start() viewer.slideshow_is_running(os.path.expanduser(model_config['no_files_img'])) assert True == True
def test_get_next_file_whole_loop(): m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml') num = m.get_number_of_files() m.shuffle = False file1 = m.get_next_file() file2 = None for _ in range(0, num): file2 = m.get_next_file() assert file1 == file2
def test_for_file_changes(): m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml') m.subdirectory = 'testdir' testfile = os.path.expanduser( m.get_model_config()['pic_dir']) + "/" + 'testdir' + "/testfile.jpg" assert m.check_for_file_changes() == False os.mknod(testfile) assert m.check_for_file_changes() == True os.remove(testfile)
def test_get_next_file_no_file_in_range(): m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml') file, orientation, image_attr = m.get_next_file((1990, 1, 1), (1990, 1, 2)) assert file == '/home/pi/.local/picframe/data/PictureFrame2020img.jpg' assert orientation == 1 assert image_attr == { 'latitude': None, 'longitude': None, 'EXIF FNumber': None, 'EXIF ExposureTime': None, 'EXIF ISOSpeedRatings': None, 'EXIF FocalLength': None, 'EXIF DateTimeOriginal': None, 'Image Model': None }
def test_get_file_for_empty_dir(): m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml') m.subdirectory = 'testdir' file, orientation, image_attr = m.get_next_file() assert file == '/home/pi/.local/picframe/data/PictureFrame2020img.jpg' assert orientation == 1 assert image_attr == { 'latitude': None, 'longitude': None, 'EXIF FNumber': None, 'EXIF ExposureTime': None, 'EXIF ISOSpeedRatings': None, 'EXIF FocalLength': None, 'EXIF DateTimeOriginal': None, 'Image Model': None }
def main(): logging.basicConfig(stream=sys.stdout, level=logging.INFO) logger = logging.getLogger("start.py") logger.info('starting %s', sys.argv) parser = argparse.ArgumentParser() group = parser.add_mutually_exclusive_group() group.add_argument( "-i", "--initialize", help= "creates standard file structure for picframe in destination directory", metavar=('DESTINATION_DIRECTORY')) group.add_argument("-v", "--version", help="print version information", action="store_true") group.add_argument("configfile", nargs='?', help="/path/to/configuration.yaml") args = parser.parse_args() if args.initialize: if os.geteuid() == 0: print( "Don't run the initialize step with sudo. It might put the files in the wrong place!" ) return pkgdir = sys.modules['picframe'].__path__[0] try: dest = os.path.abspath(os.path.expanduser(args.initialize)) copy_files(pkgdir, dest, 'html') copy_files(pkgdir, dest, 'config') copy_files(pkgdir, dest, 'data') create_config(dest) print('created {}/picframe_data'.format(dest)) except Exception as e: print("Can't copy files to: ", args.initialize, ". Reason: ", e) return elif args.version: print("picframe version: ", __version__) print("\nChecking required packages......") required_packages = [ 'PIL', 'exifread', 'pi3d', 'yaml', 'paho.mqtt', 'iptcinfo3', 'numpy', 'ninepatch' ] check_packages(required_packages) print("\nChecking optional packages......") check_packages(['pyheif']) return elif args.configfile: m = model.Model(args.configfile) else: m = model.Model() v = viewer_display.ViewerDisplay(m.get_viewer_config()) c = controller.Controller(m, v) c.start() mqtt_config = m.get_mqtt_config() if mqtt_config['use_mqtt']: from picframe import interface_mqtt try: mqtt = interface_mqtt.InterfaceMQTT(c, mqtt_config) mqtt.start() except: logger.error("Can't initialize mqtt. Stopping picframe") sys.exit(1) http_config = m.get_http_config() model_config = m.get_model_config() if http_config['use_http']: server = interface_http.InterfaceHttp(c, http_config['path'], model_config['pic_dir'], model_config['no_files_img'], http_config['port']) if http_config['use_ssl']: server.socket = ssl.wrap_socket(server.socket, keyfile=http_config['keyfile'], certfile=http_config['certfile'], server_side=True) c.loop() if mqtt_config['use_mqtt']: mqtt.stop() if http_config[ 'use_http']: #TODO objects living in multiple threads issue at shutdown! server.stop() c.stop()
def test_getter_setter_time_delay(): m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml') assert m.time_delay == 200.0 m.time_delay = 21.0 assert m.time_delay == 21.0
def test_getter_setter_fade_time(): m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml') assert m.fade_time == 10.0 m.fade_time = 20.0 assert m.fade_time == 20.0
def test_get_next_file(): m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml') file1 = m.get_next_file() file2 = m.get_next_file() assert file1 != file2
def test_get_files(): m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml') num = m.get_number_of_files() assert num == 443
def test_get_subdirectory_list(): m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml') act_dir, dir_list = m.get_directory_list() assert act_dir == 'Pictures' assert dir_list[0] == 'Pictures' assert dir_list[1] == 'testdir'
def test_getter_setter_shuffle(): m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml') assert m.shuffle == True m.shuffle = False assert m.shuffle == False
def test_model_init(): m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml') mqtt = m.get_mqtt_config() assert mqtt['server'] == 'home' viewer = m.get_viewer_config() assert viewer['test_key'] == 'test_value'
def test_getter_setter_subdirectory(): m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml') assert m.subdirectory == '' m.subdirectory = 'testdir' assert m.subdirectory == 'testdir'