File: test-312.cs

package info (click to toggle)
mono 4.6.2.7%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 778,148 kB
  • ctags: 914,052
  • sloc: cs: 5,779,509; xml: 2,773,713; ansic: 432,645; sh: 14,749; makefile: 12,361; perl: 2,488; python: 1,434; cpp: 849; asm: 531; sql: 95; sed: 16; php: 1
file content (95 lines) | stat: -rw-r--r-- 1,555 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
using System;

struct PointF {
	public float fa, fb;
	
	public PointF (float a, float b)
	{
		fa = a;
		fb = b;
		Console.WriteLine ("PointF created {0} and {1}", fa, fb);
	}
}

struct Point {
	int ia, ib;
	
	public static implicit operator PointF (Point pt)
	{
		return new PointF (pt.ia, pt.ib);
	}

	public Point (int a, int b)
	{
		Console.WriteLine ("Initialized with {0} and {1}", a, b);
		ia = a;
		ib = b;
	}
}

class X {
	static bool ok = false;
	PointF field;
	
	static bool Method (PointF f)
	{
		Console.WriteLine ("Method with PointF arg: {0} {1}", f.fa, f.fb);
		if (f.fa != 100 || f.fb != 200)
			return false;
		return true;
	}
	
	static bool Call_constructor_and_implicit ()
	{
		ok = false;
		return Method (new Point (100, 200));
	}


	static bool Init_with_implicit_conv ()
	{
		PointF p = new Point (1, 100);
		if (p.fa == 1 && p.fb == 100)
			return true;
		return false;
	}

	static bool Init_ValueType ()
	{
		Point p = new Point (100, 200);
		return Method (p);
	}
	
	static bool InstanceAssignTest ()
	{
		X x = new X ();
		x.field = new Point (100, 200);
		if (x.field.fa != 100 || x.field.fb != 200)
			return false;
		return true;
	}
	
	static int T ()
	{
		
		if (!Init_with_implicit_conv ())
			return 100;
		if (!Call_constructor_and_implicit ())
			return 101;
		if (!Init_ValueType ())
			return 102;
		if (!InstanceAssignTest ())
			return 103;
		return 0;
	}

	public static int Main ()
	{
		int t = T ();
		if (t != 0)
			Console.WriteLine ("Failed on test: " + t);
		Console.WriteLine ("Succeed");
		return t;
	}
	
}