public void CastAsyncGrainRefUpCastFromGrandchild() { // GeneratorTestDerivedGrain1Reference derives from GeneratorTestGrainReference // GeneratorTestDerivedGrain2Reference derives from GeneratorTestGrainReference // GeneratorTestDerivedDerivedGrainReference derives from GeneratorTestDerivedGrain2Reference //GrainReference grain = GeneratorTestDerivedDerivedGrainReference.GetGrain(GetRandomGrainId()); var lookupPromise = GrainReference.CreateGrain( "", "GeneratorTestGrain.GeneratorTestDerivedDerivedGrain" ); GrainReference grain = new GrainReference(lookupPromise); GrainReference cast = (GrainReference)GeneratorTestGrainFactory.Cast(grain); Assert.NotNull(cast); //Assert.Same(typeof(IGeneratorTestGrain), cast.GetType()); if (!cast.IsResolved) { cast.Wait(100); // Resolve the grain reference } Assert.True(cast.IsResolved); Assert.True(grain.IsResolved); }
public void CastAsyncGrainRefFailDownCastToGrandchild() { // GeneratorTestDerivedGrain1Reference derives from GeneratorTestGrainReference // GeneratorTestDerivedGrain2Reference derives from GeneratorTestGrainReference // GeneratorTestDerivedDerivedGrainReference derives from GeneratorTestDerivedGrain2Reference //GrainReference grain = GeneratorTestGrainReference.GetGrain(GetRandomGrainId()); var lookupPromise = GrainReference.CreateGrain( "", "GeneratorTestGrain.GeneratorTestGrain"); GrainReference grain = new GrainReference(lookupPromise); GrainReference cast = (GrainReference)GeneratorTestDerivedDerivedGrainFactory.Cast(grain); if (!cast.IsResolved) { cast.Wait(100); // Resolve the grain reference } Assert.True(false, "Exception should have been raised"); }