public static T Cast(S value) { if (s_cast == null) { s_cast = new CastFunc(GenericCast.CreateCast <S, T>()); } return(s_cast(value)); }
private void AsSomething_WhenIsNotSomething_ThrowsException <TConcrete>(CastFunc castFunc) { // Arrange: var token = new Token(); var tracer = new Mock <IDebugTracer>().Object; var something = (IAstNode)Activator.CreateInstance(typeof(TConcrete), token, tracer); // Act: void Lambda() => castFunc(something); // Assert: Assert.Throws <NodeCastException>(Lambda); }
private void AsSomething_WhenIsSomething_ReturnsSomething <TConcrete, TInterface>(CastFunc castFunc) { // Arrange: var token = new Token(); var tracer = new Mock <IDebugTracer>().Object; var something = (IAstNode)Activator.CreateInstance(typeof(TConcrete), token, tracer); // Act: var actual = castFunc(something); // Assert: Assert.That(actual, Is.InstanceOf(typeof(TInterface))); }