Example #1
0
 def testFileFromPlaceholder(self):
     mujoco = self._mujoco
     contents = b'Fake contents'
     extension = '.whatever'
     expected_xml = hashlib.sha1(contents).hexdigest() + extension
     placeholder = attribute.Asset(contents=contents, extension=extension)
     text_file = mujoco.files.add('text', file=placeholder)
     self.assertEqual(text_file.file, placeholder)
     self.assertXMLStringEqual(text_file, 'file', expected_xml)
     self.assertCanBeCleared(text_file, 'file')
Example #2
0
 def testFileFromAssetsDict(self):
   prefix = 'fake_filename'
   extension = '.whatever'
   path = 'invalid/path/' + prefix + extension
   contents = 'Fake contents'
   assets = {path: contents}
   mujoco = element.RootElement(assets=assets)
   text_file = mujoco.files.add('text', file=path)
   expected_value = attribute.Asset(
       contents=contents, extension=extension, prefix=prefix)
   self.assertEqual(text_file.file, expected_value)
Example #3
0
 def testFileFromPath(self, basepath, value):
   mujoco = self._mujoco
   full_path = os.path.join(basepath, value)
   with open(full_path, 'rb') as f:
     contents = f.read()
   _, basename = os.path.split(value)
   prefix, extension = os.path.splitext(basename)
   expected_xml = prefix + '-' + hashlib.sha1(contents).hexdigest() + extension
   mujoco.files.text_path = basepath
   text_file = mujoco.files.add('text', file=value)
   expected_value = attribute.Asset(
       contents=contents, extension=extension, prefix=prefix)
   self.assertEqual(text_file.file, expected_value)
   self.assertXMLStringEqual(text_file, 'file', expected_xml)
   self.assertCanBeCleared(text_file, 'file')
   self.assertCanBeCleared(mujoco.files, 'text_path')
Example #4
0
  def testFileNameTrimming(self):
    original_filename = (
        'THIS_IS_AN_EXTREMELY_LONG_FILENAME_THAT_WOULD_CAUSE_MUJOCO_TO_COMPLAIN'
        '_THAT_ITS_INTERNAL_LENGTH_LIMIT_IS_EXCEEDED_IF_NOT_TRIMMED_DOWN')
    extension = '.some_extension'
    asset = attribute.Asset(
        contents='', extension=extension, prefix=original_filename)
    vfs_filename = asset.get_vfs_filename()
    self.assertLen(vfs_filename, constants.MAX_VFS_FILENAME_LENGTH)

    vfs = types.MJVFS()
    mjlib.mj_defaultVFS(vfs)
    success_code = 0
    retval = mjlib.mj_makeEmptyFileVFS(
        vfs, util.to_binary_string(vfs_filename), 1)
    self.assertEqual(retval, success_code)
    mjlib.mj_deleteVFS(vfs)