示例#1
0
 public void ClassUnitTestRoundtrip()
 {
     // formatted class doesn't match the converted class because of the testMethod modifiers
     CompareLineByLine(ApexSharpParser.IndentApex(ClassUnitTest_Original), ClassUnitTest_Formatted);
     CompareLineByLine(ApexToCSharpHelpers.ConvertToCSharp(ClassUnitTest_Original, Options), ClassUnitTest_CSharp1);
     CompareLineByLine(CSharpToApexHelpers.ConvertToApex(ClassUnitTest_CSharp1)[0], ClassUnitTest_Converted);
 }
示例#2
0
        public void CSharpHelperConvertsCSharpTextsToApexDictionary()
        {
            var csharp = @"
                class Test1 { public Test1(int x) { } }
                class Test2 : Test1 { private int x = 10; }
                enum SomeEnum { None, Unknown, Default }";

            var apexClasses = CSharpToApexHelpers.ConvertToApexCode(csharp);

            Assert.AreEqual(3, apexClasses.Count);

            CompareLineByLine(
                @"class Test1
                {
                    public Test1(Integer x)
                    {
                    }
                }", apexClasses["Test1"]);

            CompareLineByLine(
                @"class Test2 extends Test1
                {
                    private Integer x = 10;
                }", apexClasses["Test2"]);

            CompareLineByLine(
                @"enum SomeEnum
                {
                    None,
                    Unknown,
                    Default
                }", apexClasses["SomeEnum"]);
        }
示例#3
0
        public void SampleWalkerDisplaysTheSyntaxTreeStructure()
        {
            var unit = CSharpToApexHelpers.ParseText(
                @"using System;
                using System.Collections;
                using System.Linq.Think;
                using System.Text;
                using system.debug;

                namespace Demo
                {
                    struct Program
                    {
                        static void Main(string[] args)
                        {
                            Console.WriteLine(""Hello, World!"");
                        }
                    }
                }");

            var walker = new SampleWalker();

            unit.Accept(walker);

            var tree = walker.ToString();

            Assert.False(string.IsNullOrWhiteSpace(tree));
        }
示例#4
0
        public void CSharpHelperParsesTheCSharpCodeAndReturnsTheSyntaxTree()
        {
            var unit = CSharpToApexHelpers.ParseText(
                @"using System;
                using System.Collections;
                using System.Linq.Think;
                using System.Text;
                using system.debug;

                namespace HelloWorld
                {
                    class Program
                    {
                        static void Main(string[] args)
                        {
                            Console.WriteLine(""Hello, World!"");
                        }
                    }
                }");

            Assert.NotNull(unit);

            var txt = CSharpToApexHelpers.ConvertToCSharp(unit);

            Assert.NotNull(txt);
        }
示例#5
0
 private void Check(string apexOriginal, string apexFormatted, string csharp)
 {
     Assert.Multiple(() =>
     {
         CompareLineByLine(ApexSharpParser.IndentApex(apexOriginal), apexFormatted);
         CompareLineByLine(ApexToCSharpHelpers.ConvertToCSharp(apexOriginal, Options), csharp);
         CompareLineByLine(CSharpToApexHelpers.ConvertToApex(csharp)[0], apexFormatted);
     });
 }
        protected void Check(string csharpUnit, params string[] apexClasses)
        {
            var csharpNode = CSharpToApexHelpers.ParseText(csharpUnit);
            var apexNodes  = ApexSyntaxBuilder.GetApexSyntaxNodes(csharpNode);

            Assert.Multiple(() =>
            {
                Assert.AreEqual(apexClasses.Length, apexNodes.Count);
                foreach (var apexItem in apexNodes.Zip(apexClasses, (node, text) => new { node, text }))
                {
                    Check(apexItem.node, apexItem.text);
                }
            });
        }
        public void EmptyClassIsGenerated()
        {
            var csharp = "class Test {}";
            var cs     = CSharpToApexHelpers.ParseText(csharp);
            var apex   = ApexSyntaxBuilder.GetApexSyntaxNodes(cs);

            Assert.NotNull(apex);
            Assert.AreEqual(1, apex.Count);

            var cd = apex.OfType <ClassDeclarationSyntax>().FirstOrDefault();

            Assert.NotNull(cd);
            Assert.AreEqual("Test", cd.Identifier);

            Check(csharp, "class Test {}");
        }
示例#8
0
        public void CSharpHelperConvertsCSharpTextsToApex()
        {
            var csharp      = "class Test1 { public Test1(int x) { } } class Test2 : Test1 { private int x = 10; }";
            var apexClasses = CSharpToApexHelpers.ConvertToApex(csharp);

            Assert.AreEqual(2, apexClasses.Length);

            CompareLineByLine(
                @"class Test1
                {
                    public Test1(Integer x)
                    {
                    }
                }", apexClasses[0]);

            CompareLineByLine(
                @"class Test2 extends Test1
                {
                    private Integer x = 10;
                }", apexClasses[1]);
        }
        public void DemoTestIsConverted()
        {
            var csharpCode =
                @"namespace ApexSharpDemo.ApexCode
                {
                    using Apex.ApexSharp;
                    using Apex.System;
                    using SObjects;
                    using NUnit.Framework;

                    [TestFixture]
                    public class DemoTest
                    {
                        [OneTimeSetUp]
                        public void NoApexSetup()
                        {
                            new ApexSharp().Connect(""C:\\DevSharp\\connect.json"");
                        }

                        [SetUp]
                        public static void Setup()
                        {
                            Contact contactNew = new Contact();
                            contactNew.LastName = ""Jay"";
                            contactNew.Email = ""*****@*****.**"";
                            Soql.Insert(contactNew);
                        }

                        [OneTimeSetUp]
                        public void noApexSetupAgain()
                        {
                            new ApexSharp().Connect(""C:\\DevSharp\\connect.json"");
                        }

                        [Test]
                        public static void UpdatePhoneTestValidEmail()
                        {
                            Demo.UpdatePhone(""*****@*****.**"", ""555-1212"");
                            List<Contact> contacts = Soql.Query<Contact>(""SELECT Id, Email, Phone FROM Contact WHERE Email = '*****@*****.**'"");
                            System.AssertEquals(contacts[0].Phone, ""555-1212"");
                        }

                        [Test]
                        public static void UpdatePhoneTestNotValidEmail()
                        {
                            Demo.UpdatePhone(""*****@*****.**"", ""555-1212"");
                            List<Contact> contacts = Soql.Query<Contact>(""SELECT Id, Email, Phone FROM Contact WHERE Email = '*****@*****.**'"");
                            System.AssertEquals(contacts.Size(), 0);
                        }
                    }
                }";

            var apexClasses = CSharpToApexHelpers.ConvertToApex(csharpCode);

            Assert.AreEqual(1, apexClasses.Length);
            CompareLineByLine(apexClasses[0],
                              @"@IsTest
                public class DemoTest
                {
                    //:NoApex [OneTimeSetUp]
                    //:NoApex public void NoApexSetup()
                    //:NoApex {
                    //:NoApex     new ApexSharp().Connect(""C:\\DevSharp\\connect.json"");
                    //:NoApex }
                    @TestSetup
                    public static void Setup()
                    {
                        Contact contactNew = new Contact();
                        contactNew.LastName = 'Jay';
                        contactNew.Email = '*****@*****.**';
                        insert contactNew;
                    }

                    //:NoApex [OneTimeSetUp]
                    //:NoApex public void noApexSetupAgain()
                    //:NoApex {
                    //:NoApex     new ApexSharp().Connect(""C:\\DevSharp\\connect.json"");
                    //:NoApex }
                    @IsTest
                    public static void UpdatePhoneTestValidEmail()
                    {
                        Demo.UpdatePhone('*****@*****.**', '555-1212');
                        List<Contact> contacts = [SELECT Id, Email, Phone FROM Contact WHERE Email = '*****@*****.**'];
                        System.AssertEquals(contacts[0].Phone, '555-1212');
                    }

                    @IsTest
                    public static void UpdatePhoneTestNotValidEmail()
                    {
                        Demo.UpdatePhone('*****@*****.**', '555-1212');
                        List<Contact> contacts = [SELECT Id, Email, Phone FROM Contact WHERE Email = '*****@*****.**'];
                        System.AssertEquals(contacts.Size(), 0);
                    }
                }");
        }
示例#10
0
        public void DemoIsConverted()
        {
            var csharpCode =
                @"namespace ApexSharpDemo.ApexCode
                {
                    using Apex.ApexSharp;
                    using Apex.System;
                    using SObjects;

                    public class Demo
                    {
                        public Contact contact { get; set; }

                        public Demo()
                        {
                            contact = new Contact();
                        }

                        public PageReference Save()
                        {
                            try
                            {
                                Soql.Insert(contact);
                            }
                            catch (DmlException e)
                            {
                                ApexPages.AddMessages(e);
                            }

                            return null;
                        }

                        public static string UpdatePhone(string email, string newPhone)
                        {
                            List<Contact> contacts = GetContactByEMail(email);
                            if (contacts.IsEmpty())
                            {
                                return ""Not Found"";
                            }
                            else
                            {
                                contacts[0].Phone = newPhone;
                                UpdateContacts(contacts);
                                return ""Phone Number Updated"";
                            }
                        }

                        public static List<Contact> GetContactByEMail(string email)
                        {
                            List<Contact> contacts = Soql.Query<Contact>(""SELECT Id, Email, Phone FROM Contact WHERE Email = :email"", email);
                            return contacts;
                        }

                        public static List<Contact> GetContacts()
                        {
                            List<Contact> contacts = Soql.Query<Contact>(""SELECT Id, Email, Phone FROM Contact"");
                            return contacts;
                        }

                        public static void UpdateContacts(List<Contact> contacts)
                        {
                            Soql.Update(contacts);
                        }
                    }
                }";

            var apexClasses = CSharpToApexHelpers.ConvertToApex(csharpCode);

            Assert.AreEqual(1, apexClasses.Length);
            CompareLineByLine(apexClasses[0],
                              @"public class Demo
                {
                    public Contact contact { get; set; }

                    public Demo()
                    {
                        contact = new Contact();
                    }

                    public PageReference Save()
                    {
                        try
                        {
                            insert contact;
                        }
                        catch (DmlException e)
                        {
                            ApexPages.AddMessages(e);
                        }

                        return null;
                    }

                    public static String UpdatePhone(String email, String newPhone)
                    {
                        List<Contact> contacts = GetContactByEMail(email);
                        if (contacts.IsEmpty())
                        {
                            return 'Not Found';
                        }
                        else
                        {
                            contacts[0].Phone = newPhone;
                            UpdateContacts(contacts);
                            return 'Phone Number Updated';
                        }
                    }

                    public static List<Contact> GetContactByEMail(String email)
                    {
                        List<Contact> contacts = [SELECT Id, Email, Phone FROM Contact WHERE Email = :email];
                        return contacts;
                    }

                    public static List<Contact> GetContacts()
                    {
                        List<Contact> contacts = [SELECT Id, Email, Phone FROM Contact];
                        return contacts;
                    }

                    public static void UpdateContacts(List<Contact> contacts)
                    {
                        update contacts;
                    }
                }");
        }