StorageEntry <T> IObjectStorage.GetOrCreate <T>(DataBuffer keySpace, StorageKey key, Func <StorageEntry <T> > creator) { var space = GetSingleKeySpace(keySpace); ObjectDecorator dec; // get using (space.Lock(LockType.Read)) { if (space.TryGetValue(key, out dec)) { return(dec.ToEntry <T>()); } } // not found, so create using (space.Lock(LockType.ReadUpgradable)) { if (space.TryGetValue(key, out dec)) { return(dec.ToEntry <T>()); } using (space.Lock(LockType.Write)) { var ret = creator(); dec = ObjectDecorator.FromEntry(ret); space.Add(key, dec); return(ret); } } }
public void ShouldBuildAbstractTypeThenGetDecorated() { MockClass1 actual = builder.BuildAssemblyFromType<MockClass1>(typeof(MockClass1), null); Decorator decorator = new ObjectDecorator(new ObjectInstantiator()); decorator.Decorate<MockClass1>(actual); Assert.AreEqual("This is a sentence", actual.OtherMagic()); }
public void ShouldBuildAbstractTypeThenGetDecoratedWith2Args() { MockClass3 actual = builder.BuildAssemblyFromType<MockClass3>(typeof(MockClass3), null); Decorator decorator = new ObjectDecorator(new ObjectInstantiator()); decorator.Decorate<MockClass3>(actual); Assert.AreEqual("some1", actual.OtherMagic("some", 1)); }
public void ShouldBuildAbstractTypeThenGetDecoratedWith3Args() { MockClass actual = builder.BuildAssemblyFromType<MockClass>(typeof(MockClass), null); Decorator decorator = new ObjectDecorator(new ObjectInstantiator()); decorator.Decorate<MockClass>(actual); Assert.AreEqual("some1help", actual.DoSomeMagic("some", 1, "help")); }
public void ShouldBuildAbstractTypeThenGetDecoratedWith2Args() { MockClass3 actual = builder.BuildAssemblyFromType <MockClass3>(typeof(MockClass3), null); Decorator decorator = new ObjectDecorator(new ObjectInstantiator()); decorator.Decorate <MockClass3>(actual); Assert.AreEqual("some1", actual.OtherMagic("some", 1)); }
public void ShouldBuildAbstractTypeThenGetDecorated() { MockClass1 actual = builder.BuildAssemblyFromType <MockClass1>(typeof(MockClass1), null); Decorator decorator = new ObjectDecorator(new ObjectInstantiator()); decorator.Decorate <MockClass1>(actual); Assert.AreEqual("This is a sentence", actual.OtherMagic()); }
public void ShouldImplementPropertiesAndDecorateThem() { MockInjectable actual = builder.BuildAssemblyFromType <MockInjectable>(typeof(MockInjectable), null); Decorator decorator = new ObjectDecorator(new ObjectInstantiator()); decorator.Decorate <MockInjectable>(actual); Assert.IsNotNull(actual.Earth); }
public void ShouldBuildAbstractTypeThenGetDecoratedWith4Args() { MockClass4 actual = builder.BuildAssemblyFromType <MockClass4>(typeof(MockClass4), null); Decorator decorator = new ObjectDecorator(new ObjectInstantiator()); decorator.Decorate <MockClass4>(actual); Assert.AreEqual("some1helpme", actual.DoSomeMagic("some", 1, "help", "me")); }
public void ShouldInterruptTheAbstractMethodAndUseAttributeFunction() { AbstractObjectBuilder<MockClass> builder = new AbstractObjectBuilder<MockClass>(new AssemblyBuilder(new CSharpProvider())); MockClass mock = builder.Construct(typeof(MockClass), null); Decorator decorator = new ObjectDecorator(new ObjectInstantiator()); decorator.Decorate<MockClass>(mock); Assert.AreEqual("some1helpme", mock.DoSomeMagic("some", 1, "helpme")); }
private static void Method2ToBenchMark() { AssemblyOpCodeBuilder builder = new AssemblyOpCodeBuilder(); MockClass mock = builder.BuildAssemblyFromType<MockClass>(typeof(MockClass), null); Decorator decorator = new ObjectDecorator(new ObjectInstantiator()); decorator.Decorate<MockClass>(mock); double value = mock.GetZero(); }
private static void Method1ToBenchMark() { AbstractObjectBuilder<MockClass> builder = new AbstractObjectBuilder<MockClass>(new AssemblyBuilder(new CSharpProvider())); MockClass mock = builder.Construct(typeof(MockClass), null); Decorator decorator = new ObjectDecorator(new ObjectInstantiator()); decorator.Decorate<MockClass>(mock); double value = mock.GetZero(); }
public void ShouldInterruptTheAbstractMethodAndUseAttributeFunction() { AbstractObjectBuilder <MockClass> builder = new AbstractObjectBuilder <MockClass>(new AssemblyBuilder(new CSharpProvider())); MockClass mock = builder.Construct(typeof(MockClass), null); Decorator decorator = new ObjectDecorator(new ObjectInstantiator()); decorator.Decorate <MockClass>(mock); Assert.AreEqual("some1helpme", mock.DoSomeMagic("some", 1, "helpme")); }
private static void Method1ToBenchMark() { AbstractObjectBuilder <MockClass> builder = new AbstractObjectBuilder <MockClass>(new AssemblyBuilder(new CSharpProvider())); MockClass mock = builder.Construct(typeof(MockClass), null); Decorator decorator = new ObjectDecorator(new ObjectInstantiator()); decorator.Decorate <MockClass>(mock); double value = mock.GetZero(); }
private static void Method2ToBenchMark() { AssemblyOpCodeBuilder builder = new AssemblyOpCodeBuilder(); MockClass mock = builder.BuildAssemblyFromType <MockClass>(typeof(MockClass), null); Decorator decorator = new ObjectDecorator(new ObjectInstantiator()); decorator.Decorate <MockClass>(mock); double value = mock.GetZero(); }
public void ShouldBeAbleToCallAbstractMethodsAndBeImplementedByAnAttribute() { AbstractMockObject mock = ConstructDiscreteHelper <AbstractMockObject>(); Decorator decorator = new ObjectDecorator(new ObjectInstantiator()); decorator.Decorate <AbstractMockObject>(mock); Assert.AreEqual("The Next Employer", mock.TestGetEmployer()); Assert.AreEqual("MyName 1", mock.GetTitleAndPosition("MyName", 1)); Assert.AreEqual((-3 - 5 - 7 - 2), mock.Subtract(3, 5, 7, 2)); Assert.AreEqual((3 + 5 + 7 + 2), mock.Add(3, 5, 7, 2)); Assert.AreEqual(0, mock.GetZero()); }
void IObjectStorage.Put <T>(DataBuffer keySpace, StorageKey key, StorageEntry <T> entry) { var space = GetSingleKeySpace(keySpace); using (space.Lock(LockType.Write)) { space[key] = new ObjectDecorator { Instance = entry.Instance, Expires = entry.Expires, Updated = entry.Updated }; } }
public void DecoratePropertyTest() { AssemblyOpCodeBuilder builder = new AssemblyOpCodeBuilder(); MockInjectable mock = builder.BuildAssemblyFromType<MockInjectable>(typeof(MockInjectable), null); Decorator decorator = new ObjectDecorator(new ObjectInstantiator()); decorator.Decorate<MockInjectable>(mock); Assert.IsNotNull(mock.Fire); Assert.IsTrue(mock.Fire is Fire); Assert.IsNotNull(mock.Water); Assert.IsTrue(mock.Water is Water); Assert.IsNotNull(mock.Earth); Assert.IsTrue(mock.Earth is Earth); }
public void DecoratePropertyTest() { AssemblyOpCodeBuilder builder = new AssemblyOpCodeBuilder(); MockInjectable mock = builder.BuildAssemblyFromType <MockInjectable>(typeof(MockInjectable), null); Decorator decorator = new ObjectDecorator(new ObjectInstantiator()); decorator.Decorate <MockInjectable>(mock); Assert.IsNotNull(mock.Fire); Assert.IsTrue(mock.Fire is Fire); Assert.IsNotNull(mock.Water); Assert.IsTrue(mock.Water is Water); Assert.IsNotNull(mock.Earth); Assert.IsTrue(mock.Earth is Earth); }
public void MyTestSetup() { decorator = new ObjectDecorator(inst); }
public void MyTestCleanup() { inst.Clear(); decorator = null; }
public void ShouldImplementPropertiesAndDecorateThem() { MockInjectable actual = builder.BuildAssemblyFromType<MockInjectable>(typeof(MockInjectable), null); Decorator decorator = new ObjectDecorator(new ObjectInstantiator()); decorator.Decorate<MockInjectable>(actual); Assert.IsNotNull(actual.Earth); }