Exemplo n.º 1
0
	def should_pickle_and_unpickle_dotdict(self):
		d = dotdict({'field':'foo', 'nested' : {'subfield': 'bar'}})
		data = pickle.dumps(d)
		other = pickle.loads(data)
		self.assertEqual(d, other)
		self.assertTrue(type(other) is dotdict)
		self.assertTrue(type(other.nested) is dotdict)
Exemplo n.º 2
0
	def __getstate__(self): # pragma: no cover -- TODO
		data = dotdict()
		data._class = self.__class__.__name__
		data.pos = self.pos
		data.inventory = self.inventory
		data.hp = self.hp
		data.wielding = self.inventory.index(self.wielding) if self.wielding else None
		data.wearing = self.inventory.index(self.wearing) if self.wearing else None
		return data
Exemplo n.º 3
0
	def __getstate__(self): # pragma: no cover -- TODO
		data = dotdict()
		data.level_id = self.level_id
		data.rooms = self.rooms
		data.tunnels = self.tunnels
		data.objects = self.objects
		data.map_items = []
		for pos, item in self.items:
			data.map_items.append( [pos, item] )
		data.monsters = self.monsters
		return data
Exemplo n.º 4
0
class TestFSUtils(unittest.TestCase):
    def should_create_valid_filename(self):
        self.assertEqual(
            clckwrkbdgr.fs.make_valid_filename('name/with/slashes'),
            'name_with_slashes')

    @mock.patch(pathlib.__name__ + '.Path.exists',
                side_effect=(True, True, True, False))
    def should_create_unique_name(self, *mocks):
        self.assertEqual(clckwrkbdgr.fs.make_unique_filename('foo.bar'),
                         Path('foo.2.bar'))

    @mock.patch('os.path.exists',
                side_effect=(False, False, True, True, False, True, True, True)
                )
    @mock.patch('os.stat',
                side_effect=(dotdict(st_mtime=2), dotdict(st_mtime=2),
                             dotdict(st_mtime=3), dotdict(st_mtime=3),
                             dotdict(st_mtime=3)))
    def should_react_to_modified_files(self, *mocks):
        events = []

        def action():
            events.append('.')

        watcher = clckwrkbdgr.fs.FileWatcher('filename', action)
        self.assertEqual(events, [])
        self.assertFalse(watcher.check())  # Still does not exist.
        self.assertEqual(events, [])
        self.assertTrue(watcher.check())  # Was created.
        self.assertEqual(events, ['.'])
        self.assertFalse(watcher.check())  # Was not changed.
        self.assertEqual(events, ['.'])
        self.assertFalse(watcher.check())  # Was removed.
        self.assertEqual(events, ['.'])
        self.assertTrue(watcher.check())  # Was re-created.
        self.assertEqual(events, ['.', '.'])

        watcher = clckwrkbdgr.fs.FileWatcher('filename', action)
        self.assertFalse(watcher.check())  # Exists but not modified.
Exemplo n.º 5
0
def read_config():  # pragma: no cover
    config_file = xdg.save_data_path('todo') / 'config.json'
    data = {}
    if config_file.exists():
        data = json.loads(config_file.read_text())

    tasklist = None
    tasklist_class_name = data.get('tasklist', None)
    if tasklist_class_name:
        parts = tasklist_class_name.split('.')
        module_names = []
        for part in parts:
            if not module_names:
                module_names.append([part])
            else:
                module_names.append(module_names[-1] + [part])
        tasklist_module = None
        for module_name in reversed(module_names):
            try:
                tasklist_module = importlib.import_module(
                    '.'.join(module_name))
                break
            except Exception as e:
                pass
        if tasklist_module:
            module_name = '.'.join(module_name)
            assert tasklist_class_name.startswith(module_name)
            tasklist_class_name = tasklist_class_name[len(module_name) + 1:]
            try:
                tasklist = getattr(tasklist_module, tasklist_class_name)
            except Exception as e:
                print("Failed to find custom tasklist class '{0}.{1}': {2}".
                      format(module_name, tasklist_class_name, e))
        else:
            print("Failed to find module for tasklist class '{0}'".format(
                tasklist_class_name))

    return dotdict(
        inbox_file=Path(
            os.path.expandvars(
                data.get('inbox_file',
                         "~/.local/share/todo/.INBOX.md"))).expanduser(),
        editor=list(data.get('editor', [os.environ.get('EDITOR', 'vim')])),
        todo_dir=Path(
            os.path.expandvars(data.get('todo_dir',
                                        "~/.local/share/todo/"))).expanduser(),
        task_providers=list(data.get('task_providers', [])),
        tasklist=tasklist,
    )
Exemplo n.º 6
0
def main(stdscr):
    curses.curs_set(0)

    with SerializedEntity(xdg.save_data_path('dotrogue') / 'rogue.sav',
                          Version._top(),
                          entity_name='dungeon',
                          unlink=True,
                          readable=True) as savefile:
        if savefile.entity:
            dungeon = savefile.entity
            dungeon.generator = RogueDungeonGenerator()
            dungeon.history.append(Event.WelcomeBack(dungeon.rogue))
        else:
            dungeon = Dungeon(RogueDungeonGenerator(), Rogue)
            dungeon.go_to_level(0)
            dungeon.rogue.inventory.append(Dagger())
            savefile.reset(dungeon)

        game = Game(stdscr)
        return_code = game.run(to_main_screen(dotdict(data=dungeon)))
        if return_code is False:
            savefile.reset()
Exemplo n.º 7
0
	def __getstate__(self): # pragma: no cover -- TODO
		data = dotdict()
		data.levels = self.levels
		data.current_level = self.current_level_id
		data.rogue = self.rogue
		return data
Exemplo n.º 8
0
	def __getstate__(self): # pragma: no cover -- TODO
		data = dotdict(super(Tunnel, self).__getstate__())
		data.visited = list(self.visited)
		return data
Exemplo n.º 9
0
	def __getstate__(self): # pragma: no cover -- TODO
		data = dotdict(super(Room, self).__getstate__())
		data.visited = self.visited
		return data
Exemplo n.º 10
0
	def should_access_dotdict_fields_via_dot(self):
		d = dotdict()
		d['field'] = 'foo'
		self.assertEqual(d.field, 'foo')
		self.assertEqual(d['field'], 'foo')
Exemplo n.º 11
0
	def should_convert_nested_dicts_to_dotdicts(self):
		d = dotdict({'field':'foo', 'nested' : {'subfield': 'bar'}})
		self.assertEqual(d.field, 'foo')
		self.assertEqual(d.nested.subfield, 'bar')
Exemplo n.º 12
0
	def should_set_dotdict_fields_via_dot(self):
		d = dotdict({'field':'foo'})
		d.field = 'foo'
		self.assertEqual(d.field, 'foo')
		self.assertEqual(d['field'], 'foo')
Exemplo n.º 13
0
	def should_create_dotdict_from_base_dict(self):
		d = dotdict({'field':'foo'})
		self.assertEqual(d.field, 'foo')
		self.assertEqual(d['field'], 'foo')