#region License Information /* HeuristicLab * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL) * * This file is part of HeuristicLab. * * HeuristicLab is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * HeuristicLab is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with HeuristicLab. If not, see . */ #endregion using System; using System.Collections.Generic; using HeuristicLab.Persistence.Core; using Microsoft.VisualStudio.TestTools.UnitTesting; using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; using System.Reflection; namespace HeuristicLab.Persistence_33.Tests { [StorableClass] class DemoClass { [Storable(Name = "TestProperty", DefaultValue = 12)] public object o = null; [Storable] public int x = 2; public int y = 0; } [StorableClass] class Base { public string baseName; [Storable] public virtual string Name { get { return "Base"; } set { baseName = value; } } } [StorableClass] class Override : Base { [Storable] public override string Name { get { return "Override"; } set { base.Name = value; } } } [StorableClass] class Intermediate : Override { } [StorableClass] class New : Intermediate { public string newName; [Storable] public new string Name { get { return "New"; } set { newName = value; } } } /* [TestClass] public class AttributeTest { [TestMethod] public void SimpleStorableAttributeTest() { DemoClass t = new DemoClass(); IEnumerable accessorList = StorableAttribute.GetStorableAccessors(t); Dictionary accessors = new Dictionary(); foreach (var a in accessorList) accessors.Add(a.Name, a); Assert.IsTrue(accessors.ContainsKey("TestProperty")); Assert.IsTrue(accessors.ContainsKey("x")); Assert.IsFalse(accessors.ContainsKey("y")); object o = new object(); t.o = o; Assert.AreSame(accessors["TestProperty"].Get(), o); t.x = 12; Assert.AreEqual(accessors["x"].Get(), 12); t.y = 312890; accessors["TestProperty"].Set(null); Assert.IsNull(t.o); accessors["x"].Set(123); Assert.AreEqual(t.x, 123); } [TestMethod] public void TestInheritance() { New n = new New(); var accessors = StorableAttribute.GetStorableAccessors(n); var accessDict = new Dictionary(); foreach (var accessor in accessors) // assert uniqueness accessDict.Add(accessor.Name, accessor); Assert.IsTrue(accessDict.ContainsKey(typeof(New).FullName + ".Name")); Assert.IsTrue(accessDict.ContainsKey(typeof(Override).FullName + ".Name")); Assert.AreEqual("New", accessDict[typeof(New).FullName + ".Name"].Get()); Assert.AreEqual("Override", accessDict[typeof(Override).FullName + ".Name"].Get()); } }*/ }