| using System; |
| using allprotectedNamespace; |
| |
| public class runme |
| { |
| static void Main() |
| { |
| runme r = new runme(); |
| r.run(); |
| } |
| |
| void run() |
| { |
| MyProtectedBase mpb = new MyProtectedBase("MyProtectedBase"); |
| mpb.accessProtected(); |
| try { |
| // C++ destructor is protected |
| mpb.Dispose(); |
| throw new Exception("failed to catch MethodAccessException"); |
| } catch (MethodAccessException) { |
| // Exception message: C++ destructor does not have public access |
| } |
| ProtectedDerived pd = new ProtectedDerived("ProtectedDerived"); |
| // Destroying via the ProtectedDerived's destructor should work |
| pd.Dispose(); |
| |
| ProtectedBase pb = new ProtectedDerived("ProtectedDerived"); |
| // ProtectedDerived's destructor should be called via the Dispose(disposing) virtual call |
| pb.Dispose(); |
| } |
| } |
| |
| class MyProtectedBase : ProtectedBase |
| { |
| public MyProtectedBase(string name) : base(name) { |
| } |
| public void accessProtected() { |
| string s = virtualMethod(); |
| if (s != "ProtectedBase") |
| throw new Exception("Failed"); |
| |
| Klass k = instanceMethod(new Klass("xyz")); |
| if (k.getName() != "xyz") |
| throw new Exception("Failed"); |
| |
| k = instanceOverloaded(new Klass("xyz")); |
| if (k.getName() != "xyz") |
| throw new Exception("Failed"); |
| |
| k = instanceOverloaded(new Klass("xyz"), "abc"); |
| if (k.getName() != "abc") |
| throw new Exception("Failed"); |
| |
| k = ProtectedBase.staticMethod(new Klass("abc")); |
| if (k.getName() != "abc") |
| throw new Exception("Failed"); |
| |
| k = ProtectedBase.staticOverloaded(new Klass("xyz")); |
| if (k.getName() != "xyz") |
| throw new Exception("Failed"); |
| |
| k = ProtectedBase.staticOverloaded(new Klass("xyz"), "abc"); |
| if (k.getName() != "abc") |
| throw new Exception("Failed"); |
| |
| instanceMemberVariable = 30; |
| int i = instanceMemberVariable; |
| if (i != 30) |
| throw new Exception("Failed"); |
| |
| staticMemberVariable = 40; |
| i = staticMemberVariable; |
| if (i != 40) |
| throw new Exception("Failed"); |
| |
| i = staticConstMemberVariable; |
| if (i != 20) |
| throw new Exception("Failed"); |
| |
| anEnum = ProtectedBase.AnEnum.EnumVal1; |
| ProtectedBase.AnEnum ae = anEnum; |
| if (ae != ProtectedBase.AnEnum.EnumVal1) |
| throw new Exception("Failed"); |
| } |
| } |