Example #1
0
        public void GotoLabel_Factory_ArgumentChecking()
        {
            // null
            AssertEx.Throws <ArgumentNullException>(() => CSharpStatement.GotoLabel(default(LabelTarget)));

            // type
            var l = Expression.Label(typeof(int));

            AssertEx.Throws <ArgumentException>(() => CSharpStatement.GotoLabel(l));
        }
Example #2
0
        public void GotoLabel_Visitor()
        {
            var l = Expression.Label();
            var g = CSharpStatement.GotoLabel(l);

            var v = new V();

            Assert.AreSame(g, v.Visit(g));
            Assert.AreEqual(g.Kind, v.VisitedKind);
        }
Example #3
0
        public void GotoLabel_Properties()
        {
            var l = Expression.Label();
            var g = CSharpStatement.GotoLabel(l);

            Assert.AreEqual(typeof(void), g.Type);
            Assert.AreEqual(CSharpExpressionType.Goto, g.CSharpNodeType);
            Assert.AreEqual(CSharpGotoKind.GotoLabel, g.Kind);
            Assert.AreSame(l, g.Target);

            Assert.IsTrue(g.CanReduce);
        }
Example #4
0
        public void GotoLabel_Update()
        {
            var l = Expression.Label();
            var m = Expression.Label();
            var g = CSharpStatement.GotoLabel(l);

            var u1 = g.Update(l);

            Assert.AreSame(g, u1);

            var u2 = g.Update(m);

            Assert.AreNotSame(g, u2);
            Assert.AreSame(m, u2.Target);
        }