}             // func GetNextMember

            public override string ToString(PpsLuaRowEnvironment env)
            {
                try
                {
                    return(ProcsPps.ToString(GetNextMember(env.Row, 0), fmt) ?? String.Empty);
                }
                catch (Exception e)
                {
                    return("{EX=" + e.Message + "}");
                }
            }     // func ToString
            }             // ctor

            public override string ToString(PpsLuaRowEnvironment env)
            {
                try
                {
                    return(ProcsPps.ToString(chunk.Run(env)[0], fmt) ?? String.Empty);
                }
                catch (LuaRuntimeException e)
                {
                    return("{RE=" + e.Message + "}");
                }
                catch (Exception e)
                {
                    return("{EX=" + e.Message + "}");
                }
            }     // proc ToString
Пример #3
0
        public unsafe void CompareSecureString()
        {
            var extralong = new StringBuilder();

            for (var i = 0; i < 1024; i++)
            {
                extralong.Append("a");
            }

            var everyChar = new StringBuilder();

            for (var i = 0; i < 256; i++)
            {
                everyChar.Append((char)i);
            }

            var strs = new string[] { "Hallo Welt", "", "Hallo Wel", extralong.ToString(), everyChar.ToString() };

            fixed(char *s1 = strs[0])
            fixed(char *s2 = strs[0])
            {
                var ss1 = new SecureString(s1, strs[0].Length);
                var ss2 = new SecureString(s2, strs[0].Length);

                Assert.IsTrue(ProcsPps.SecureStringCompare(ss1, ss2), "Same strings were not equal");

                ss1.Dispose();
                ss2.Dispose();
            }

            fixed(char *s1 = strs[1])
            fixed(char *s2 = strs[1])
            {
                var ss1 = new SecureString(s1, strs[1].Length);
                var ss2 = new SecureString(s2, strs[1].Length);

                Assert.IsTrue(ProcsPps.SecureStringCompare(ss1, ss2), "Empty strings were not equal");

                ss1.Dispose();
                ss2.Dispose();
            }

            fixed(char *s1 = strs[0])
            fixed(char *s2 = strs[1])
            {
                var ss1 = new SecureString(s1, strs[0].Length);
                var ss2 = new SecureString(s2, strs[1].Length);

                Assert.IsFalse(ProcsPps.SecureStringCompare(ss1, ss2), "String and empty string were equal");

                ss1.Dispose();
                ss2.Dispose();
            }

            fixed(char *s1 = strs[0])
            fixed(char *s2 = strs[2])
            {
                var ss1 = new SecureString(s1, strs[0].Length);
                var ss2 = new SecureString(s2, strs[2].Length);

                Assert.IsFalse(ProcsPps.SecureStringCompare(ss1, ss2), "String and Substring were equal");

                ss1.Dispose();
                ss2.Dispose();
            }

            fixed(char *s1 = strs[0])
            fixed(char *s2 = strs[2])
            {
                var          ss1 = new SecureString(s1, strs[0].Length);
                SecureString ss2 = null;

                Assert.IsFalse(ProcsPps.SecureStringCompare(ss1, ss2), "String and null were equal");

                ss1.Dispose();
            }

            fixed(char *s1 = strs[3])
            fixed(char *s2 = strs[3])
            {
                var ss1 = new SecureString(s1, strs[3].Length);
                var ss2 = new SecureString(s2, strs[3].Length);;

                Assert.IsTrue(ProcsPps.SecureStringCompare(ss1, ss2), "Long strings were not equal");

                ss1.Dispose();
                ss2.Dispose();
            }

            fixed(char *s1 = strs[4])
            fixed(char *s2 = strs[4])
            {
                var ss1 = new SecureString(s1, strs[4].Length);
                var ss2 = new SecureString(s2, strs[4].Length);;

                Assert.IsTrue(ProcsPps.SecureStringCompare(ss1, ss2), "Full-ASCII strings were not equal");

                ss1.Dispose();
                ss2.Dispose();
            }
        }