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 - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches