1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
5
using ICSharpCode.NRefactory;
6
using ICSharpCode.NRefactory.Ast;
7
using ICSharpCode.RubyBinding;
10
namespace RubyBinding.Tests.Converter
13
/// Tests that all the binary operators are converted to
17
public class BinaryOperatorConversionTests
19
string csharp = "class Foo\r\n" +
21
" public int Run(i)\r\n" +
23
" if (i BINARY_OPERATOR 0) {\r\n" +
31
public void GreaterThan()
33
Assert.AreEqual(">", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.GreaterThan));
37
public void NotEqual()
39
Assert.AreEqual("!=", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.InEquality));
45
Assert.AreEqual("/", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.Divide));
49
public void LessThan()
51
Assert.AreEqual("<", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.LessThan));
57
string code = GetCode(@"==");
58
NRefactoryToRubyConverter converter = new NRefactoryToRubyConverter(SupportedLanguage.CSharp);
59
converter.IndentString = " ";
60
string RubyCode = converter.Convert(code);
61
string expectedRubyCode = "class Foo\r\n" +
63
" if i == 0 then\r\n" +
69
Assert.AreEqual(expectedRubyCode, RubyCode);
73
public void LessThanOrEqual()
75
Assert.AreEqual("<=", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.LessThanOrEqual));
79
public void GreaterThanOrEqual()
81
Assert.AreEqual(">=", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.GreaterThanOrEqual));
87
Assert.AreEqual("+", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.Add));
91
public void Multiply()
93
Assert.AreEqual("*", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.Multiply));
97
public void BitwiseAnd()
99
Assert.AreEqual("&", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.BitwiseAnd));
103
public void BitwiseOr()
105
Assert.AreEqual("|", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.BitwiseOr));
109
public void BooleanAnd()
111
Assert.AreEqual("and", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.LogicalAnd));
115
public void BooleanOr()
117
Assert.AreEqual("or", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.LogicalOr));
121
public void BooleanXor()
123
Assert.AreEqual("^", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.ExclusiveOr));
127
public void Modulus()
129
Assert.AreEqual("%", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.Modulus));
133
public void Subtract()
135
Assert.AreEqual("-", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.Subtract));
139
public void DivideInteger()
141
Assert.AreEqual("/", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.DivideInteger));
145
public void ReferenceEquality()
147
Assert.AreEqual("is", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.ReferenceEquality));
151
public void BitShiftRight()
153
Assert.AreEqual(">>", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.ShiftRight));
157
public void BitShiftLeft()
159
Assert.AreEqual("<<", NRefactoryToRubyConverter.GetBinaryOperator(BinaryOperatorType.ShiftLeft));
163
/// Gets the C# code with the binary operator replaced with the
164
/// specified string.
166
string GetCode(string op)
168
return csharp.Replace("BINARY_OPERATOR", op);