Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

96 lines
1.5 KiB
C#

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;
}
}