Ejemplo n.º 1
0
        public void ChangeExtension()
        {
            var st = new StringTable(0);

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

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

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

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

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

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

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

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

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

            pa1 = PathAtom.Create(st, @".cpp");
            pa2 = pa1.ChangeExtension(st, PathAtom.Create(st, ".d"));
            XAssert.AreEqual(@".d", pa2.ToString(st));

            pa1 = PathAtom.Create(st, @"a.cpp");
            pa2 = pa1.ChangeExtension(st, PathAtom.Invalid);
            XAssert.AreEqual(@"a", pa2.ToString(st));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Adds or changes the file extension of a path atom, returning a new path atom.
        /// </summary>
        /// <param name="atom">The original atom 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 PathAtom ChangeExtension(PathAtom atom, PathAtom extension)
        {
            Contract.Requires(atom.IsValid);
            Contract.Ensures(Contract.Result <PathAtom>().IsValid);

            return(atom.ChangeExtension(m_stringTable, extension));
        }