Author: spouliot Date: 2008-02-16 19:52:28 -0500 (Sat, 16 Feb 2008) New Revision: 95944
Modified: trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/ArrayFieldsShouldNotBeReadOnlyTest.cs trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/ChangeLog trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/NativeFieldsShouldNotBeVisibleTest.cs trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/SecureGetObjectDataOverridesTest.cs trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/StaticConstructorsShouldBePrivateTest.cs Log: 2008-02-16 Sebastien Pouliot <[EMAIL PROTECTED]> * ArrayFieldsShouldNotBeReadOnlyTest.cs: Duplicate test cases for structs. Add test case for interface. * NativeFieldsShouldNotBeVisibleTest.cs: Add test case for interface. * SecureGetObjectDataOverridesTest.cs: Add test case where we inherit from ISerializable but do not override GetObjectData. * StaticConstructorsShouldBePrivateTest.cs: Add test case for interface (no constructor). Modified: trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/ArrayFieldsShouldNotBeReadOnlyTest.cs =================================================================== --- trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/ArrayFieldsShouldNotBeReadOnlyTest.cs 2008-02-17 00:45:37 UTC (rev 95943) +++ trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/ArrayFieldsShouldNotBeReadOnlyTest.cs 2008-02-17 00:52:28 UTC (rev 95944) @@ -64,6 +64,39 @@ public string [] Array; } + public struct StructHasStaticPublicReadonlyArray { + public static readonly string [] Array; + } + + public struct StructHasPublicReadonlyArray { + public readonly string [] Array; + } + +/* this does not compile + public struct StructHasProtectedReadonlyArray { + protected readonly string [] Array; + } +*/ + public struct StructHasInternalReadonlyArray { + internal readonly string [] Array; + } + + public struct StructHasPrivateReadonlyArray { + private readonly string [] Array; + } + + public struct StructHasNoReadonlyArray { + public readonly string NoArray; + } + + public struct StructHasPublicArray { + public string [] Array; + } + + public interface IHaveArrayGetter { + string [] Array { get; } + } + [TestFixture] public class ArrayFieldsShouldNotBeReadOnlyTest { @@ -90,49 +123,74 @@ public void TestHasStaticPublicReadonlyArray () { TypeDefinition type = GetTest ("Test.Rules.Security.HasStaticPublicReadonlyArray"); - Assert.AreEqual (RuleResult.Failure, runner.CheckType (type)); + Assert.AreEqual (RuleResult.Failure, runner.CheckType (type), "Type"); + + type = GetTest ("Test.Rules.Security.StructHasStaticPublicReadonlyArray"); + Assert.AreEqual (RuleResult.Failure, runner.CheckType (type), "Struct"); } [Test] public void TestHasPublicReadonlyArray () { TypeDefinition type = GetTest ("Test.Rules.Security.HasPublicReadonlyArray"); - Assert.AreEqual (RuleResult.Failure, runner.CheckType (type)); + Assert.AreEqual (RuleResult.Failure, runner.CheckType (type), "Type"); + + type = GetTest ("Test.Rules.Security.StructHasPublicReadonlyArray"); + Assert.AreEqual (RuleResult.Failure, runner.CheckType (type), "Struct"); } [Test] public void TestHasProtectedReadonlyArray () { TypeDefinition type = GetTest ("Test.Rules.Security.HasProtectedReadonlyArray"); - Assert.AreEqual (RuleResult.Failure, runner.CheckType (type)); + Assert.AreEqual (RuleResult.Failure, runner.CheckType (type), "Type"); } [Test] public void TestHasInternalReadonlyArray () { TypeDefinition type = GetTest ("Test.Rules.Security.HasInternalReadonlyArray"); - Assert.AreEqual (RuleResult.Success, runner.CheckType (type)); + Assert.AreEqual (RuleResult.Success, runner.CheckType (type), "Type"); + + type = GetTest ("Test.Rules.Security.StructHasInternalReadonlyArray"); + Assert.AreEqual (RuleResult.Success, runner.CheckType (type), "Struct"); } [Test] public void TestHasPrivateReadonlyArray () { TypeDefinition type = GetTest ("Test.Rules.Security.HasPrivateReadonlyArray"); - Assert.AreEqual (RuleResult.Success, runner.CheckType (type)); + Assert.AreEqual (RuleResult.Success, runner.CheckType (type), "Type"); + + type = GetTest ("Test.Rules.Security.StructHasPrivateReadonlyArray"); + Assert.AreEqual (RuleResult.Success, runner.CheckType (type), "Struct"); } [Test] public void TestHasNoReadonlyArray () { TypeDefinition type = GetTest ("Test.Rules.Security.HasNoReadonlyArray"); - Assert.AreEqual (RuleResult.Success, runner.CheckType (type)); + Assert.AreEqual (RuleResult.Success, runner.CheckType (type), "Type"); + + type = GetTest ("Test.Rules.Security.StructHasNoReadonlyArray"); + Assert.AreEqual (RuleResult.Success, runner.CheckType (type), "Struct"); } [Test] public void TestHasPublicArray () { - TypeDefinition type = GetTest ("Test.Rules.Security.HasPublicArray"); - Assert.AreEqual (RuleResult.Success, runner.CheckType (type)); + TypeDefinition type = GetTest ("Test.Rules.Security.HasNoReadonlyArray"); + Assert.AreEqual (RuleResult.Success, runner.CheckType (type), "Type"); + + type = GetTest ("Test.Rules.Security.StructHasNoReadonlyArray"); + Assert.AreEqual (RuleResult.Success, runner.CheckType (type), "Struct"); } + + [Test] + public void DoesNotApply () + { + TypeDefinition type = GetTest ("Test.Rules.Security.IHaveArrayGetter"); + Assert.AreEqual (RuleResult.DoesNotApply, runner.CheckType (type), "Interface"); + } } } Modified: trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/ChangeLog =================================================================== --- trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/ChangeLog 2008-02-17 00:45:37 UTC (rev 95943) +++ trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/ChangeLog 2008-02-17 00:52:28 UTC (rev 95944) @@ -1,3 +1,13 @@ +2008-02-16 Sebastien Pouliot <[EMAIL PROTECTED]> + + * ArrayFieldsShouldNotBeReadOnlyTest.cs: Duplicate test cases for + structs. Add test case for interface. + * NativeFieldsShouldNotBeVisibleTest.cs: Add test case for interface. + * SecureGetObjectDataOverridesTest.cs: Add test case where we inherit + from ISerializable but do not override GetObjectData. + * StaticConstructorsShouldBePrivateTest.cs: Add test case for + interface (no constructor). + 2008-02-15 Sebastien Pouliot <[EMAIL PROTECTED]> * ArrayFieldsShouldNotBeReadOnlyTest.cs Modified: trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/NativeFieldsShouldNotBeVisibleTest.cs =================================================================== --- trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/NativeFieldsShouldNotBeVisibleTest.cs 2008-02-17 00:45:37 UTC (rev 95943) +++ trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/NativeFieldsShouldNotBeVisibleTest.cs 2008-02-17 00:52:28 UTC (rev 95944) @@ -72,6 +72,10 @@ private IntPtr Native; } + public interface IHaveNativePointerGetter { + IntPtr NativePointer { get; } + } + [TestFixture] public class NativeFieldsShouldNotBeVisibleTest { @@ -156,5 +160,12 @@ TypeDefinition type = GetTest ("Test.Rules.Security.HasPrivateNativeField"); Assert.AreEqual (RuleResult.Success, runner.CheckType (type)); } + + [Test] + public void TestInterfaceWithPointerGetter () + { + TypeDefinition type = GetTest ("Test.Rules.Security.IHaveNativePointerGetter"); + Assert.AreEqual (RuleResult.DoesNotApply, runner.CheckType (type)); + } } } Modified: trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/SecureGetObjectDataOverridesTest.cs =================================================================== --- trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/SecureGetObjectDataOverridesTest.cs 2008-02-17 00:45:37 UTC (rev 95943) +++ trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/SecureGetObjectDataOverridesTest.cs 2008-02-17 00:52:28 UTC (rev 95944) @@ -73,6 +73,13 @@ } } + public class InheritISerializableWithoutOverrideClass : ISerializableClass { + + public InheritISerializableWithoutOverrideClass () + { + } + } + public class LinkDemandClass: ISerializable { public LinkDemandClass () @@ -159,10 +166,17 @@ public void InheritISerializable () { TypeDefinition type = GetTest ("InheritISerializableClass"); - Assert.AreEqual (RuleResult.Failure, runner.CheckType (type)); + Assert.AreEqual (RuleResult.Failure, runner.CheckType (type), "InheritISerializableClass"); } [Test] + public void InheritISerializableWithoutOverride () + { + TypeDefinition type = GetTest ("InheritISerializableWithoutOverrideClass"); + Assert.AreEqual (RuleResult.DoesNotApply, runner.CheckType (type), "InheritISerializableWithoutOverrideClass"); + } + + [Test] public void LinkDemand () { TypeDefinition type = GetTest ("LinkDemandClass"); Modified: trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/StaticConstructorsShouldBePrivateTest.cs =================================================================== --- trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/StaticConstructorsShouldBePrivateTest.cs 2008-02-17 00:45:37 UTC (rev 95943) +++ trunk/mono-tools/gendarme/rules/Gendarme.Rules.Security/Test/StaticConstructorsShouldBePrivateTest.cs 2008-02-17 00:52:28 UTC (rev 95944) @@ -44,6 +44,10 @@ } } + internal interface InterfaceHasNoConstructor { + int GetMe { get; } + } + [TestFixture] public class StaticConstructorsShouldBePrivateTest { @@ -89,5 +93,11 @@ Assert.AreEqual (RuleResult.Failure, runner.CheckType (inspectedType), inspectedType.FullName); Assert.AreEqual (1, runner.Defects.Count, "Count"); } + + [Test] + public void TestInterface () + { + Assert.AreEqual (RuleResult.DoesNotApply, runner.CheckType (GetTest<InterfaceHasNoConstructor> ())); + } } } _______________________________________________ Mono-patches maillist - Mono-patches@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-patches