System.Security.Tests.SecureStringTests.MakeReadOnly_ReadingSucceeds_AllOtherModificationsThrow C# (CSharp) Méthode

MakeReadOnly_ReadingSucceeds_AllOtherModificationsThrow() private méthode

        public static void MakeReadOnly_ReadingSucceeds_AllOtherModificationsThrow()
        {
            string initialValue = "test";
            using (SecureString ss = CreateSecureString(initialValue))
            {
                Assert.False(ss.IsReadOnly());

                ss.MakeReadOnly();
                Assert.True(ss.IsReadOnly());

                // Reads succeed
                AssertEquals(initialValue, ss);
                Assert.Equal(initialValue.Length, ss.Length);
                using (SecureString other = ss.Copy())
                {
                    AssertEquals(initialValue, other);
                }
                ss.MakeReadOnly(); // ok to call again

                // Writes throw
                Assert.Throws<InvalidOperationException>(() => ss.AppendChar('a'));
                Assert.Throws<InvalidOperationException>(() => ss.Clear());
                Assert.Throws<InvalidOperationException>(() => ss.InsertAt(0, 'a'));
                Assert.Throws<InvalidOperationException>(() => ss.RemoveAt(0));
                Assert.Throws<InvalidOperationException>(() => ss.SetAt(0, 'a'));
            }
        }