示例#1
0
 def _TestWithPaths(searchPaths):
     self.assertEqual(
         resolver.CreateContextFromString(os.pathsep.join(searchPaths)),
         Ar.ResolverContext(Ar.DefaultResolverContext(searchPaths)))
     self.assertEqual(
         resolver.CreateContextFromStrings(
             [("", os.pathsep.join(searchPaths))]),
         Ar.ResolverContext(Ar.DefaultResolverContext(searchPaths)))
示例#2
0
    def test_Repr(self):
        ctxObj = Ar.DefaultResolverContext(["/test"])
        ctx = Ar.ResolverContext(ctxObj)

        expectedRepr = "Ar.ResolverContext({})".format(repr(ctxObj))
        self.assertEqual(str(ctx), expectedRepr)
        self.assertEqual(repr(ctx), expectedRepr)
示例#3
0
def HasResolverContextClass():
    try:
        ctx = Ar.ResolverContext()
        return True
    except:
        pass
    return False
示例#4
0
    def test_CreateContextFromString(self):
        resolver = Ar.GetResolver()

        # Exercise the CreateContextFromString(s) API in Python.
        # Since the _TestURIResolverContext object isn't wrapped to
        # Python these tests are a bit limited, but more extensive
        # tests are in the C++ version of this test.

        # CreateContextFromString with an empty URI scheme should
        # be equivalent to CreateContextFromString with no URI scheme.
        searchPaths = os.pathsep.join(["/a", "/b"])
        self.assertEqual(
            resolver.CreateContextFromString(searchPaths),
            resolver.CreateContextFromString("", searchPaths))

        # CreateContextFromStrings should be equivalent to creating an
        # Ar.ResolverContext combining the results of CreateContextFromString.
        self.assertEqual(
            Ar.ResolverContext(
                (resolver.CreateContextFromString("test", "context str"),
                 resolver.CreateContextFromString("", searchPaths))),
            resolver.CreateContextFromStrings([
                ("", searchPaths),
                ("test", "context str")
            ]))
示例#5
0
    def test_ImplicitConversion(self):
        """Test implicit conversion of a Python-wrapped context object
        when passed to a C++ function that takes an ArResolverContext."""

        # Passing in None or an empty tuple or list should implicitly
        # convert to an empty Ar.ResolverContext()
        self.assertEqual(Ar._TestImplicitConversion(None),
                         Ar.ResolverContext())
        self.assertEqual(Ar._TestImplicitConversion(()), Ar.ResolverContext())
        self.assertEqual(Ar._TestImplicitConversion([]), Ar.ResolverContext())

        # Passing in a Python-wrapped context object or tuple or list
        # containing such objects should implicitly convert to an
        # Ar.ResolverContext holding these objects.
        ctxObj = Ar.DefaultResolverContext(["/test"])
        ctx = Ar.ResolverContext(ctxObj)

        self.assertEqual(Ar._TestImplicitConversion(ctxObj), ctx)
        self.assertEqual(Ar._TestImplicitConversion((ctxObj, )), ctx)
        self.assertEqual(Ar._TestImplicitConversion([
            ctxObj,
        ]), ctx)

        # Passing in an object that hasn't been registered as a context object
        # should result in an error.
        with self.assertRaises(TypeError):
            ctx = Ar._TestImplicitConversion(1)
        with self.assertRaises(TypeError):
            ctx = Ar._TestImplicitConversion((1, ))
        with self.assertRaises(TypeError):
            ctx = Ar._TestImplicitConversion([
                1,
            ])
        with self.assertRaises(TypeError):
            ctx = Ar._TestImplicitConversion((1, ctxObj))
        with self.assertRaises(TypeError):
            ctx = Ar._TestImplicitConversion([1, ctxObj])
示例#6
0
    def test_ExplicitConstruction(self):
        # Passing in None or an empty tuple or list to Ar.ResolverContext
        # should all result in creating an empty Ar.ResolverContext.
        self.assertEqual(Ar.ResolverContext(None), Ar.ResolverContext())
        self.assertEqual(Ar.ResolverContext(()), Ar.ResolverContext())
        self.assertEqual(Ar.ResolverContext([]), Ar.ResolverContext())

        # Passing in a Python-wrapped context object or tuple or list
        # containing such objects should create an Ar.ResolverContext holding
        # these objects.
        ctxObj = Ar.DefaultResolverContext(["/test"])
        ctx = Ar.ResolverContext(ctxObj)

        self.assertEqual(Ar.ResolverContext(ctxObj), ctx)
        self.assertEqual(Ar.ResolverContext((ctxObj, )), ctx)
        self.assertEqual(Ar.ResolverContext([
            ctxObj,
        ]), ctx)

        # Passing in an object that hasn't been registered as a context object
        # should result in an error.
        with self.assertRaises(TypeError):
            ctx = Ar.ResolverContext(1)
        with self.assertRaises(TypeError):
            ctx = Ar.ResolverContext((1, ))
        with self.assertRaises(TypeError):
            ctx = Ar.ResolverContext([
                1,
            ])
        with self.assertRaises(TypeError):
            ctx = Ar.ResolverContext((1, ctxObj))
        with self.assertRaises(TypeError):
            ctx = Ar.ResolverContext([1, ctxObj])
示例#7
0
 def test_Get(self):
     ctxObj = Ar.DefaultResolverContext(["/test"])
     ctx = Ar.ResolverContext(ctxObj)
     self.assertEqual(ctx.Get(), [ctxObj])
parser = argparse.ArgumentParser()
parser.add_argument("resolverName", type=str,
                    help=("Name of ArResolver subclass to test"))

args = parser.parse_args()

SetupPlugins()

Ar.SetPreferredResolver(args.resolverName)
r = Ar.GetResolver()

# Call each method to see whether the corresponding virtual method
# on the resolver is called.

# This context manager calls ArResolver::BindContext when entered
# and ArResolver::UnbindContext on exit.
with Ar.ResolverContextBinder(Ar.ResolverContext()):
    pass

r.CreateDefaultContext()
r.CreateDefaultContextForAsset('foo')
r.CreateContextFromString('foo')
r.RefreshContext(Ar.ResolverContext())
r.GetCurrentContext()
r.IsContextDependentPath('foo')

# This context manager calls ArResolver::BeginCacheScope when entered
# and ArResolver::EndCacheScope on exit.
with Ar.ResolverScopedCache():
    pass