def testMangleFunctionNameClasses(self): package = ir.Package(ids.TARGET_PACKAGE_ID) Local = package.addClass(Name(["local", "Local"]), typeParameters=[]) P = package.addTypeParameter(Local, Name(["P"])) Q = package.addTypeParameter(Local, Name(["Q"])) otherPackage = ir.Package(name=Name(["foo", "bar", "baz"])) otherPackage.id.index = 0 Foreign = otherPackage.addClass(Name(["foreign", "Foreign"]), typeParameters=[]) Foreign.id.packageId = otherPackage.id S = otherPackage.addTypeParameter(Foreign, Name(["S"])) T = otherPackage.addTypeParameter(Foreign, Name(["T"])) package.dependencies = [ ir.PackageDependency(otherPackage.name, None, None) ] X = package.addTypeParameter(None, Name(["X"]), upperBound=getRootClassType(), lowerBound=getNothingClassType(), flags=frozenset([STATIC])) XType = VariableType(X) Y = package.addTypeParameter(None, Name(["Y"]), upperBound=getRootClassType(), lowerBound=getNothingClassType()) YType = VariableType(Y, frozenset([NULLABLE_TYPE_FLAG])) LocalType = ClassType(Local, (XType, YType)) ForeignType = ClassType(Foreign, (YType, XType), frozenset([NULLABLE_TYPE_FLAG])) BuiltinType = getRootClassType() f = package.addFunction( Name(["quux"]), typeParameters=[X, Y], parameterTypes=[LocalType, ForeignType, BuiltinType]) expected = "quux[s<C::Object>C::Nothing,<C::Object>C::Nothing](C:local.Local[V0,V1?],Cfoo.bar.baz:foreign.Foreign[V1?,V0]?,C::Object)" self.assertEquals(expected, ir.mangleFunctionShortName(f, package))
def testFromStringWithBoth(self): dep = ir.PackageDependency.fromString("foo.bar:1.2-3.4") expected = ir.PackageDependency(Name(["foo", "bar"]), ir.PackageVersion([1, 2]), ir.PackageVersion([3, 4])) self.assertNameAndVersionEquals(expected, dep)
def testFromStringBasic(self): dep = ir.PackageDependency.fromString("foo.bar") expected = ir.PackageDependency(Name(["foo", "bar"]), None, None) self.assertNameAndVersionEquals(expected, dep)