~ubuntu-branches/ubuntu/saucy/monodevelop/saucy

« back to all changes in this revision

Viewing changes to external/mono-tools/gendarme/rules/Gendarme.Rules.Naming/Test/UseSingularNameInEnumsUnlessAreFlagsTest.cs

  • Committer: Package Import Robot
  • Author(s): Jo Shields
  • Date: 2012-05-27 18:08:20 UTC
  • mfrom: (1.8.5) (1.5.8 sid)
  • Revision ID: package-import@ubuntu.com-20120527180820-f1ub6lhg0s50wci1
Tags: 3.0.2+dfsg-3
* [fcecfe7] Fix monodevelop-core-addins.pc.in to point to actual 
  installed location of assemblies.
* [26e1a07] DebSrc 3.0 does not support Quilt's -p parameter, so 
  manually adjust the path in the patch file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//
 
2
// Unit Test for UseSingularNameInEnumsUnlessAreFlags Rule.
 
3
//
 
4
// Authors:
 
5
//      Néstor Salceda <nestor.salceda@gmail.com>
 
6
//
 
7
//      (C) 2007 Néstor Salceda
 
8
//
 
9
// Permission is hereby granted, free of charge, to any person obtaining
 
10
// a copy of this software and associated documentation files (the
 
11
// "Software"), to deal in the Software without restriction, including
 
12
// without limitation the rights to use, copy, modify, merge, publish,
 
13
// distribute, sublicense, and/or sell copies of the Software, and to
 
14
// permit persons to whom the Software is furnished to do so, subject to
 
15
// the following conditions:
 
16
// 
 
17
// The above copyright notice and this permission notice shall be
 
18
// included in all copies or substantial portions of the Software.
 
19
// 
 
20
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 
21
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
22
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 
23
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 
24
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 
25
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 
26
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
27
//
 
28
 
 
29
 
 
30
using System;
 
31
using System.Collections;
 
32
using System.Reflection;
 
33
 
 
34
using Gendarme.Framework;
 
35
using Gendarme.Rules.Naming;
 
36
using Mono.Cecil;
 
37
 
 
38
using NUnit.Framework;
 
39
using Test.Rules.Helpers;
 
40
 
 
41
namespace Test.Rules.Naming {
 
42
        
 
43
        public enum DayOfWeek {
 
44
                Sunday,
 
45
                Monday,
 
46
                Tuesday,
 
47
                Wednesday,
 
48
                Thursday,
 
49
                Friday,
 
50
                Saturday
 
51
        }
 
52
        
 
53
        public enum DateTimeKinds {
 
54
                Local, 
 
55
                Unspecified,
 
56
                Utc
 
57
        }
 
58
        
 
59
        [Flags]
 
60
        public enum StringSplitOptions {
 
61
                None,
 
62
                RemoveEmptyEntries
 
63
        }
 
64
        
 
65
        [TestFixture]
 
66
        public class UseSingularNameInEnumsUnlessAreFlagsTest {
 
67
                
 
68
                private ITypeRule rule;
 
69
                private AssemblyDefinition assembly;
 
70
                private TypeDefinition type;
 
71
                private TestRunner runner;
 
72
 
 
73
                [TestFixtureSetUp]
 
74
                public void FixtureSetUp ()
 
75
                {
 
76
                        string unit = Assembly.GetExecutingAssembly ().Location;
 
77
                        assembly = AssemblyDefinition.ReadAssembly (unit);
 
78
                        rule = new UseSingularNameInEnumsUnlessAreFlagsRule ();
 
79
                        runner = new TestRunner (rule);
 
80
                }
 
81
                
 
82
                [Test]
 
83
                public void TestEnumHasSingularName () 
 
84
                {
 
85
                        type = assembly.MainModule.GetType ("Test.Rules.Naming.DayOfWeek");
 
86
                        Assert.AreEqual (RuleResult.Success, runner.CheckType (type), "RuleResult");
 
87
                        Assert.AreEqual (0, runner.Defects.Count, "Count");
 
88
                }
 
89
                
 
90
                [Test]
 
91
                public void TestEnumHasPluralName () 
 
92
                {
 
93
                        type = assembly.MainModule.GetType ("Test.Rules.Naming.DateTimeKinds");
 
94
                        Assert.AreEqual (RuleResult.Failure, runner.CheckType (type), "RuleResult");
 
95
                        Assert.AreEqual (1, runner.Defects.Count, "Count");
 
96
                }
 
97
                
 
98
                [Test]
 
99
                public void TestFlagsAllowedToHavePluralNames () 
 
100
                {
 
101
                        type = assembly.MainModule.GetType ("Test.Rules.Naming.StringSplitOptions");
 
102
                        Assert.AreEqual (RuleResult.DoesNotApply, runner.CheckType (type), "RuleResult");
 
103
                        Assert.AreEqual (0, runner.Defects.Count, "Count");
 
104
                }
 
105
        }
 
106
}