private IExpression CreateSimpleBinary(RelativePath binaryFile)
        {
            var pdbPath = binaryFile.ChangeExtension(m_pathTable.StringTable, m_pdbExtension);
            var xmlPath = binaryFile.ChangeExtension(m_pathTable.StringTable, m_xmlExtension);

            return(new CallExpression(
                       PropertyAccess("Managed", "Factory", "createBinaryFromFiles"),
                       GetFileExpressionForPath(binaryFile),
                       m_packageOnDisk.Contents.Contains(pdbPath) ? GetFileExpressionForPath(pdbPath) : null,
                       m_packageOnDisk.Contents.Contains(xmlPath) ? GetFileExpressionForPath(xmlPath) : null));
        }
Esempio n. 2
0
        /// <summary>
        /// Adds or changes the file extension of a relative path, returning a new relative path.
        /// </summary>
        /// <param name="path">The original relative path that may or may not have an extension.</param>
        /// <param name="extension">The new extension (this string must include a leading .). If this is PathAtom.Invalid then this method is equivalent to calling RemoveExtension instead.</param>
        public RelativePath ChangeExtension(RelativePath path, PathAtom extension)
        {
            Contract.Requires(path.IsValid);
            Contract.Ensures(Contract.Result <RelativePath>().IsValid);

            return(path.ChangeExtension(m_stringTable, extension));
        }
Esempio n. 3
0
        public void ChangeExtension()
        {
            var st = new StringTable(0);

            // change a single char extension
            RelativePath rp1 = RelativePath.Create(st, @"a.c");
            RelativePath rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".d"));

            XAssert.AreEqual(@"a.d", rp2.ToString(st));

            // change a multi char extension
            rp1 = RelativePath.Create(st, @"a.cpp");
            rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".d"));
            XAssert.AreEqual(@"a.d", rp2.ToString(st));

            // change nothing
            rp1 = RelativePath.Create(st, @"a");
            rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".d"));
            XAssert.AreEqual(@"a.d", rp2.ToString(st));

            // change a single char extension
            rp1 = RelativePath.Create(st, @"ab.c");
            rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".d"));
            XAssert.AreEqual(@"ab.d", rp2.ToString(st));

            // change a multi char extension
            rp1 = RelativePath.Create(st, @"ab.cpp");
            rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".d"));
            XAssert.AreEqual(@"ab.d", rp2.ToString(st));

            // change nothing
            rp1 = RelativePath.Create(st, @"ab");
            rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".d"));
            XAssert.AreEqual(@"ab.d", rp2.ToString(st));

            // change a single char extension
            rp1 = RelativePath.Create(st, @"ab.xyz.c");
            rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".d"));
            XAssert.AreEqual(@"ab.xyz.d", rp2.ToString(st));

            // change a multi char extension
            rp1 = RelativePath.Create(st, @"ab.xyz.cpp");
            rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".d"));
            XAssert.AreEqual(@"ab.xyz.d", rp2.ToString(st));

            rp1 = RelativePath.Create(st, @".cpp");
            rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".d"));
            XAssert.AreEqual(@".d", rp2.ToString(st));

            // change a single char extension
            rp1 = RelativePath.Create(st, @"xyz\a.c");
            rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".d"));
            XAssert.AreEqual(@"xyz\a.d", rp2.ToString(st));

            // change a multi char extension
            rp1 = RelativePath.Create(st, @"xyz\a.cpp");
            rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".d"));
            XAssert.AreEqual(@"xyz\a.d", rp2.ToString(st));

            // change nothing
            rp1 = RelativePath.Create(st, @"xyz\a");
            rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".d"));
            XAssert.AreEqual(@"xyz\a.d", rp2.ToString(st));

            // change a single char extension
            rp1 = RelativePath.Create(st, @"xyz\ab.c");
            rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".d"));
            XAssert.AreEqual(@"xyz\ab.d", rp2.ToString(st));

            // change a multi char extension
            rp1 = RelativePath.Create(st, @"xyz\ab.cpp");
            rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".d"));
            XAssert.AreEqual(@"xyz\ab.d", rp2.ToString(st));

            // change nothing
            rp1 = RelativePath.Create(st, @"xyz\ab");
            rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".d"));
            XAssert.AreEqual(@"xyz\ab.d", rp2.ToString(st));

            // change a single char extension
            rp1 = RelativePath.Create(st, @"xyz\ab.xyz.c");
            rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".d"));
            XAssert.AreEqual(@"xyz\ab.xyz.d", rp2.ToString(st));

            // change a multi char extension
            rp1 = RelativePath.Create(st, @"xyz\ab.xyz.cpp");
            rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".d"));
            XAssert.AreEqual(@"xyz\ab.xyz.d", rp2.ToString(st));

            rp1 = RelativePath.Create(st, @"xyz\.cpp");
            rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".d"));
            XAssert.AreEqual(@"xyz\.d", rp2.ToString(st));

            // nop change
            rp1 = RelativePath.Create(st, @"xyz\ab.xyz.cpp");
            rp2 = rp1.ChangeExtension(st, PathAtom.Create(st, ".cpp"));
            XAssert.AreEqual(rp1, rp2);

            rp1 = RelativePath.Create(st, @"xyz\ab.xyz.cpp");
            rp2 = rp1.ChangeExtension(st, PathAtom.Invalid);
            XAssert.AreEqual(@"xyz\ab.xyz", rp2.ToString(st));
        }