Changeset 13395 for trunk/sources/HeuristicLab.Tests/HeuristicLab-3.3
- Timestamp:
- 11/25/15 13:59:23 (8 years ago)
- Location:
- trunk/sources/HeuristicLab.Tests/HeuristicLab-3.3
- Files:
-
- 1 deleted
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Tests/HeuristicLab-3.3/StorableTest.cs
r13391 r13395 21 21 22 22 using System; 23 using System.Collections;24 23 using System.Collections.Generic; 25 24 using System.Linq; 26 25 using System.Reflection; 27 26 using System.Text; 27 using HeuristicLab.Common; 28 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 29 using HeuristicLab.PluginInfrastructure; … … 32 32 namespace HeuristicLab.Tests { 33 33 [TestClass] 34 public class Storable ConstructorTest {34 public class StorableTest { 35 35 [TestMethod] 36 36 [TestCategory("General")] … … 51 51 else { 52 52 if (storableType.IsSealed && !storableConstructor.IsPrivate) 53 errorMessage.Append(Environment.NewLine + storableType. ToString() + ": Storable constructor must be private in sealed classes.");53 errorMessage.Append(Environment.NewLine + storableType.Namespace + "." + storableType.GetPrettyName() + ": Storable constructor must be private in sealed classes."); 54 54 else if (!storableType.IsSealed && !(storableConstructor.IsFamily || storableConstructor.IsPublic)) 55 errorMessage.Append(Environment.NewLine + storableType.ToString() + ": Storable constructor must be protected (can be public in rare cases)."); 55 errorMessage.Append(Environment.NewLine + storableType.Namespace + "." + storableType.GetPrettyName() + ": Storable constructor must be protected (can be public in rare cases)."); 56 } 57 } 58 Assert.IsTrue(errorMessage.Length == 0, errorMessage.ToString()); 59 } 60 61 [TestMethod] 62 [TestCategory("General")] 63 [TestCategory("Essential")] 64 [TestProperty("Time", "short")] 65 public void TestStorableClass() { 66 var errorMessage = new StringBuilder(); 67 68 foreach (var type in ApplicationManager.Manager.GetTypes(typeof(object), onlyInstantiable: false, includeGenericTypeDefinitions: true) 69 .Where(t => t.Namespace != null && !t.Namespace.Contains(".Tests")) 70 .Where(t => !StorableClassAttribute.IsStorableClass(t))) { 71 var members = type.GetMembers(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.DeclaredOnly); 72 var storableConstructor = members.SingleOrDefault(m => Attribute.IsDefined(m, typeof(StorableConstructorAttribute), inherit: false)); 73 var storableMembers = members.Where(m => Attribute.IsDefined(m, typeof(StorableAttribute), inherit: false)); 74 75 if (storableConstructor != null) { 76 errorMessage.Append(Environment.NewLine + type.Namespace + "." + type.GetPrettyName() + ": Contains a storable constructor but is not a storable class."); 77 } else if (storableMembers.Any()) { 78 errorMessage.Append(Environment.NewLine + type.Namespace + "." + type.GetPrettyName() + ": Contains at least one storable member but is not a storable class."); 56 79 } 57 80 }
Note: See TracChangeset
for help on using the changeset viewer.