#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

85 lines
2.8 KiB

// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under MIT X11 license (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using NUnit.Framework;
namespace ICSharpCode.NRefactory.CSharp.Resolver
{
// assign short name to the fake reflection type
using dynamic = ICSharpCode.NRefactory.TypeSystem.ReflectionHelper.Dynamic;
[TestFixture]
public class ConditionalOperatorTests : ResolverTestBase
{
[Test]
public void PickMoreGeneralOfTheTypes()
{
AssertType(typeof(object), resolver.ResolveConditional(
MakeResult(typeof(bool)), MakeResult(typeof(string)), MakeResult(typeof(object))));
AssertType(typeof(long), resolver.ResolveConditional(
MakeResult(typeof(bool)), MakeResult(typeof(int)), MakeResult(typeof(long))));
}
[Test]
public void Null()
{
AssertType(typeof(string), resolver.ResolveConditional(
MakeResult(typeof(bool)), MakeResult(typeof(string)), MakeConstant(null)));
AssertType(typeof(string), resolver.ResolveConditional(
MakeResult(typeof(bool)), MakeConstant(null), MakeResult(typeof(string))));
}
[Test]
public void DynamicInArguments()
{
AssertType(typeof(dynamic), resolver.ResolveConditional(
MakeResult(typeof(bool)), MakeResult(typeof(dynamic)), MakeResult(typeof(double))));
AssertType(typeof(dynamic), resolver.ResolveConditional(
MakeResult(typeof(bool)), MakeResult(typeof(double)), MakeResult(typeof(dynamic))));
}
[Test]
public void DynamicInCondition()
{
AssertType(typeof(double), resolver.ResolveConditional(
MakeResult(typeof(dynamic)), MakeResult(typeof(float)), MakeResult(typeof(double))));
}
[Test]
public void AllDynamic()
{
AssertType(typeof(dynamic), resolver.ResolveConditional(
MakeResult(typeof(dynamic)), MakeResult(typeof(dynamic)), MakeResult(typeof(dynamic))));
}
[Test]
public void ListOfDynamicAndListOfObject()
{
AssertError(typeof(List<dynamic>), resolver.ResolveConditional(
MakeResult(typeof(bool)), MakeResult(typeof(List<object>)), MakeResult(typeof(List<dynamic>))));
AssertError(typeof(List<object>), resolver.ResolveConditional(
MakeResult(typeof(bool)), MakeResult(typeof(List<dynamic>)), MakeResult(typeof(List<object>))));
}
[Test]
public void Constant()
{
AssertConstant(1L, resolver.ResolveConditional(
MakeConstant(true), MakeConstant(1), MakeConstant(2L)));
AssertConstant(2L, resolver.ResolveConditional(
MakeConstant(false), MakeConstant(1), MakeConstant(2L)));
}
[Test]
public void NotConstantIfFalsePortionNotConstant()
{
AssertType(typeof(long), resolver.ResolveConditional(
MakeConstant(true), MakeConstant(1), MakeResult(typeof(long))));
}
}
}