PageRenderTime 18ms CodeModel.GetById 12ms app.highlight 4ms RepoModel.GetById 1ms app.codeStats 0ms

/ICSharpCode.Decompiler/Tests/CheckedUnchecked.cs

http://github.com/icsharpcode/ILSpy
C# | 117 lines | 89 code | 10 blank | 18 comment | 2 complexity | bf0c739457354f3f34817a6e7f06af7c MD5 | raw file
  1// Copyright (c) AlphaSierraPapa for the SharpDevelop Team
  2// 
  3// Permission is hereby granted, free of charge, to any person obtaining a copy of this
  4// software and associated documentation files (the "Software"), to deal in the Software
  5// without restriction, including without limitation the rights to use, copy, modify, merge,
  6// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
  7// to whom the Software is furnished to do so, subject to the following conditions:
  8// 
  9// The above copyright notice and this permission notice shall be included in all copies or
 10// substantial portions of the Software.
 11// 
 12// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
 13// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 14// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
 15// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 16// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 17// DEALINGS IN THE SOFTWARE.
 18
 19using System;
 20
 21public class CheckedUnchecked
 22{
 23	public int Operators(int a, int b)
 24	{
 25		int num = checked(a + b);
 26		int num2 = a + b;
 27		int num3 = checked(a - b);
 28		int num4 = a - b;
 29		int num5 = checked(a * b);
 30		int num6 = a * b;
 31		int num7 = a / b;
 32		int num8 = a % b;
 33		// The division operators / and % only exist in one form (checked vs. unchecked doesn't matter for them)
 34		return num * num2 * num3 * num4 * num5 * num6 * num7 * num8;
 35	}
 36	
 37	public int Cast(int a)
 38	{
 39		short num = checked((short)a);
 40		short num2 = (short)a;
 41		byte b = checked((byte)a);
 42		byte b2 = (byte)a;
 43		return num * num2 * b * b2;
 44	}
 45	
 46	public void ForWithCheckedIteratorAndUncheckedBody(int n)
 47	{
 48		checked
 49		{
 50			for (int i = n + 1; i < n + 1; i++)
 51			{
 52				n = unchecked(i * i);
 53			}
 54		}
 55	}
 56	
 57	public void ForWithCheckedInitializerAndUncheckedIterator(int n)
 58	{
 59		checked
 60		{
 61			int i = n;
 62			for (i -= 10; i < n; i = unchecked(i + 1))
 63			{
 64				n--;
 65			}
 66		}
 67	}
 68	public void ObjectCreationInitializerChecked() 
 69	{
 70		this.TestHelp(new
 71		{
 72			x = 0,
 73			l = 0
 74		}, n => checked(new
 75		{
 76			x = n.x + 1, 
 77			l = n.l + 1
 78		}));
 79	}
 80
 81	public void ObjectCreationWithOneFieldChecked() 
 82	{
 83		this.TestHelp(new 
 84		{
 85			x = 0,
 86			l = 0
 87		}, n => new 
 88		{
 89			x = checked(n.x + 1), 
 90			l = n.l + 1 
 91		});
 92	}
 93
 94	
 95	public void ArrayInitializerChecked() 
 96	{
 97		this.TestHelp<int[]>(new int[]
 98		{
 99			1,
100			2
101		}, (int[] n) => checked(new int[]
102		{
103			n[0] + 1,
104			n[1] + 1
105		}));
106	}
107
108	public T TestHelp<T>(T t, Func<T, T> f)
109	{
110		return f(t);
111	}
112	
113	public void CheckedInArrayCreationArgument(int a, int b)
114	{
115		Console.WriteLine(new int[checked(a + b)]);
116	}
117}