@ -25,22 +25,45 @@ namespace ICSharpCode.NRefactory.CSharp.Parser.Statements
[TestFixture]
[TestFixture]
public class UsingStatementTests
public class UsingStatementTests
{
{
[Test, Ignore("Parser doesn't report the VariableDeclarationStatement") ]
[Test]
public void UsingStatementWithVariableDeclaration ( )
public void UsingStatementWithVariableDeclaration ( )
{
{
UsingStatement usingStmt = ParseUtilCSharp . ParseStatement < UsingStatement > ( "using (MyVar var = new MyVar()) { } " ) ;
ParseUtilCSharp . AssertStatement (
VariableDeclarationStatement varDecl = ( VariableDeclarationStatement ) usingStmt . ResourceAcquisition ;
"using (MyVar var = new MyVar()) { }" ,
Assert . AreEqual ( "var" , varDecl . Variables . Single ( ) . Name ) ;
new UsingStatement {
Assert . IsTrue ( varDecl . Variables . Single ( ) . Initializer is ObjectCreateExpression ) ;
ResourceAcquisition = new VariableDeclarationStatement (
Assert . AreEqual ( "MyVar" , ( ( SimpleType ) varDecl . Type ) . Identifier ) ;
new SimpleType ( "MyVar" ) ,
Assert . IsTrue ( usingStmt . EmbeddedStatement is BlockStatement ) ;
"var" ,
new ObjectCreateExpression ( new SimpleType ( "MyVar" ) ) ) ,
EmbeddedStatement = new BlockStatement ( )
} ) ;
}
[Test]
public void UsingStatementWithMultipleVariableDeclaration ( )
{
ParseUtilCSharp . AssertStatement (
"using (MyVar a = new MyVar(), b = null);" ,
new UsingStatement {
ResourceAcquisition = new VariableDeclarationStatement {
Type = new SimpleType ( "MyVar" ) ,
Variables = {
new VariableInitializer ( "a" , new ObjectCreateExpression ( new SimpleType ( "MyVar" ) ) ) ,
new VariableInitializer ( "b" , new NullReferenceExpression ( ) )
}
} ,
EmbeddedStatement = new EmptyStatement ( )
} ) ;
}
}
public void UsingStatementWithExpression ( )
public void UsingStatementWithExpression ( )
{
{
UsingStatement usingStmt = ParseUtilCSharp . ParseStatement < UsingStatement > ( "using (new MyVar()) { } " ) ;
ParseUtilCSharp . AssertStatement (
Assert . IsTrue ( usingStmt . ResourceAcquisition is ObjectCreateExpression ) ;
"using (MyVar var = new MyVar()) { }" ,
Assert . IsTrue ( usingStmt . EmbeddedStatement is BlockStatement ) ;
new UsingStatement {
ResourceAcquisition = new ObjectCreateExpression ( new SimpleType ( "MyVar" ) ) ,
EmbeddedStatement = new BlockStatement ( )
} ) ;
}
}
}
}
}
}