Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/28/09 18:06:43 (16 years ago)
Author:
epitzer
Message:

Resolve name clashes of overridden and shadowed properties (#659)

Location:
trunk/sources/HeuristicLab.Persistence/UnitTests
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Persistence/UnitTests/StorableAttributeTests.cs

    r1823 r1938  
    44using Microsoft.VisualStudio.TestTools.UnitTesting;
    55using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     6using System.Reflection;
    67
    78namespace HeuristicLab.Persistence.Test {
     
    1920  }
    2021
     22  class Base {
     23    public string baseName;
     24    [Storable]
     25    public virtual string Name {
     26      get { return "Base"; }
     27      set { baseName = value; }
     28    }
     29  }
     30
     31  class Override : Base {
     32    [Storable]
     33    public override string Name {
     34      get { return "Override"; }
     35      set { base.Name = value; }
     36    }
     37  }
     38
     39  [EmptyStorableClass]
     40  class Intermediate : Override {
     41  }
     42
     43  class New : Intermediate {
     44    public string newName;
     45    [Storable]
     46    public new string Name {
     47      get { return "New"; }
     48      set { newName = value; }
     49    }
     50  }
     51
    2152  [TestClass]
    2253  public class AttributeTest {
     
    2657      DemoClass t = new DemoClass();
    2758      Dictionary<string, DataMemberAccessor> accessors = StorableAttribute.GetStorableAccessors(t);
    28       Assert.IsTrue(accessors.ContainsKey("o"));
     59      Assert.IsTrue(accessors.ContainsKey("TestProperty"));
    2960      Assert.IsTrue(accessors.ContainsKey("x"));
    3061      Assert.IsFalse(accessors.ContainsKey("y"));
    3162      object o = new object();
    3263      t.o = o;
    33       Assert.AreSame(accessors["o"].Get(), o);
     64      Assert.AreSame(accessors["TestProperty"].Get(), o);
    3465      t.x = 12;
    3566      Assert.AreEqual(accessors["x"].Get(), 12);
    3667      t.y = 312890;
    37       accessors["o"].Set(null);
     68      accessors["TestProperty"].Set(null);
    3869      Assert.IsNull(t.o);
    3970      accessors["x"].Set(123);
     
    4172    }
    4273
     74    [TestMethod]
     75    public void TestInheritance() {
     76      New n = new New();
     77      var accessors = StorableAttribute.GetStorableAccessors(n);
     78      var accessDict = new Dictionary<string, DataMemberAccessor>();
     79      foreach (var accessor in accessors) // assert uniqueness
     80        accessDict.Add(accessor.Key, accessor.Value);
     81      Assert.IsTrue(accessDict.ContainsKey(typeof(New).FullName + ".Name"));
     82      Assert.IsTrue(accessDict.ContainsKey(typeof(Override).FullName + ".Name"));
     83      Assert.AreEqual("New", accessDict[typeof(New).FullName + ".Name"].Get());
     84      Assert.AreEqual("Override", accessDict[typeof(Override).FullName + ".Name"].Get());
     85    }
     86
    4387  }
    4488
  • trunk/sources/HeuristicLab.Persistence/UnitTests/UseCases.cs

    r1823 r1938  
    1616using HeuristicLab.Persistence.Auxiliary;
    1717using System.Text.RegularExpressions;
     18using HeuristicLab.Persistence.Test;
    1819
    1920namespace HeuristicLab.Persistence.UnitTest {
     
    541542    }
    542543
     544    [TestMethod]
     545    public void InheritanceTest() {
     546      New n = new New();
     547      XmlGenerator.Serialize(n, tempFile);
     548      New nn = (New)XmlParser.Deserialize(tempFile);
     549      Assert.AreEqual(n.Name, nn.Name);
     550      Assert.AreEqual(((Override)n).Name, ((Override)nn).Name);
     551    }
     552
    543553    [ClassInitialize]
    544554    public static void Initialize(TestContext testContext) {
Note: See TracChangeset for help on using the changeset viewer.